web-dev-qa-db-ja.com

スペイシーでストップワードを追加/削除

スペイシーでストップワードを追加/削除する最良の方法は何ですか? token.is_stop 関数を使用していますが、セットにカスタム変更を加えたいと思います。私はドキュメントを見ていましたが、ストップワードに関しては何も見つかりませんでした。ありがとう!

32
E.K.

次のようにテキストを処理する前に編集できます( 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で動作するようです。新しいバージョンについては、他の回答をご覧ください。

24
dantiston

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)
24
Romain

バージョン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に修正するか、そもそも独自のリストを使用できます。

11
petezurich

2.0では、次を使用します。

for Word in nlp.Defaults.stop_words:
    Lex = nlp.vocab[Word]
    Lex.is_stop = True
2
harryhorn

これもストップワードを収集します:)

spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS

0
SolitaryReaper