一般,词性标注都是结合分词进行的,很少单独做这项任务。对于工程场景,例如前面介绍过的jieba分词,一般有3种方法去标注词性。
第一种是比较粗暴的方法,就是每个词在进行词典统计词频的时候同时统计词性的频率,然后分词结束后直接查询这个词频率最高的那个词性,将其作为当前词的词性。这种方法最大的问题就是对于那些多词性的词非常不友好,基本上对于多词性的词,频率不是最高的那个词性就永远不会被标注到。这样的错误概率是比较高的,唯一的好处就是速度快,而且多词性词其实占比并不高,所以正确率也能接受。
第二种是使用n-gram,就是基于前面词的词性来限定当前词的词性,如2-gram和3-gram,就是基于前面一个词还是前面两个词的词性限定当前词的词性。
第三种就是HMM或CRF,类似于命名实体识别,针对词性也可以建立一个转移概率,基于前面一个词来选择当前词的词性,更准确地说就是基于全句整体的情况选择概率最大的那个链条组合作为每个词的词性。对于HMM,隐藏状态就是要标注的词性,词就是观测,词性到词就是发射概率,词性到词性的转移就是转移概率。词性到词的发射概率可以通过贝叶斯概率由词的每个词性的概率转换而来。
可以发现,词性标注其实也是一个序列标注任务,所以对于深度学习方法来说,前面用于分词的模型基本上都可以用来标注词性。比较常见的是结合分词模型作为另外一个目标输出,这里就不展开了。