在python nltk中,我试图通过使用pos_标记获取单词的词性。但我得到了不准确的输出?告诉我更好的标签?

在python nltk中,我试图通过使用pos_标记获取单词的词性。但我得到了不准确的输出?告诉我更好的标签?,python,nltk,Python,Nltk,但是cat是一个名词,但它返回的形式是(连词)。词性标注在句子上下文之外并不能很好地工作。将整个句子输入到pos_标签,而不是单个单词,然后重试。如果它不起作用,请使用nltk.download()获取更好的词性标记模型并运行它 如果您需要一个单词的所有POS标签,请尝试WordNet: import nltk from nltk import word_tokenizer w="cat" word=nltk.word_tokenize(w) print nltk.pos_tag(word)

但是cat是一个名词,但它返回的形式是(连词)。

词性标注在句子上下文之外并不能很好地工作。将整个句子输入到
pos_标签
,而不是单个单词,然后重试。如果它不起作用,请使用
nltk.download()
获取更好的词性标记模型并运行它

如果您需要一个单词的所有POS标签,请尝试WordNet:

import nltk
from nltk import word_tokenizer

w="cat"
word=nltk.word_tokenize(w)
print nltk.pos_tag(word)

output:[('cat','IN')]

(如您所见,您可能需要对这些进行筛选。)

尝试使用预训练模型的hunpos,
en_wsj.model

In [9]: nltk.corpus.wordnet.synsets('cat')
Out[9]: 
[Synset('cat.n.01'),
 Synset('guy.n.01'),
 Synset('cat.n.03'),
 Synset('kat.n.01'),
 Synset("cat-o'-nine-tails.n.01"),
 Synset('caterpillar.n.02'),
 Synset('big_cat.n.01'),
 Synset('computerized_tomography.n.01'),
 Synset('cat.v.01'),
 Synset('vomit.v.01')]

看,hunpos总是比NLTK中默认的
pos_标记
好得多。

但我的要求是我只给出一个单词,我需要它的适当词类。Ya。我已经用过了。我得到了正确的输出。但是你能告诉我synsets()方法可以使用多少单词吗。您可以提供synsets()方法的工作原理吗?您可以在这里查看nltk中WordNet synsets的基础知识:
$ gzip -d en_wsj.model.gz 
$ wget https://hunpos.googlecode.com/files/en_wsj.model.gz
$ python
>>> from nltk.tag.hunpos import HunposTagger
>>> from nltk.tokenize import word_tokenize
>>> sent = "cat"
>>> ht = HunposTagger('en_wsj.model')
>>> print ht.tag(word_tokenize(sent))
[('cat', 'NN')]