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

2024-10-03 15:21:50 发布

您现在位置:Python中文网/ 问答频道 /正文

import nltk
from nltk import word_tokenizer

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

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

但是cat是一个名词,但它返回时作为连词。在


Tags: infromposimportoutputtagcattokenizer
2条回答

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

$ 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')]

请看How do I tag textfiles with hunpos in nltk?,hunpos总是比NLTK中的默认pos_tag做得更好。在

词性标注在句子上下文之外并不能很好地发挥作用。将一个完整的句子输入pos_tag,而不是一个单词,然后再试一次。如果它不起作用,使用nltk.download()获取一个更好的POS标记模型并运行它。在

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

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')]

(如您所见,您可能需要过滤这些内容。)

相关问题 更多 >