从0基础入门NLP自然语言处理系列之命名实体识别(二)

CoNNL2003数据集详解
CoNLL-2003共享任务数据文件包含四列,并用一个空格分隔。每个单词都放在单独的行上,每个句子后面都有一个空行。每行的第一项是单词,第二项是词性(POS)标记,第三个是句法块标记,第四个是命名实体标记。块标签和命名实体标签的格式为I-TYPE,这意味着该单词在TYPE类型的短语内。仅当两个相同类型的短语立即紧随其后时,第二个短语的第一个单词才会带有标签B-TYPE以表明它开始一个新短语。带有标签O的单词不是短语的一部分。

CoNLL2003中, 实体被标注为四种类型:

LOC (location, 地名)

ORG (organisation, 组织机构名)

PER (person, 人名)

MISC (miscellaneous, 其他)

一条标注数据的组织形式如下:

[word][POS tag][chunk tag][NER tag]

比如:

U.N. NNP I-NP I-ORG
official NN I-NP O
Ekeus NNP I-NP I-PER
heads VBZ I-VP O
for IN I-PP O
Baghdad NNP I-NP I-LOC
. . O O

更加详细的关于标注数据的介绍, 见当时官方给出的一篇文章 http://www.aclweb.org/anthology/W03-0419

NER常见标注格式
IOB 标注法
IOB 标注法, 是 CoNLL 2003 采用的标注法, I 表示 inside, O 表示 Outside, B 表示 Begin。而标注的 label是 I-XXX 的, 表示这个字符, 在 XXX类命名实体的内部(inside)。B用于标记一个命名实体的开始。

比如:

Tom B-PER
hanks I-PER
is O
my O
name O

BIOES
这是在 IOB方法上,扩展出的一个更复杂,但更完备的标注方法。其中 B表示这个词处于一个实体的开始(Begin), I 表示内部(inside), O 表示外部(outside), E 表示这个词处于一个实体的结束为止, S 表示,这个词是自己就可以组成一个实体(Single)

BIOES 是目前最通用的命名实体标注方法。

BIO
BIO标注:将每个元素标注为“B-X”、“I-X”或者“O”。其中,“B-X”表示此元素所在的片段属于X类型并且此元素在此片段的开头,“I-X”表示此元素所在的片段属于X类型并且此元素在此片段的中间位置,“O”表示不属于任何类型。

  比如,我们将 X 表示为名词短语(Noun Phrase, NP),则BIO的三个标记为:

(1)B-NP:名词短语的开头

(2)I-NP:名词短语的中间

(3)O:不是名词短语

一个简单的标注例子如下
从0基础入门NLP自然语言处理系列之命名实体识别(二)_第1张图片

模型
目前业界比较常用的模型,是 LSTM + CRF。这这类模型中, NCRF++算法, 是目前最好的 NER 算法, 发表在 COLLING 2018上,论文见 https://arxiv.org/abs/1806.04470 。

整体架构如下所示
从0基础入门NLP自然语言处理系列之命名实体识别(二)_第2张图片

NCRF++是目前 很好的命名实体识别方案,效果如下:

从0基础入门NLP自然语言处理系列之命名实体识别(二)_第3张图片

NCRF++的速度表现也非常优异, 在使用全批处理的情况下, 在单个1080 显卡上, 训练速度能到到1000句话每秒,解码速度能达到2000句话每秒。

【数据集+模型实战训练】将下一章节《从0基础入门NLP自然语言处理系列之命名实体识别(三)》详细描述。

你可能感兴趣的:(AI,自然语言处理,tensorflow,pytorch,深度学习,nlp)