使用 Counter 计算列表中的元素

Counting elements of list with Counter

我是 python 和编程的新手,需要您的帮助。

我正在尝试使用 nltk.word_tokenizeCounter 计算文本中最常用的单词。当我得到文本所有元素的列表并且我想计算所有元素时,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如下:

word_counter = Counter(words)

Counter.update 获取一个可迭代对象并更新可迭代对象生成的元素的计数。在您的循环中,这将是单词的字母(记住字符串是可迭代的)。 如果你要使用 update,你可以这样做:

word_counter = Counter()
# ...
words = word_tokenize(test3)
word_counter.update(words)

但是没有必要将计数器的初始化和实际计数分开,除非你想对多个单词列表重复第二步。