4

これにより、テキスト内の単語の頻度がわかります。

 fullWords = re.findall(r'\w+', allText)

 d = defaultdict(int)

 for word in fullWords :
          d[word] += 1

 finalFreq = sorted(d.iteritems(), key = operator.itemgetter(1), reverse=True)

 self.response.out.write(finalFreq)

これはまた、「the」「an」「a」などの役に立たない言葉を私に与えます

私の質問は、これらの一般的な単語をすべて削除できる Python で利用可能なストップ ワード ライブラリはありますか? これをGoogle App Engineで実行したい

4

4 に答える 4

5

ストップワードのリストをさまざまな形式のファイルとしてダウンロードできます。たとえば、ここから-- Python が行う必要があるのは、ファイルを読み取り (これらはcsv形式が整っており、モジュールで簡単に読み取ることができcsvます)、セットを作成し、そのメンバーシップを使用することだけです。カウントから単語を除外するように設定します (おそらく、小文字化などの正規化を使用して)。

于 2010-07-04T03:25:20.887 に答える
3

あなたが持っているコードを少し変更することでこれを処理する簡単な方法があります(ジョンのコメントを反映するように編集されています):

stopWords = set(['a', 'an', 'the', ...])
fullWords = re.findall(r'\w+', allText)
d = defaultdict(int)
for word in fullWords:
    if word not in stopWords:
        d[word] += 1
finalFreq = sorted(d.iteritems(), key=lambda t: t[1], reverse=True)
self.response.out.write(finalFreq)

このアプローチでは、ソートされたリストを 2 つのステップで作成します。最初に、目的の「ストップ ワード」リスト (set効率のために に変換されています) 内の単語を除外し、次に残りのエントリをソートします。

于 2010-07-04T03:19:14.297 に答える
2

NLTK には、英語を含む多くの言語のコーパスとストップワードを含むパッケージがあることを知っています。詳細については、こちらを参照してください。NLTK には単語頻度カウンターもあり、使用を検討すべき自然言語処理用の優れたモジュールです。

于 2010-07-04T03:45:50.633 に答える
0
stopwords = set(['an', 'a', 'the']) # etc...
finalFreq = sorted((k,v) for k,v in d.iteritems() if k not in stopwords,
                      key = operator.itemgetter(1), reverse=True)

これにより、セット内のすべてのキーが除外されますstopwords

于 2010-07-04T03:19:05.860 に答える