web-dev-qa-db-ja.com

NLTKストップワードリスト

下にコードがあり、単語リストに停止単語リストを適用しようとしています。ただし、結果には、「a」や「the」など、このプロセスで削除されたと思われる単語がまだ表示されています。うまくいかなかったアイデアがあれば、すばらしいでしょう。

import nltk
from nltk.corpus import stopwords

Word_list = open("xxx.y.txt", "r")
filtered_words = [w for w in Word_list if not w in stopwords.words('english')]
print filtered_words
13
saph_top

注意点がいくつかあります。

  • リストに対してメンバーシップを何度もチェックする場合は、リストではなくセットを使用します。

  • stopwords.words('english')小文字ストップワードのリストを返します。ソースに大文字が含まれている可能性が高く、そのため一致しません。

  • ファイルを適切に読み取っていません。スペースで区切られた単語のリストではなく、ファイルオブジェクトをチェックしています。

すべてを一緒に入れて:

import nltk
from nltk.corpus import stopwords

Word_list = open("xxx.y.txt", "r")
stops = set(stopwords.words('english'))

for line in Word_list:
    for w in line.split():
        if w.lower() not in stops:
            print w
24
Hooked