webentwicklung-frage-antwort-db.com.de

Stoppwörter mit Leerzeichen hinzufügen/entfernen

Was ist der beste Weg, Stoppwörter mit Abstand hinzuzufügen oder zu entfernen? Ich verwende die token.is_stop -Funktion und möchte einige benutzerdefinierte Änderungen am Set vornehmen. Ich habe mir die Dokumentation angesehen, konnte aber nichts zu Stoppwörtern finden. Vielen Dank!

22
E.K.

Sie können sie vor der Bearbeitung Ihres Textes wie folgt bearbeiten (siehe diesen Beitrag ):

>>> 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

Anmerkung: Dies scheint zu funktionieren <= v1.8. Für neuere Versionen siehe andere Antworten.

19
dantiston

Mit Spacy 2.0.11 können Sie den Satz der Stoppwörter mit einer der folgenden Methoden aktualisieren:

So fügen Sie ein einzelnes Stoppwort hinzu:

import spacy    
nlp = spacy.load("en")
nlp.Defaults.stop_words.add("my_new_stopword")

So fügen Sie mehrere Stoppwörter gleichzeitig hinzu:

import spacy    
nlp = spacy.load("en")
nlp.Defaults.stop_words |= {"my_new_stopword1","my_new_stopword2",}

So entfernen Sie ein einzelnes Stoppwort:

import spacy    
nlp = spacy.load("en")
nlp.Defaults.stop_words.remove("whatever")

So entfernen Sie mehrere Stoppwörter auf einmal:

import spacy    
nlp = spacy.load("en")
nlp.Defaults.stop_words -= {"whatever", "whenever"}

Hinweis: Um die aktuellen Stoppwörter anzuzeigen, verwenden Sie:

print(nlp.Defaults.stop_words)
14
Romain

Für Version 2.0 habe ich Folgendes verwendet:

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

Dadurch werden alle Stoppwörter in einen Satz geladen.

Sie können Ihre Stoppwörter in STOP_WORDS ändern oder an erster Stelle Ihre eigene Liste verwenden.

10
petezurich

Für 2.0 verwenden Sie Folgendes:

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

1
harryhorn

Dies sammelt auch die Stoppwörter :)

spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS

0
SolitaryReaper