中药说明书实体识别挑战是天池大数据竞赛,主要任务是对药品的说明书中的实体进行提取和分类。这个比赛进度我一直在拖,再过十几天就结束了,感觉时间还是很紧张的。得抓紧抽时间把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
一等奖团队分享 | 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)序列标注任务。
常见的序列标注模型:HMM,MEMM,CRF,bi-LSTM……
因为bi-LSTM深度学习可以更好地抽取特征,CRF机器学习则需要好的特征来发挥效果,所以这两个模型常常结合起来使用。(Here)
序列标注的应用场景非常广泛,可以解决一系列对字符进行分类的问题,比如:分词、词性标注、命名实体识别、关系抽取……
序列标注一般可以分为两类:
- 原始标注(Raw labeling):每个元素都需要被标注为一个标签。
- 联合标注(Joint segmentation and labeling):多个连续分段被标注为同一个标签。
其中,通过使用BIO标注可以将联合标注转化为原始标注问题。
标注法:IO / BIO / BIEO…
- 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
将初步生成以下非零值的特征值:
token:什么是token?(Here)
- token (符号 / 元素):包括单词和标点、
- 广义的token就是一串有意义的符号
- tokenization (分词):我是中国人->[‘我’, ‘是’, ‘中国人’]
- 一个token就是分词后列表中的一个元素
下图是在序列标注的结果上加入了part of speech tags,syntactic base-phrase chunk tags,和一些shape的信息:
下图展示了一个基于特征的序列标注模型的运行方式。所有的箭头都是特征。在这里我们只考虑前后两个单词作为我们的上下文。这些所有的特征联合起来共同提供给classifier,并实现预测。
基于神经网络的NER算法
标准的基于神经网络的NER算法,使用bi-LSTM作为模型。
bi-LSTM是单独的一章,Speech and Language Processing - 3rd。
注意到最上层仍然有CRF层,这是因为CRF对特征的处理更好,从而形成更好的输出序列。