学习笔记(9)——命名实体识别(NER)

1 概述

1 命名实体

文本中有一些描述实体的词汇。比如人名、地名、组织机构名、股票基金、医学术语等,称为命名实体。具有以下共性:

  • 数量无穷。比如宇宙中的恒星命名、新生儿的命名不断出现新组合。
  • 构词灵活。比如中国工商银行,既可以称为工商银行,也可以简称工行。
  • 类别模糊。有一些地名本身就是机构名,比如”国家博物馆”。

2 命名实体识别

识别出句子中命名实体的边界与类别的任务称为命名实体识别。由于上述难点,命名实体识别也是一个统计为主、规则为辅的任务。

对于规则性较强的命名实体,比如网址、E-mail、IBSN、商品编号等,完全可以通过正则表达式处理,未匹配上的片段交给统计模型处理。

命名实体识别也可以转化为一个序列标注问题。具体做法是将命名实体识别附着到{B,M,E,S}标签,比如, 构成地名的单词标注为”B/ME/S- 地名”,以此类推。对于那些命名实体边界之外的单词,则统一标注为0 ( Outside )。具体实施时,HanLP做了一个简化,即所有非复合词的命名实体都标注为S,不再附着类别。这样标注集更精简,模型更小巧。

命名实体识别实际上可以看作分词与词性标注任务的集成: 命名实体的边界可以通过{B,M,E,S}确定,其类别可以通过 B-nt 等附加类别的标签来确定。

HanLP内部提供了语料库转换工序,用户无需关心,只需要传入 PKU 格式的语料库路径即可。

2 基于隐马尔可夫模型序列标注的命名实体识别

隐马尔可夫模型的详细介绍见: 学习笔记(4)——序列标注与隐马尔可夫模型

隐马尔可夫模型命名实体识别代码见(自动下载 PKU 语料库): hmm_ner.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch08/hmm_ner.py

运行代码后结果如下:

华北电力公司/nt 董事长/n 谭旭光/nr 和/c 秘书/n 胡花蕊/nr 来到/v 美国纽约/ns 现代/ntc 艺术/n 博物馆/n 参观/v

其中机构名”华北电力公司”、人名”谭旭光””胡花蕊”全部识别正确。但是地名”美国纽约现代艺术博物馆”则无法识别。有以下两个原因:

  • PKU 语料库中没有出现过这个样本。
  • 隐马尔可夫模型无法利用词性特征。
    对于第一个原因,只能额外标注一些语料。对于第二个原因可以通过切换到更强大的模型来解决。

3 基于感知机序列标注的命名实体识别

感知机模型介绍详见: 学习笔记(6)——感知机分类与序列标注

感知机模型词性标注代码见(自动下载 PKU 语料库): perceptron_ner.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch08/perceptron_ner.py

运行过程会有些慢,结果如下:

华北电力公司/nt 董事长/n 谭旭光/nr 和/c 秘书/n 胡花蕊/nr 来到/v [美国纽约/ns 现代/ntc 艺术/n 博物馆/n]/ns 参观/v

与隐马尔可夫模型相比,已经能够正确识别地名了。

4 基于条件随机场序列标注的命名实体识别

条件随机场模型介绍详细见: 学习笔记(7)——条件随机场(CRF)与序列标注

条件随机场模型词性标注代码见(自动下载 PKU 语料库): crf_ner.py

https://github.com/NLP-LOVE/IntroductionNLP/tree/master/code/ch08/crf_ner.py

运行时间会比较长,结果如下:

华北电力公司/nt 董事长/n 谭旭光/nr 和/c 秘书/n 胡花蕊/nr 来到/v [美国纽约/ns 现代/ntc 艺术/n 博物馆/n]/ns 参观/v

得到了相同的结果。

5 命名实体识别标准化评测

各个命名实体识别模块的准确率如何,并非只能通过几个句子主观感受。任何监督学习任务都有一套标准化评测方案,对于命名实体识别,按照惯例引入P、R 和 F1评测指标。

在1998年1月《人民日报》语料库上的标准化评测结果如下:

学习笔记(9)——命名实体识别(NER)
值得一提的是,准确率与评测策略、特征模板、语料库规模息息相关。通常而言,当语料库较小时,应当使用简单的特征模板,以防止模型过拟合;当语料库较大时,则建议使用更多特征,以期更高的准确率。当特征模板固定时,往往是语料库越大,准确率越高。

; 6 自定义领域命名实体识别

以上我们接触的都是通用领域上的语料库,所含的命名实体仅限于人名、地名、机构名等。假设我们想要识别专门领域中的命名实体,这时,我们就要自定义领域的语料库了。

1.标注领域命名实体识别语料库

首先我们需要收集一些文本, 作为标注语料库的原料,称为生语料。先找到文本中的识别目标,找到对应的生语料。在实际工程中,求由客户提出,则应当由该客户提供生语料。语料的量级越大越好,一般最低不少于数千个句子。

生语料准备就绪后,就可以开始标注了。对于命名实体识别语料库,若以词语和词性为特征的话,还需要标注分词边界和词性。不过我们不必从零开始标注,而可以在HanLP的标注基础上进行校正,这样工作量更小。

样本标注了数千个之后,生语料就被标注成了熟语料。

2.训练领域模型

选择上述三种算法或其他算法来进行模型训练,并评测识别效果。

Original: https://blog.csdn.net/strivequeen/article/details/110137328
Author: StriveQueen
Title: 学习笔记(9)——命名实体识别(NER)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/557618/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球