Справочная информация:
1) У меня есть следующий код для удаления stopwords
с помощью пакета nltk:
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize
from nltk.tokenize import word_tokenize
your_string = "The dog does not bark at the tree when it sees a squirrel"
tokens = word_tokenize(your_string)
lower_tokens = [t.lower() for t in tokens]
filtered_words = [word for word in lower_tokens if word not in stopwords.words('english')]
2) Этот код работает для удаления stopwords
, например the
, как показано здесь:
['dog', 'barks', 'tree', 'sees', 'squirrel']
3) Я изменил stopwords
, чтобы сохранить слово not
со следующим кодом:
to_remove = ['not']
new_stopwords = set(stopwords.words('english')).difference(to_remove)
Проблема:
4) Но когда я использую new_stopwords
со следующим кодом:
your_string = "The dog does not bark at the tree when it sees a squirrel"
tokens = word_tokenize(your_string)
lower_tokens = [t.lower() for t in tokens]
filtered_words = [word for word in lower_tokens if word not in new_stopwords.words('english')]
5) Я получаю следующую ошибку, потому что new_stopwords
является set
:
AttributeError: 'set' object has no attribute 'words'
Вопрос:
6) Как использовать недавно определенный new_stopwords
для получения желаемого результата:
['dog', 'not','barks', 'tree', 'sees', 'squirrel']