斯坦福NLP笔记45 —— Sequence Models for Named Entity Rec

Manning教授的英语很不容易听懂,果然是澳大利亚人,幸亏有字幕。

这一节讲的是分类器的训练,我们要做的第一步,自然是标记训练数据,把一句话中的实体标记出来。在标记的时候有两种标记方法,一种叫IO encoding,一种叫IOB encoding,看个例子就知道了。

Fred showed Sue Mengqui Huang's new painting.

标记的结果为:

Fred showed Sue Mengqui Huang   's new painting.

PER     O      PER   PER     PER    O   O     O

(PER代表人物 O代表其他)

这个标记结果扔给分类器的时候,会有一个问题:分类器会把Sue Mengqui Huang这个三个连续的PER token认作一个人名。所以IOB encoding中指明了一个实体的开始与延续,如下图所示,B-PER表示一个PER实体的开始,I-PER表示前一个PER实体的延续,这让我想起来i帧p帧b帧那些东西。

斯坦福NLP笔记45 —— Sequence Models for Named Entity Rec

表面上看起来后者更好,但实际上是这样吗?

假设实体一共有C种,那在IO encoding就会有C+1种标签,而在IOB encoding就会有2C+1种标签,教授说IOB encoding的运行速度因此会慢很多,这个地方我不太理解为何速度就慢了。

还有一个理由是,标签多的结果往往会导致更难分开,就像通信原理里面星座图的欧式距离越近误码率越高一样,挨得近了肯定更容易误判。

于是在实践中往往使用的IO encoding,据教授所说,即使你用IOB来标记,然后用“Fred showed Sue Mengqui Huang's new painting”这一句话来测试,分类器依然会把Sue Mengqui Huang当成一个人,那就跟IO encoding的结果一样的,但是运行速度会稍慢一些。


上面说的标记方法的问题,那我们应该用哪些特征来标记呢?

斯坦福NLP笔记45 —— Sequence Models for Named Entity Rec

第三项的意思是:某个词的label会受到他前后的词的label结果的影响,譬如人名,人名往往都不只一个词,譬如John Lennon这个实体,如果John被标记为Person,那其后的Lennon的label很有可能也是Person


substring特征

另一个重要的特征是子串,其实就是利用了单词的semantic meaning,这种方法显然在学科词中格外管用,如图

斯坦福NLP笔记45 —— Sequence Models for Named Entity Rec

第一个圆的意思是:包括了"oxa"的单词,100%是一个drug词汇,另外两个图同理。


word shape特征

word shape就是是否大小写、是否包含了数字,这样的意思,前面的教程有阐述。

这里做的事情就是把一个字符串映射成他的word shape特征,映射的规则是:

  1. 大写字母 --> X

  2. 小写字母 --> x

  3. 数字 --> d

  4. 只对字符串的前两个字符和后两个字符进行映射,因为他们更可能包含word shape信息,对于中间的字符,用一个表示全部就行,譬如第一行中,从rice到st的这些字符,只被映射为“-x”

你可能感兴趣的:(斯坦福NLP笔记45 —— Sequence Models for Named Entity Rec)