命名体识别调研以及数据分析 - dylhhh/2020-LIC-RE- GitHub Wiki

一、序列标注

1、标注方法:BIO标注法、BIEO标注法

2、标注工具:百度LAC(接口)、doccano(人工标注)

 •重点调研了百度LAC

GN0Ce1.png • 缺点:(1)长地点会分开
(2)组织名、地名会识别错误 GN0H6H.png

二、BiLSTM+CRF实现中文命名实体识别

1、背景介绍

模型训练:

(1) 带标注的中文数据集进行处理(MSRA、WiKi 、LAC的数据集) (2) 输入到模型中进行训练。 (3)验证以及测试。

预测:
 将输不带标注的中文句子进行处理,使其可以输入到训练好的模型中进行预测标注,抽取出人名,地名以及机构名并输出(评估的数据集是北京市2018年法院裁决书文本)。

2、数据集存在的问题

(1)标点符号缺失:数据集中存在大量无标点符号情况的出现

GN0O0I.png

(2)存在单字实体:数据集中存在大量单字实体,而单字实体在命名实体识别中容易引起歧义

GNrelF.png

(3)标注缺失:数据集中存在大量标注缺失现象,存在部分实体标注不全和没有标注的现象

GNrZSU.png

(4)标注错误:数据集中存在大量标注错误现象,未对实体进行正确的标注

GNrEWT.png

3、数据清洗(Clean_data)

(1)def clean_kuohao(self)(去括号)
(2)def cut_corpus(self)(句子切割,并根据句子切割方式,设计两套处理数据的方案):
·按字符切割(按64个字符进行切割,针对标点符号缺失的数据集)
·按标点符号切割(针对标点符号齐全的数据)
(3)按字符切割的方案
·def to_paddle_tsv(self)(将数据处理成paddle可以读取的文件格式)
·def deal_paddle(self)(用正则匹配抽出LAC标注的实体和标注)
·def deal_corpus(self)(抽出语料中的实体和标注)
(4)def rule_set(self)(三条规则)
·去除单字实体:由于单字实体容易引发歧义。
·最长匹配原则:若语料中实体未标注而LAC结果中对应实体有标注,则对原始标注进行补全。若百度LAC对实体的标注长于原标注,则对照百度标注进行补全。
·优先级匹配原则:设定优先级 ORG > LOC > PER,当实体标注存在差异时,以优先级高的为准。例如:百度ORG标注的优先级要高于原始标注LOC、PER的优先级。百度LOC标注的优先级高于原始标注PER的优先级。
(5)def item_eval(self):计算出相应准确率、召回率、F测度值

GNsJNq.png GNsNCV.png

4、数据的预处理(data_process)

·read_corpus是把“char”和“label”放在不同的列表中,形成data;
·data的形状为[(['我',在'北','京'],['O','O','B-LOC','I-LOC’])
·vocab_build形成word2id.pkl文件,格式如下:
{'当': 1, '希': 2, '望': 3, '工': 4, '程': 5, …,'<UNK>': 4707, '<PAD>': 0}
·random_embedding形成初始化矩阵

5、模型结构

GNgfJI.png GNsU3T.png

6、加入bert作为预训练

结果对比: GNypan.png

三、格式转换

·2019年数据格式 GNrIhV.png ·2020年数据格式 GNr5t0.png ·转换后的2020年数据格式 GNr4kq.png

四、数据分析

1、统计训练数据中包含复杂O的dic

GNrf7n.png ·存在的问题:用两种方法统计,结果不同 ·按照第一种方法统计的dic,存在简单object GNrTpT.png GNsn9f.png

2、统计复杂O的subject与predicate

GNs1Bj.png

3、统计简单类型的subject与predicate

GNs3Hs.png GNsGEn.png

⚠️ **GitHub.com Fallback** ⚠️