当前位置:   article > 正文

【3-3】实验——基于Bilstm+CRF的命名实体识别(待完成)

基于bilstm+crf的命名实体识别

一. 命名实体识别(NER)

命名实体识别(Named Entity Recognition,NER)是自然语言处理中的序列标注任务,是关系抽取、知识图谱、问答系统等其他诸多NLP任务的基础。是指从文本中识别出特定命名指向的词,比如人名、地名、组织机构名等。具体而言,input 自然语言序列 ,output 标签序列

命名实体识别的常用方法是BiLSTM-CRF和BERT-CRF

命名实体识别任务常常转化为序列标注问题,利用BIO、BIOES和BMES等常用的标注规则对经过分词的文本进行token标注。(序列标注里标记法有很多,包括BIO、BIOSE、IOB、BILOU、BMEWO、BMEWO+等,最常见的是 BIO 与 BIOES 这两种。)

在BIO和BIOSE中,Beginning 表示某个实体词的开始,Inside表示某个实体词的中间,Outside表示非实体词,End表示某个实体词的结尾,Single表示这个实体词仅包含当前这一个字。IOB与BIO字母对应的含义相同,其不同点是IOB中,标签B仅用于两个连续的同类型命名实体的边界区分。BILOU 等价于 BIOES,Last等同于End,Unit等同于Single。BMEWO 等价于 BIOES,Middle等同于Inside,Whole等同于Single。BMEWO+是在命名实体边界外的标注,即‘O plus‘。

例如:BIO三位标注法

B-begin:代表实体开头
I-inside:代表实体内部
O-outside:代表不属于任何实体

其后面接实体类型,如 ‘B-name’,‘I-company’。

浅析命名实体识别(NER)的三种序列标注方法_基于序列标注的命名实体识别-CSDN博客

理解BiLSTM与CRF

LSTM的全称是Long Short-Term Memory,它是RNN(Recurrent Neural Network)的一种。LSTM由于其设计的特点,非常适合用于对时序数据的建模,如文本数据。

BiLSTM是Bi-directional Long Short-Term Memory(双向长短期记忆网络)的缩写,是由前向LSTM后向LSTM组合而成。两者在自然语言处理任务中都常被用来建模上下文信息。

①数据定义:

 规定在数据集中有两类实体,人名和组织机构名称:

  • B-Person(人名的开始部分)
  • I-Person(人名的中间部分)
  • B-Organization(组织机构的开始部分)
  • I-Organization(组织机构的中间部分)
  • O(非实体信息)

②BiLSTM-CRF 模型

BiLSTM层的输出为每一个标签的预测分值,然后将BiLSTM的输出值作为CRF层的输入,最后结果就是每个词的标签。

模型组成:嵌入层>>>BiLSTM层>>>全连接层>>>CRF层

如上图所示,BiLSTM层的输出为每一个标签的预测分值。例如,对于单元w0,BiLSTM层输出的是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) and 0.05 (O). 这些分值将作为CRF的输入。

CRF层的作用

​虽然BiLSTM就可以完成标注工作,但是没有办法添加约束条件,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” is 非法的.实体标签的首个标签应该是 “B-“ ,而非 “I-“, 换句话说,有效的标签序列应该是“O B-label”。

参考:https://www.jianshu.com/p/97cb3b6db573

理解损失函数

根据模型进行理解

(CRF层中的损失函数包括两种类型的分数,第一个类型的分数是发射分数 P_{i,j}(也成称为状态分数)。这些状态分数来自BiLSTM层的输出。如上图黄色部分所示。第二个类型的分数是转移分数A_{i,j},为了使转移分数矩阵更具鲁棒性,我们加上START 和 END两类标签。START代表一个句子的开始(不是句子的第一个单词),END代表一个句子的结束。)

设标签(tag)个数为tag_size,则BiLSTM的输出维度为tag_size,表示每个词w_{i}映射到tag的发射概率值(feats)

设BiLSTM的输出矩阵为P,则 P_{i,j} 表示 词w_{i} 映射到 tag_i的非归一化概率。对于CRF来说,我们假定存在一个转移矩阵A,则A_{i,j}代表 tag_i 转移到 tag_j 的转移概率。

对于输入序列X对应的输出tag序列y,定义分数为:

​对上式进行softmax处理(Softmax函数就可以将多分类的输出值转换为范围在[0, 1]和为1的概率分布),因此对于一个词到每个tag的概率之和为1。

现在我们利用softmax函数为每一个正确的tag序列Y定义一个概率值(Y_{X}代表所有的tag序列,包括不可能出现的)

使用对数最大似然估计

所以Loss可以为:

二、代码实现

1、数据处理

2、模型构建

3、训练过程

4、评分结果

sahngshuBiLSTM-CRF实现中文命名实体识别(NER)_bilstm-crf 中文-CSDN博客上述具体实验代码可参考:Magic-NLPer/MachineLearning/CRF条件随机场/t1.ipynb at main · qingyujean/Magic-NLPer · GitHub

设备目前不行,先缓一下

参考:命名实体识别模型BERT-Bi-LSTM-CRF - 知乎 (zhihu.com)

一步步解读pytorch实现BiLSTM CRF代码_pytorch的bilstm-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/368042
推荐阅读
相关标签
  

闽ICP备14008679号