Quel est le meilleur moyen d'ajouter/supprimer des mots vides avec spacy? J'utilise token.is_stop
function et souhaite apporter des modifications personnalisées à l'ensemble. Je regardais la documentation mais je n'ai rien trouvé concernant les mots vides. Merci!
Vous pouvez les éditer avant de traiter votre texte comme ceci (voir cet article ):
>>> 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
Note: Cela semble fonctionner <= v1.8. Pour les versions plus récentes, voir d'autres réponses.
À l'aide de Spacy 2.0.11, vous pouvez mettre à jour son ensemble de mots vides à l'aide de l'un des éléments suivants:
Pour ajouter un seul mot d'arrêt:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.add("my_new_stopword")
Pour ajouter plusieurs mots vides à la fois:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words |= {"my_new_stopword1","my_new_stopword2",}
Pour supprimer un seul mot d'arrêt:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.remove("whatever")
Pour supprimer plusieurs mots vides à la fois:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words -= {"whatever", "whenever"}
Remarque: pour voir le jeu actuel de mots vides, utilisez:
print(nlp.Defaults.stop_words)
Pour la version 2.0, j'ai utilisé ceci:
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
Cela charge tous les mots vides dans un ensemble.
Vous pouvez modifier vos mots vides en STOP_WORDS
ou commencer par utiliser votre propre liste.
Pour 2.0, utilisez ce qui suit:
for Word in nlp.Defaults.stop_words:
Lex = nlp.vocab[Word]
Lex.is_stop = True