【发布时间】:2014-03-21 02:05:10
【问题描述】:
假设我有以下字符串:
"hello&^uevfehello!`.<hellohow*howdhAreyou"
我将如何计算作为它的子字符串的英语单词的频率?在这种情况下,我想要一个结果,例如:
{'hello': 3, 'how': 2, 'are': 1, 'you': 1}
我搜索了与此类似的上一个问题,但我找不到任何有效的方法。一个接近的解决方案似乎是使用正则表达式,但它也不起作用。这可能是因为我实施错误,因为我不熟悉它的实际工作原理。
How to find the count of a word in a string? 这是最后一个答案
from collections import *
import re
Counter(re.findall(r"[\w']+", text.lower()))
我还尝试创建一个非常糟糕的函数,它遍历字符串中每个可能的连续字母排列(最多 8 个字母左右)。这样做的问题是
1) 它比应有的长得多并且
2) 它添加了额外的单词。例如:如果字符串中有“hello”,也会找到“hell”。
我对正则表达式不是很熟悉,这可能是正确的方法。
【问题讨论】:
-
要统计英文单词的出现频率,这还不够。你必须使用ntlk 之类的东西,即使那样也很难,因为你没有单词分隔符。
-
你有识别英文单词的函数或字典吗?
-
我有一个英文单词列表,我正在比较字符串的一部分,但它并没有太大帮助。
-
@Howcan 请给我们看看你的英文单词列表。