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帧那些东西。
表面上看起来后者更好,但实际上是这样吗?
假设实体一共有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的结果一样的,但是运行速度会稍慢一些。
上面说的标记方法的问题,那我们应该用哪些特征来标记呢?
第三项的意思是:某个词的label会受到他前后的词的label结果的影响,譬如人名,人名往往都不只一个词,譬如John Lennon这个实体,如果John被标记为Person,那其后的Lennon的label很有可能也是Person
substring特征
另一个重要的特征是子串,其实就是利用了单词的semantic meaning,这种方法显然在学科词中格外管用,如图
第一个圆的意思是:包括了"oxa"的单词,100%是一个drug词汇,另外两个图同理。
word shape特征
word shape就是是否大小写、是否包含了数字,这样的意思,前面的教程有阐述。
这里做的事情就是把一个字符串映射成他的word shape特征,映射的规则是:
大写字母 --> X
小写字母 --> x
数字 --> d
只对字符串的前两个字符和后两个字符进行映射,因为他们更可能包含word shape信息,对于中间的字符,用一个表示全部就行,譬如第一行中,从rice到st的这些字符,只被映射为“-x”