我是python和编程的新手,需要您的帮助。
我正在尝试使用nltk.word_tokenize
和Counter
来计算文本中最常见的单词。当我获得文本的所有元素的列表并且想要计算所有元素时,Counter
仅计算字母。
这是代码:
from nltk.tokenize import word_tokenize
word_counter = Counter()
test3 = "hello, hello, how are you? It's me - Boris"
words = word_tokenize(test3)
print(words)
['hello', ',', 'hello', ',', 'how', 'are', 'you', '?', 'It', "'s", 'me', '-', 'Boris']
for word in words:
word_counter.update(word)
print(word_counter)
输出:
Counter({'o': 5, 'e': 4, 'l': 4, 'h': 3, ',': 2, 'r': 2, 's': 2, 'w': 1, 'a': 1, 'y': 1, 'u': 1, '?': 1, 'I': 1, 't': 1, "'": 1, 'm': 1, '-': 1, 'B': 1, 'i': 1})
我该如何解决?我浏览了一些主题,他们用text.split()
解决了这个问题,但没有nltk
那么精确。
谢谢!
只需如下使用Counter
:
Counter
word_counter = Counter(words)
接受一个可迭代的并更新该可迭代产生的元素的计数。在循环中,这就是单词的字母(记住字符串是可迭代的)。如果要使用Counter.update
,则可以执行以下操作:
Counter.update
但是除非您要对多个单词列表重复第二步,否则无需将计数器的初始化与实际计数分开。