2016-07-06 9 views
0

私は単語プロジェクトの袋に取り組んでいます。停止単語のNLTKリストから停止単語を削除したいと思います。現時点では、私はこれをやっている:NLTKストップワードを使用する正しい方法は何ですか?

words.difference_update(set(stopwords.words("english")))

(単語がコーパス内のすべての単語を含む集合である)

しかし、私はstopwords.words("english")の内容を見ると、私は次のように言葉を参照してください。 "couldn"と "doesn"。私はこれらが "could not"や "does not"のような言葉のための単語接頭辞であると仮定し、そしておそらく他の言葉。

したがって、単語がストップワードリストに含まれているかどうかを確認する方法は、純粋な文字列の平等よりも洗練されていますが、わかりません。どんな助けもありがとうございます。

+0

コーパス全体[ここ](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip)をダウンロードして、余暇に読み書きすることもできます。この[質問](https://stackoverflow.com/questions/37701305/where-to-find-an-exhaustive-list-of-stop-words/37712453#37712453)では、NLTKリストの変更方法が説明されています。 – patrick

答えて

0

ストップワードを使用する正しい方法はありません。あなたが達成したい仕事に依存します。しかし、あなたが提供した情報に基づいて、NLTKは空白と句読点で文書を分割していると仮定しているようです。しかし、ストップワードリストには、coulddoesなどの単語も含まれていると推測できます。私のアプローチは、最初のコーパスのトークンを作成するために、NLTKのtokenizeパッケージを使用することで、その後、あなたのdifference_updateを実行します:

words = set(nltk.word_tokenize(document)) 

注トークン化のモデルに応じて、機能は['could',"n't"]に、このようなcouldn'tとして負の単語を分割することができること。したがって、ストップワードリストにn't文字列が含まれていない場合は、セットから削除する必要があります。

私が作っている別の前提は、コーパスには小文字の単語しか含まれていないということです。

希望に役立ちます!

+0

トークンが単語の後半であるかどうかを検出します(スペースとトークンで分割された単語を比較して比較する)。 – roundsquare

+0

申し訳ありませんが、私はあなたが意味するものを理解しました。 tokenizeを使用することにより、ストップワードリストが期待されるトークンが得られました。 – roundsquare

関連する問題