Python nltk.pos_tag()是如何工作的?
Python nltk.pos_tag()是如何工作的?,python,nlp,nltk,Python,Nlp,Nltk,nltk.pos\u tag()是如何工作的?它是否涉及语料库的使用?我找到了一个源代码(nltk.tag-nltk3.0文档),它说 _POS_TAGGER = 'taggers/maxent_treebank_pos_tagger/english.pickle'. 加载_POS_TAGGER会生成一个对象: nltk.tag.sequential.ClassifierBasedPOSTagger ,似乎没有语料库的训练。当我在一个名词(例如,敏捷的棕色狐狸)之前串联使用几个形容词时,标记
nltk.pos\u tag()
是如何工作的?它是否涉及语料库的使用?我找到了一个源代码(nltk.tag
-nltk3.0文档),它说
_POS_TAGGER = 'taggers/maxent_treebank_pos_tagger/english.pickle'.
加载_POS_TAGGER会生成一个对象:
nltk.tag.sequential.ClassifierBasedPOSTagger
,似乎没有语料库的训练。当我在一个名词(例如,敏捷的棕色狐狸)之前串联使用几个形容词时,标记是不正确的。我想知道我是否可以通过使用更好的标记方法或使用更好的语料库进行训练来提高结果。有什么建议吗 标记器是一种经过培训并为您保存的机器学习标记器。没有一个标记器是完美的,但是如果你想要最佳的性能,你不应该尝试自己的。四处寻找可以免费下载和使用的最先进的标记器,例如斯坦福标记器,NLTK为其提供了一个接口 有关Stanford标记器的详细信息,请参见帮助(nltk.tag.Stanford)。您需要自己从下载斯坦福工具。根据,
pos_标签
使用NLTK目前推荐的pos标签,即自2018年起的Perceptrontager
对于Perceptrontager
和
要使用标记器,只需调用pos\u标记(令牌)
。这将调用Perceptrontager
的默认构造函数,该构造函数使用“预训练”模型。这是NLTK分发的pickle模型,文件位于:taggers/averaged\u perceptron\u tagger/averaged\u perceptron\u tagger.pickle
。这是在《华尔街日报》语料库上训练和测试的
或者,您可以实例化一个Perceptrontager
,并通过提供标记的示例自己训练其模型,例如:
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')]])
该文档链接到它,很好地描述了该理论
TL;博士:
perceptrontager
是一个贪婪的平均感知器标记器。这基本上意味着它有一个与特征相关联的权重字典,用于预测给定特征集的正确标记。在训练期间,贴标签者猜测标签,并根据猜测是否正确调整重量。“平均”是指权重调整在迭代次数上的平均值。是的,它涉及一个名为Penn Tree Bank的语料库,该语料库定义了语法和语义信息,一个语言树库