使用Python和NLP从列表中获取最常见的词性标记

3

我试图从一个列表中获取最常见的POS标签(前五个)。

pos_list = nltk.pos_tag(list)
#pos_list = [('caught', 'NN'), ('black', 'NN'), ('a', 'DT'), ('striped', 'JJ'), ('eel', 'NN')]
tag_fd = nltk.FreqDist(tag for (word, tag) in pos_list)

我也尝试通过循环遍历pos_list来计算标签的数量,但似乎有一种使用NLTK的方法可以实现。我还尝试将列表转换为字符串并尝试相同的方法,但这也不起作用。

str_of_list = " ".join(list)
tag_fd = nltk.FreqDist(tag for (word, tag) in str_of_list)

感谢任何帮助!
3个回答

5

我不确定是否有办法从NLTK中实现这个功能,但是collections.Counter肯定有一种方法:

import collections

pos_list = nltk.pos_tag(list)
pos_counts = collections.Counter((subl[1] for subl in pos_list))
print "the five most common tags are", pos_counts.most_common(5)

3

与@inspectorG4dget提出的方法等效的一种方法是使用nltk.FreqDist,而不使用collections,具体如下:

pos_list = nltk.pos_tag(list)
pos_counts = nltk.FreqDist(tag for (word, tag) in pos_list)
print "the five most common tags are", pos_counts.most_common(5)

1
import nltk
from collections import Counter
text='apple is a good company'
tagged = nltk.pos_tag(text.split())
print(Counter(i[1] for i in tagged).most_common(2))



output ->[('NN', 2), ('VBZ', 1)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接