python - nltk.pos_tag() 是如何工作的?

标签 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

,似乎没有来自语料库的训练。当我在名词前连续使用几个形容词时,标记是不正确的(例如 the quick brown fox)。我想知道我是否可以通过使用更好的标记方法或以某种方式使用更好的语料库进行训练来改善结果。有什么建议么?

最佳答案

根据 the source code , pos_tag 使用 NLTK 目前推荐的词性标注器,即 2018 年的 PerceptronTagger

Here is the documentation对于 PerceptronTaggerhere is the source code .

要使用标记器,您只需调用 pos_tag(tokens)。这将调用 PerceptronTagger 的默认构造函数,它使用“预训练”模型。这是一个NLTK分发的pickled模型,文件位于: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 是一个贪婪平均感知器标记器。这基本上意味着它有一个与特征相关的权重字典,它用来预测给定特征集的正确标签。在训练期间,标记器猜测一个标签并根据猜测是否正确调整权重。 “平均”表示权重调整是迭代次数的平均值。

关于python - nltk.pos_tag() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32016545/

相关文章:

python - 使用nltk进行通用同义词和词性处理

python - 如何计算 NLTK KMeans 聚类的准确度

python - 导入库问题 - "ImportError: No Module named ____"

python - 如何使用 MySQL 作为 django 项目的数据库?

python - 循环数据帧的更快方法?

python - 如何回溯 python 2.7 中的函数?

python - NLTK 性能

python - pandas DataFrame 拆分列并扩展行

nlp - 在 wit.ai 中设置响应(答案)

nlp - NLP从业者用什么特征来挑选英文名字?