Добавить/удалить стоп-слова с spacy

Каков наилучший способ добавить/удалить стоп-слова с spacy? Я использую функцию token.is_stop и хотел бы внести некоторые изменения в набор. Я смотрел на документацию, но не мог найти ничего относительно стоп-слов. Спасибо!

Ответ 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')