这更像是一个算法问题,但我觉得python有一个巧妙的方法来做到这一点。
假设我有一个字符串:
string = " this is how i do is it..is this is how we do it.. this is how everyone do it is"
现在我基本上想从字符串中提取最重要的块。 我如何决定“最重要的”基本上只是通过调查术语频率。 所以,如果我想要一个10个字符/单词(基本上是一个固定的窗口)长的块,那么基本上我正在尝试找到其条款具有最大术语频率分数的块。
所以在上面的例子中,可能“是”最重复的术语。 所以也许最好的块是
"is this is"
或者那样的东西。?? 我如何有效地在python中这样做(这是为了python社区)
有没有更好的方法来解决这个问题(这是针对算法社区的)
答案 0 :(得分:1)
这是一个尝试:
我给每个字母(包括空格)一个分数。分数等于元素在字符串中显示的次数。找到一个10元素窗口,其中元素得分的总和最大化。
string = " this is how i do is it..is this is how we do it.. this is how everyone do it is"
from collections import Counter
s_count = Counter(string)
def score_count(x):
return sum(s_count[ele] for ele in x)
most_imp = None
high_val = 0
n = 10
for i in xrange(0, len(string) - n):
temp_value = score_count(string[i: i + n])
if temp_value > high_val:
high_val = temp_value
most_imp = string[i : i + n]
结果:
>>> most_imp
' i do is i'
答案 1 :(得分:0)
这是为每个单词构建计数字典的方法。从这里获取具有最大计数总和的子字符串应该是直截了当的。
import re
tokens = re.findall(r'\w+', string)
counts = {}
for i in tokens:
counts[i]=counts.get(i,0)+1