Solución:
Con Spacy 2.0.11, puede actualizar su conjunto de palabras vacías mediante uno de los siguientes:
Para agregar una sola palabra irrelevante:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.add("my_new_stopword")
Para agregar varias palabras vacías a la vez:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words |= {"my_new_stopword1","my_new_stopword2",}
Para eliminar una sola palabra irrelevante:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words.remove("whatever")
Para eliminar varias palabras vacías a la vez:
import spacy
nlp = spacy.load("en")
nlp.Defaults.stop_words -= {"whatever", "whenever"}
Nota: Para ver el conjunto actual de palabras vacías, use:
print(nlp.Defaults.stop_words)
Actualización: se señaló en los comentarios que esta corrección solo afecta la ejecución actual. Para actualizar el modelo, puede utilizar los métodos nlp.to_disk("/path")
y nlp.from_disk("/path")
(descrito con más detalle en https://spacy.io/usage/saving-loading).
Puede editarlos antes de procesar su texto de esta manera (ver esta publicación):
>>> 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
Nota: Esto parece funcionar <= v1.8. Para versiones más recientes, vea otras respuestas.
Para la versión 2.0 utilicé esto:
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
Esto carga todas las palabras vacías en un conjunto.
Puede modificar sus palabras vacías para STOP_WORDS
o use su propia lista en primer lugar.