【发布时间】:2013-03-22 21:57:17
【问题描述】:
我目前正在使用 NLTK 的“nltk.pos_tag”进行一些词性标注。我想知道 NLTK 的标注器是否使用当前标记的单词之外的信息来确定单词的 POS?
如果没有,NLTK 是否有可以执行此操作的标记器?
提前感谢您提供任何信息!
【问题讨论】:
我目前正在使用 NLTK 的“nltk.pos_tag”进行一些词性标注。我想知道 NLTK 的标注器是否使用当前标记的单词之外的信息来确定单词的 POS?
如果没有,NLTK 是否有可以执行此操作的标记器?
提前感谢您提供任何信息!
【问题讨论】:
pos_tag 函数调用在_POS_TAGGER 加载pickle。这是一个可能在Penn Treebank POS 注释文本上训练的最大熵标注器。 MaxEnt 标注器用于确定词性的信息将基于训练中使用的特征集。这意味着,它在技术上只能使用单个单词的特征,但这不太可能,因为标注器会不准确(并且它不会充分利用使用机器学习来生成标注器)。考虑Chapter 5 in Natural Language Processing with Python中给出的一个例子,
>>> text = nltk.word_tokenize("They refuse to permit us to obtain the refuse permit")
>>> nltk.pos_tag(text)
[('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'),
('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]
由于“拒绝”和“允许”根据上下文分别被赋予不同的标签,我们可以肯定地说它确实使用了之前单词的特征(比如它们的词性标签)。
【讨论】: