Список остановок 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

Ответ 1

Несколько примечательных примечаний.

  • Если вы собираетесь проверять членство в списке снова и снова, я бы использовал набор вместо списка.

  • 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