我想在python中使用wordnet lemmatizer,并且我了解到默认的pos标记是NOUN,并且它不会为动词输出正确的引理,除非pos标记显式指定为verb。
我的问题是,为了准确地执行上面的引理,最好的射击是什么?
我用nltk.pos_tag
做了pos标记,我在把树形银行pos标记集成到wordnet兼容的pos标记中迷失了方向。请帮忙
from nltk.stem.wordnet import WordNetLemmatizer
lmtzr = WordNetLemmatizer()
tagged = nltk.pos_tag(tokens)
我得到了NN,JJ,VB,RB中的输出标签。如何将这些更改为与wordnet兼容的标记?
另外,我是否需要使用标记的语料库来训练nltk.pos_tag()
,或者我是否可以直接使用它对我的数据进行评估?
首先,您可以直接使用
nltk.pos_tag()
,而无需进行培训。 函数将从文件中加载一个预先训练的标记器。你可以看到文件名 使用nltk.tag._POS_TAGGER
:由于它是用Treebank语料库训练的,所以它也使用Treebank tag set。
以下函数将树库标记映射到WordNet部分语音名称:
然后,您可以将返回值与lemmatizer一起使用:
在将返回值传递给Lemmatizer之前,请检查它,因为空字符串将给出
KeyError
。您可以使用python默认dict创建一个映射,并利用这样一个事实:对于lemmatizer,默认标记是Noun。
在nltk.corpus.reader.wordnet的源代码中(http://www.nltk.org/_modules/nltk/corpus/reader/wordnet.html)
相关问题 更多 >
编程相关推荐