スペイシーでストップワードを追加/削除する最良の方法は何ですか? token.is_stop
関数を使用していますが、セットにカスタム変更を加えたいと思います。私はドキュメントを見ていましたが、ストップワードに関しては何も見つかりませんでした。ありがとう!
次のようにテキストを処理する前に編集できます( this post を参照):
>>> 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
注:これは<= v1.8で動作するようです。新しいバージョンについては、他の回答をご覧ください。
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)
バージョン2.0の場合、これを使用しました。
from spacy.lang.en.stop_words import STOP_WORDS
print(STOP_WORDS) # <- set of Spacy's 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
に修正するか、そもそも独自のリストを使用できます。
2.0では、次を使用します。
for Word in nlp.Defaults.stop_words:
Lex = nlp.vocab[Word]
Lex.is_stop = True
これもストップワードを収集します:)
spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS