Каков наилучший способ добавить/удалить стоп-слова с spacy? Я использую функцию token.is_stop
и хотел бы внести некоторые изменения в набор. Я смотрел на документацию, но не мог найти ничего относительно стоп-слов. Спасибо!
Добавить/удалить стоп-слова с spacy
Ответ 1
Вы можете редактировать их перед обработкой своего текста следующим образом (см. этот пост):
>>> import spacy
>>> nlp = spacy.load("en")
>>> nlp.vocab["the"].is_stop = False
>>> nlp.vocab["definitelynotastopword"].is_stop = True
>>> sentence = nlp("the word is definitelynotastopword")
>>> sentence[0].is_stop
False
>>> sentence[3].is_stop
True
Примечание. Похоже, это работает & lt; = v1.8. Для более новых версий см. другие ответы.
Ответ 2
Используя Spacy 2.0.11, вы можете обновить его стоп-слова, используя одно из следующих:
Чтобы добавить одно стоп-слово:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.add("my_new_stopword")
Чтобы добавить несколько стоп-слов одновременно:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words |= {"my_new_stopword1","my_new_stopword2",}
Чтобы удалить одно стоп-слово:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.remove("whatever")
Чтобы удалить несколько стоп-слов одновременно:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words -= {"whatever", "whenever"}
Примечание. Чтобы увидеть текущий набор стоп-слов, используйте:
print(nlp.Defaults.stop_words)
Ответ 3
Для версии 2.0 я использовал это:
from spacy.lang.en.stop_words import STOP_WORDS
print(STOP_WORDS) # <- set of Spacy default stop words
STOP_WORDS.add("your_additional_stop_word_here")
for word in STOP_WORDS:
lexeme = nlp.vocab[word]
lexeme.is_stop = True
Загружает все стоп-слова в набор.
Вы можете изменить слова остановки на STOP_WORDS
или использовать свой собственный список в первую очередь.
Ответ 4
Для 2.0 используйте следующее:
for word in nlp.Defaults.stop_words:
lex = nlp.vocab[word]
lex.is_stop = True
Ответ 5
Это также собирает стоп-слова :)
spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS
Ответ 6
В последней версии следующие слова уберут слово из списка:
spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS
spacy_stopwords.remove('not')