2016-07-06 14 views
0

Ich arbeite an einer Tasche von Wörtern Projekt und ich möchte Stoppwörter aus der NLTK-Liste der Stoppwörter entfernen. Zum Zeitpunkt, mache ich das:Was ist der richtige Weg NLTK Stoppwörter zu verwenden?

words.difference_update(set(stopwords.words("english")))

(Wörter, um einen Satz alle Wörter im Korpus enthält)

jedoch wenn ich mir den Inhalt stopwords.words("english") Ich sehe Worte wie: "couldn" und "doesn". Ich nehme an, das sind Wortpräfixe für Wörter wie "könnte nicht" und "tut nicht" und vielleicht andere Wörter.

Also nehme ich an, es gibt eine Möglichkeit zu überprüfen, ob ein Wort in der Stop-Wörter-Liste ist, die ausgeklügelter als reine String-Gleichheit ist, aber ich kann nicht herausfinden, was es ist. Jede Hilfe wird geschätzt.

+0

können Sie auch das ganze Korpus [hier] herunterladen (https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/stopwords.zip) und es in Ihrer Freizeit lesen/ändern. Diese [Frage] (https://stackoverflow.com/questions/37701305/where-to-find-an-exhaustiv-list-of-stopwords/37712453#37712453) geht in, wie man die NLTK-Liste außerdem ändert. – patrick

Antwort

0

Es gibt keinen richtigen Weg für die Verwendung von Stoppwörtern. Es hängt davon ab, welche Aufgabe Sie ausführen möchten. Basierend auf den von Ihnen bereitgestellten Informationen scheint NLTK jedoch davon auszugehen, dass Sie Ihr Dokument nach Leerzeichen und Satzzeichen aufteilen. Ich kann jedoch annehmen, dass die Stoppwortliste auch Wörter wie could und does enthält. Mein Ansatz wäre NLTK des tokenize Paket zu erstellen Token des Korpus zu verwenden, zuerst und dann läuft difference_update:

words = set(nltk.word_tokenize(document)) 

Beachten Sie, dass je nach tokenization Modell die Funktion wie couldn't in ['could',"n't"] negative Worte aufgeteilt konnte. Wenn die Stoppwortliste die Zeichenfolge n't nicht enthält, müssen Sie diese daher ebenfalls aus Ihrem Set entfernen.

Eine andere Annahme, die ich mache, ist, dass Ihr Korpus nur Kleinbuchstaben enthält.

Hoffe, dass hilft!

+0

Wie erkennen Sie, ob ein Token die zweite Hälfte eines Wortes ist (abgesehen davon, dass Sie die Wörter durchlaufen, die auf dem Raum und den Tokens aufgeteilt sind und vergleichen)? – roundsquare

+0

Entschuldigung, ich habe herausgefunden, was du meinst. Mit tokenize habe ich Token bekommen, die die Liste der Stoppwörter erwartet. – roundsquare

Verwandte Themen