2011-06-08 13 views
2

私は、会話の流れからキーワードを抽出して(そして最後にこれらの単語のタグクラウドを生成する)必要なアプリケーションに取り組んでいます。私は、次の手順で検討しています:nltkライブラリを使用してキーワードを抽出する

  1. トークン化
  2. 削除ストップワード(文字列のリストのリストとして記憶されている出力)の各生の会話を
  3. アップ
  4. 使用ステマー(ポーター語幹アルゴリズム)

ここまで、nltkは私が必要とするすべてのツールを提供しています。しかしその後、私は何とかこれらの言葉を「ランク付け」して最も重要な言葉を考え出す必要があります。誰もがnltkのツールがこれに使用されるかもしれないと私に示唆することができますか?

おかげ Nihit

+0

ランキング条項への有望なアプローチは、特に単語の雲を発生させるため、倹約言語モデルです。私の実装はhttps://github.com/larsmans/weighwords(WIP) –

答えて

3

私はそれが "重要" のあなたの定義に依存思います。 頻度について話している場合は、言葉(または茎)をキーとして辞書を作成してから、値として数えることができます。その後、カウントに基づいて辞書内のキーを並べ替えることができます。

ような何か(テストしていません):

from collections import defaultdict 

#Collect word statistics 
counts = defaultdict(int) 
for sent in stemmed_sentences: 
    for stem in sent: 
     counts[stem] += 1 

#This block deletes all words with count <3 
#They are not relevant and sorting will be way faster 
pairs = [(x,y) for x,y in counts.items() if y >= 3] 

#Sort (stem,count) pairs based on count 
sorted_stems = sorted(pairs, key = lambda x: x[1]) 
+0

を参照してください。ユーザーの調査によれば、tf- idfのもの。 +1。 –

+0

情報利得メトリクスと重要性テストについても調べてください。 nltk.metricsはその領域でいくつかの良い機能を提供します。 – Jacob

+0

多くの人に感謝しています...それをチェックします.. – Nick

関連する問題