我如何从句子中计算相同的单词?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何从句子中计算相同的单词?相关的知识,希望对你有一定的参考价值。

我想问如何从句子中计算相同的单词(在Python中。

例如,来自一个句子:“多么美好的一天。鸟儿在唱歌,孩子们在笑。”

我要提取的是:['what':1,'a':1,'wonderful':1,'dat':1,'birds':1,'are':2,'singing':1,'children':1,'笑':1]

我在这里做了:

sent = "What a wonderful day. Birds are singing, children are laughing."
b = set([word.lower() for word in a])
c = list(b)

如果此代码不适合该工作,请告诉我。谢谢。

答案

您可以使用counter并重新使用它

import re
from collections import Counter
remove_punctutation = re.findall("[A-Za-z]+",sent)
print(dict(Counter(remove_punctutation)))
#{'What': 1,'a': 1,'wonderful': 1,'day': 1,'Birds': 1,'are': 2,'singing': 1,'children': 1,'laughing': 1}

另一答案

collections.Counter可用于计算列表中任何内容的出现次数。这是一个好的开始。这意味着,但是我们首先应该将句子变成单词列表,并删除标点符号。

要列出单词,有一种称为.split()的方法将在空白处分割句子。要删除标点符号,方法.strip()是一个不错的选择。

正如您已经暗示的,我们还应该对案件进行规范化。为此,最好使用.casefold(),而不要使用.lower()。在某些本地人中,它们将是不同的。

全部导致代码看起来像:

import string
from collections import Counter

sent = "What a wonderful day. Birds are singing, children are laughing."
words = [word.strip(string.punctuation).casefold() for word in sent.split()]
freq = Counter(words)
另一答案

使用collections.Counter + string.strip去除标点符号:

from collections import Counter
import string

sent = "What a wonderful day. Birds are singing, children are laughing."

c = Counter([x.strip(string.punctuation) for x in sent.split()])
print(c)

# Counter({'are': 2, 'What': 1, 'a': 1, 'wonderful': 1, 'day': 1, 'Birds': 1, 'singing': 1, 'children': 1, 'laughing': 1})

如果不区分大小写,请在查找计数之前转换为小写,如下所示:

s = sent.lower().translate(str.maketrans('', '', string.punctuation))

以上是关于我如何从句子中计算相同的单词?的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何计算一个单词在句子中出现的次数?

如何在 UIAutomation 中从句子中取出特定的单词?

从Go中的给定字符串计算句子中的最大单词

如何存储句子中的单词

如何在mysql pdo中计算句子中的单词