思维之海

——在云端,寻找我的星匙。

中药说明书实体识别挑战纪要

中药说明书实体识别挑战是天池大数据竞赛,主要任务是对药品的说明书中的实体进行提取和分类。这个比赛进度我一直在拖,再过十几天就结束了,感觉时间还是很紧张的。得抓紧抽时间把baseline至少先写出来。

告一段落,确实没有什么时间参与。。倒是可以作为一个关于时间管理的思考。

References

Speech and Language Processing - 3rd / Information Extraction / Named Entity Recognition

比赛地址:中医药天池大数据竞赛——中药说明书实体识别挑战

天池实验室

(BERT+CRF) NER:https://tianchi.aliyun.com/forum/postDetail?postId=126542

命名实体识别 – Named-entity recognition | NER

基于深度学习的NER综述

【NLP-NER】命名实体识别中最常用的两种深度学习模型

BERT-BiLSTM-CRF-NER

一等奖团队分享 | 2019 CCF BDCI 《互联网金融新实体发现》

中文电子病例命名实体识别项目训练标注集

ChineseBLUE, the Chinese Biomedical Language Understanding Evaluation benchmark,跑跑试试

探知-命名实体识别(NER)

信息抽取

NER(Named Entity Recognition)技术是一种NLP中的信息抽取(Information Extration)技术。

信息抽取将非结构化的文本信息嵌入到结构化的数据结构(如,关系型数据库)之中。

信息抽取包括:

  • 命名实体识别(Named Entity Recognition,NER)
    • 找到并标记(label)分类所有的提及“命名实体”的文本
  • 关系抽取(Relation Extraction)
    • 找到并分类所有文本中实体间的语义关系
      • ex: child-of, employment, part-whole, and geospatial relations…
  • 事件抽取(Event Extraction)
    • 找到实体们参与的事件
    • Event coreference:确定同一事件的不同指代,并归类为同一事件
    • temporal expression:确定事件发生的时间表达,并normalize成准确的格式化时间
    • template filling:许多文本描述的是非常标准的结构化事件,因此变成“槽值填充”类似的东西了

命名实体

实体抽取通常作为作为信息抽取的第一步。在此基础上可以实现其它很多NLP任务,如情感分析、知识问答、信息结构化……

命名实体:任何指代着一个适定名称的事物。(例:某个人物、地点、组织……)

适定名称就是确定无歧义的指代名。

这个术语也常常扩展到非实体的领域,如:日期、事件等temporal expression,价格等numerical expression。下图是一个NER的示例:

上图中有13个命名实体,包括5个organization,4个location,2个time,1个person和1个money。

命名实体类

下图给出了常见的命名实体种类,当然这种形式的分类是面向通用任务的。中医药比赛或者说自定义的人物场景,可以根据需求来设计更细致、面向领域的分类。比如,蛋白质分类、基因、商品、艺术品、药品……

命名实体识别

命名实体识别:寻找包含适定名称的文本段,并分类对应实体。

识别任务的难度部分在于分词(准确地界定实体边界),另一部分在于分类时的歧义(Type Ambiguity)。

序列标注 Sequence Labeling

NER的基本算法是(word by word)序列标注任务。

常见的序列标注模型:HMMMEMMCRFbi-LSTM……

概率图模型体系:HMM、MEMM、CRF

谈谈序列标注三大模型HMM、MEMM、CRF

因为bi-LSTM深度学习可以更好地抽取特征,CRF机器学习则需要好的特征来发挥效果,所以这两个模型常常结合起来使用。(Here

NLP | 序列标注 总结

序列标注的应用场景非常广泛,可以解决一系列对字符进行分类的问题,比如:分词、词性标注、命名实体识别、关系抽取……

序列标注一般可以分为两类:

  • 原始标注(Raw labeling):每个元素都需要被标注为一个标签。
  • 联合标注(Joint segmentation and labeling):多个连续分段被标注为同一个标签。

其中,通过使用BIO标注可以将联合标注转化为原始标注问题。

标注法:IO / BIO / BIEO…

序列标注方法BIO、BIOSE、IOB、BILOU、BMEWO、BMEWO+的异同

  • B stands for ‘beginning‘ (signifies beginning of an NE)
  • I stands for ‘inside‘ (signifies that the word is inside an NE)
  • O stands for ‘outside‘ (signifies that the word is just a regular word outside of an NE)
  • E stands for ‘end‘ (signifies that the word is the end of an NE)
  • S stands for ‘singleton‘(signifies that the single word is an NE )

各种序列标注法的差异大多集中于对边界和特殊情况的处理,但是总的来说 IO 标注是最基础的序列标注单元。

如下面的一个例子:

使用了 IO 和 IOB(-2) 即 IBO 方法给出序列标注的结果:

可以看到 IOB(-2) 即 IBO 在命名实体相邻的情况下会产生区分效果,但是这种情况在英文场景中较少出现。

一般来说在不追求极致性能的场景下,BIO标注方法的效果就足够好了。当然如果有精力,测试一下BIOES的效果也是可以的。

基于特征的NER算法

基于特征的NER算法首先要做的事就是提取特征。然后用这些特征来train一个MEMM或者CRF之类的序列模型。

下面具体介绍一种用于英文的特征:

word shape:文本的一种抽象的模式表示方法,将小写字母表示为x,大写字母表示为X,数字表示为d,并保留标点。例如DC10-30a会被映成XXdd-ddx。如果考虑压缩映射,把连续的同类字符合并,那么DC10-30a会被映成Xd-dx。这种特征,在基于特征的(English new text)NER任务中被证明非常成功。Shape features在诸如蛋白质名、基因等规范命名领域也很重要。

加上其它的特征,一个named entity token例如L'Occitane将初步生成以下非零值的特征值:

Occitane生成非零值的特征值

token:什么是token?(Here

  • token (符号 / 元素):包括单词和标点、
    • 广义的token就是一串有意义的符号
  • tokenization (分词):我是中国人->[‘我’, ‘是’, ‘中国人’]
    • 一个token就是分词后列表中的一个元素

下图是在序列标注的结果上加入了part of speech tagssyntactic base-phrase chunk tags,和一些shape的信息:

下图展示了一个基于特征的序列标注模型的运行方式。所有的箭头都是特征。在这里我们只考虑前后两个单词作为我们的上下文。这些所有的特征联合起来共同提供给classifier,并实现预测。

基于神经网络的NER算法

标准的基于神经网络的NER算法,使用bi-LSTM作为模型。

bi-LSTM是单独的一章,Speech and Language Processing - 3rd

注意到最上层仍然有CRF层,这是因为CRF对特征的处理更好,从而形成更好的输出序列。

基于规则的NER算法

CRF模型

bi-LSTM模型

BERT模型

Baseline

数据增强