### **基于中文的知识抽取,BaseLine:Bi-LSTM+CRF**
**Overview**
基于字的BiLSTM-CRF,使用Bakeoff-3评测中所采用的的BIO标注集,即B-PER、I-PER代表人名首字、人名非首字,B-LOC、I-LOC代表地名首字、地名非首字,B-ORG、I-ORG代表组织机构名首字、组织机构名非首字,O代表该字不属于命名实体的一部分,也可以采用更复杂的BIOSE标注集。
以句子为单位,将一个含有 n 个字的句子(字的序列)记作
`x=(x1,x2,...,xn)`
其中 xi 表示句子的第 i 个字在字典中的id,进而可以得到每个字的one-hot向量,维数是字典大小。
**模型**
![Bi-LSTM标签预测原理图](https://github.com/lvjianxin/Knowledge-extraction/blob/master/img-folder/webp.webp.jpg)
第一层:look-up 层,利用预训练或随机初始化的embedding矩阵将句子中的每个字 xi 由one-hot向量映射为低维稠密的字向量(character embedding)xi∈Rd ,d 是embedding的维度。在输入下一层之前,设置dropout以缓解过拟合。
第二层:双向LSTM层,自动提取句子特征。将一个句子的各个字的char embedding序列 (x1,x2,...,xn) 作为双向LSTM各个时间步的输入,再将正向LSTM输出的隐状态序列 (h1⟶,h2⟶,...,hn⟶) 与反向LSTM的 (h1⟵,h2⟵,...,hn⟵) 在各个位置输出的隐状态进行按位置拼接 ht=[ht⟶;ht⟵]∈Rm,得到完整的隐状态序列。
第三层:是CRF层,进行句子级的序列标注。CRF层的参数是一个 (k+2)×(k+2) 的矩阵 A ,Aij 表示的是从第 i 个标签到第 j个标签的转移得分,进而在为一个位置进行标注的时候可以利用此前已经标注过的标签,之所以要加2是因为要为句子首部添加一个起始状态以及为句子尾部添加一个终止状态。
**CRF作用**
由于BiLSTM的输出为单元的每一个标签分值,我们可以挑选分值最高的一个作为该单元的标签。例如,对于单元w0,“B-Person”有最高分值—— 1.5,因此我们可以挑选“B-Person”作为w0的预测标签。同理,我们可以得到w1——“I-Person”,w2—— “O” ,w3——“B-Organization”,w4——“O”。
虽然我们可以得到句子x中每个单元的正确标签,但是我们不能保证标签每次都是预测正确的。例如,图2.中的例子,标签序列是“I-Organization I-Person” and “B-Organization I-Person”,很显然这是错误的。
![去除CRF层的BiLSTM模型](https://github.com/lvjianxin/Knowledge-extraction/blob/master/img-folder/2.png)
在神经网络的输出层接入CRF层(重点是利用标签转移概率)来做句子级别的标签预测,使得标注过程不再是对各个token独立分类。biLSTM计算出的是每个词的各标签概率,而CRF层引入序列的转移概率,最终计算出loss反馈回网络。
**CRF层能从训练数据中获得约束性的规则**
CRF层可以为最后预测的标签添加一些约束来保证预测的标签是合法的。在训练数据训练过程中,这些约束可以通过CRF层自动学习到。
这些约束可以是:
I:句子中第一个词总是以标签“B-“ 或 “O”开始,而不是“I-”
II:标签“B-label1 I-label2 I-label3 I-…”,label1, label2, label3应该属于同一类实体。例如,“B-Person I-Person” 是合法的序列, 但是“B-Person I-Organization” 是非法标签序列.
III:标签序列“O I-label” 是非法的.实体标签的首个标签应该是 “B-“ ,而非 “I-“, 换句话说,有效的标签序列应该是“O B-label”。
有了这些约束,标签序列预测中非法序列出现的概率将会大大降低。
没有合适的资源?快使用搜索试试~ 我知道了~
基于中文的知识抽取,BaseLine:Bi-LSTM+CRF.zip
共21个文件
py:5个
xml:4个
txt:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 133 浏览量
2024-05-22
17:03:27
上传
评论
收藏 7.38MB ZIP 举报
温馨提示
基于中文的知识抽取,BaseLine:Bi-LSTM+CRFLSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)和记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构和主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入和上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入和上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
资源推荐
资源详情
资源评论
收起资源包目录
基于中文的知识抽取,BaseLine:Bi-LSTM+CRF.zip (21个子文件)
content
utils.py 3KB
eval.py 778B
img-folder
webp.webp.jpg 61KB
2.png 102KB
data_path
test_data 1.06MB
word2id.pkl 60KB
train_data 13.26MB
original
test1.txt 514KB
link.txt 49B
testright1.txt 564KB
train1.txt 9.99MB
main.py 6KB
model.py 13KB
.idea
vcs.xml 243B
misc.xml 288B
Knowledge-extraction.iml 453B
modules.xml 292B
encodings.xml 135B
conlleval_rev.pl 12KB
data.py 4KB
README.md 4KB
共 21 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3828
- 资源: 5775
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功