HanLP词性分析——隐马尔可夫隐模型实现

词性分析

所谓词性分析,是指给已经分词的句子的每一个单词,附上他们的词性。从这个角度来说,词性分析的问题是一个序列标注的问题。

数据集与标注集

若要使用统计分析的方法,实现词性分析。则必须有一个已经分好词,并且打好词性的数据集。
问题来了:由于众人对词性的说法各不相同。国内有国内的标准,国外有国外的说法。更何况如何进行标注,在学术界中至今没有准确的说法。所以,若是用的数据集不同,则训练出来的模型也是不同的。模型所采用的标注集也是不尽相同的。

《人民日报》与 PKU 标注集

一个开源的汉语语料库 SIGHAN05 就包括了《人民日报》。但该数据集没有标注词性。HanLP 接受的语料库和预测的结构化句子都是 PKU 格式。

国家语委语料库与 863 标注集

《诛仙》语料库与CTB标注集

这个语料库是从网络小说中收集、标注的。很适合用于网络文体的问题中。

实现

用 PKU 数据集实现:

from pyhanlp import *
corpus_path = 'E:\\Anaconda3\\lib\\site-packages\\pyhanlp\\static\\data\\test\\pku98\\199801.txt'    #语料库路径

HMMPOSTagger = JClass('com.hankcs.hanlp.model.hmm.HMMPOSTagger')
FirstOrderHiddenMarkovModel = JClass('com.hankcs.hanlp.model.hmm.FirstOrderHiddenMarkovModel')
SecondOrderHiddenMarkovModel = JClass('com.hankcs.hanlp.model.hmm.SecondOrderHiddenMarkovModel')

tagger_1 = HMMPOSTagger(FirstOrderHiddenMarkovModel())  #创建词性标注模型(一阶隐马尔科夫模型)
tagger_2 = HMMPOSTagger(SecondOrderHiddenMarkovModel())  #创建词性标注模型(二阶隐马尔科夫模型)
tagger_1.train(corpus_path)    #训练模型
tagger_2.train(corpus_path)    #训练模型


print(', '.join(tagger_1.tag("他", "的", "希望", "是", "希望", "上学")))

猜你喜欢

转载自blog.csdn.net/weixin_42141390/article/details/105906573
今日推荐