0

これはアルゴリズムの質問に似ていますが、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コミュニティ用です)

これにアプローチするためのより良い方法はありますか(これはアルゴリズムコミュニティ向けです)

4

2 に答える 2

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'
于 2012-04-24T18:47:36.877 に答える
0

これは、各単語のカウント辞書を作成する方法です。ここから、カウントの合計が最大になるサブストリングを取得するのは簡単です。

import re
tokens = re.findall(r'\w+', string)
counts = {}
for i in tokens:
    counts[i]=counts.get(i,0)+1
于 2012-04-24T18:34:52.810 に答える