nltk.pos_tag()如何工作?

时间:2015-08-14 18:28:05

标签: python nlp nltk

nltk.pos_tag()如何运作?它是否涉及任何语料库使用?我找到了一个源代码(nltk.tag - NLTK 3.0文档),它说

_POS_TAGGER = 'taggers/maxent_treebank_pos_tagger/english.pickle'.

加载_POS_TAGGER会给出一个对象:

nltk.tag.sequential.ClassifierBasedPOSTagger

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

3 个答案:

答案 0 :(得分:10)

根据the source codepos_tag使用NLTK目前推荐的POS标记,截至2018年为PerceptronTagger

PerceptronTaggerHere is the documentation

here is the source code

要使用标记器,只需拨打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')]])

文档链接到this blog post,它可以很好地描述理论。

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

是的,它涉及名为Penn Tree Bank的语料库,它定义了句法和语义信息,是一棵语言树。