【问题标题】:Counting elements of list with Counter用 Counter 计算列表的元素
【发布时间】:2019-09-30 15:18:34
【问题描述】:

我是 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(words) ?

标签: python nltk counter


【解决方案1】:

只需使用Counter,如下:

word_counter = Counter(words)

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2023-02-25
    • 2017-04-03
    • 2014-05-14
    相关资源
    最近更新 更多