nltk.pos_tag()如何工作?

Nab*_*ang 8 python nlp nltk

nltk.pos_tag()工作怎么样?它是否涉及任何语料库使用?我发现了一个源代码(nltk.tag- NLTK 3.0文档)

_POS_TAGGER = 'taggers/maxent_treebank_pos_tagger/english.pickle'.
Run Code Online (Sandbox Code Playgroud)

加载_POS_TAGGER会给出一个对象:

nltk.tag.sequential.ClassifierBasedPOSTagger
Run Code Online (Sandbox Code Playgroud)

,似乎没有语料库的训练.当我在名词之前使用一些串联形容词(例如快速棕色狐狸)时,标记是不正确的.我想知道我是否可以通过使用更好的标记方法或以更好的语料库进行某种程度的训练来改善结果.有什么建议?

use*_*786 11

根据源代码,pos_tag使用NLTK目前推荐的POS标签,PerceptronTagger截至2018年.

这里是文档PerceptronTagger这里的源代码.

要使用标记器,您只需拨打电话即可pos_tag(tokens).这将调用PerceptronTagger默认构造函数,它使用"预训练"模型.这是NLTK分发的腌制模型,文件位于:taggers/averaged_perceptron_tagger/averaged_perceptron_tagger.pickle.这是在华尔街日报语料库上进行培训和测试的.

或者,您可以PerceptronTagger通过提供标记示例来自己实例化并训练其模型,例如:

tagger = PerceptronTagger(load=False) # don't load existing model
tagger.train([[('today','NN'),('is','VBZ'),('good','JJ'),('day','NN')],
[('yes','NNS'),('it','PRP'),('beautiful','JJ')]])
Run Code Online (Sandbox Code Playgroud)

该文档链接到此博客文章,该文章很好地描述了该理论.

TL; DR:PerceptronTagger是一个贪婪的平均感知器标记器.这基本上意味着它具有与特征相关联的权重字典,它用于预测给定特征集的正确标记.在训练期间,标记器猜测标记并根据猜测是否正确来调整权重."平均值"表示权重调整在迭代次数上取平均值.


ale*_*xis 6

标记器是一个机器学习标记器,已经过训练并为您保存.没有标记器是完美的,但如果你想要最佳性能,你不应该尝试自己动手.查看可免费下载和使用的最先进的标记器,例如Stanford标记器,NLTK为其提供接口.

特别是斯坦福标记,请参阅help(nltk.tag.stanford).您需要自己从http://nlp.stanford.edu/software/下载斯坦福工具.