2014-03-13 13 views
8

In NLP ist das Entfernen von Stoppwörtern ein typischer Vorverarbeitungsschritt. Und es wird typischerweise in einer empirischen Weise durchgeführt, basierend auf dem, was wir denken, dass Stop-Words sein sollten.Können Stoppwörter automatisch gefunden werden?

Aber meiner Meinung nach sollten wir das Konzept der Stop-Wörter verallgemeinern. Und die Stoppwörter könnten für Korpora aus verschiedenen Domänen variieren. Ich frage mich, ob wir die Stoppwörter mathematisch definieren können, etwa anhand ihrer statistischen Eigenschaften. Und dann können wir automatisch Stoppwörter aus einem Korpus für eine bestimmte Domäne extrahieren.

Gibt es ähnliche Gedanken und Fortschritte dabei? Könnte jemand etwas Licht werfen?

Antwort

3

Normalerweise treten die Stoppwörter viel häufiger auf als die anderen semantischen Wörter ... Also habe ich beim Erstellen meiner Anwendung die Kombination aus beiden verwendet; eine feste Liste und die statistische Methode. Ich benutzte NLTK und es hatte bereits eine Liste mit einigen Stoppwörtern; also habe ich zuerst die Wörter entfernt, die in dieser Liste erscheinen, aber natürlich hat das nicht alle Stoppwörter entfernt ... Wie Sie bereits erwähnt haben, unterscheidet sich die Stoppwörter von Korpora zu Korpora. Dann bewertete ich die Häufigkeit jedes Wortes in den Korpora und entfernte die Wörter, die eine Häufigkeit oberhalb einer "bestimmten Grenze" haben. Diese bestimmte Grenze, die ich erwähne, war der Wert, den ich nach der Beobachtung der Häufigkeit aller Wörter festlegte ... daher hängt diese Grenze auch wieder von Korpora zu Korpora ... aber Sie können dies leicht berechnen, sobald Sie die Liste von allen sorgfältig beobachten die Wörter in der Reihenfolge ihrer Häufigkeit ... Diese statistische Methode stellt sicher, dass Sie die Stop-Wörter entfernen, die nicht in der Liste der gebräuchlichen Stop-Wörter erscheinen ... Danach habe ich die POS-Tagging-Funktion benutzt. .und entfernte die richtigen Substantive, die nach den ersten beiden Schritten noch existieren.

1

Stoppwörter sind allgegenwärtig. Sie werden in jedem (oder fast jedem) Dokument erscheinen. Eine gute Möglichkeit, Stoppwörter für Korpora aus verschiedenen Domänen mathematisch zu definieren, besteht darin, die inverse document frequency (IDF) eines Wortes zu berechnen.

IDF ist ein besserer Weg über die Frequenzberechnung, um Stoppwörter zu definieren, da einfache Frequenzberechnungen durch einige spezialisierte Dokumente, die oft ein spezielles Wort enthalten, negativ beeinflusst werden. Diese Methode wurde verwendet, um Stoppwörter in Fremdsprachen automatisch zu lernen (Ref. Machine Learning with SVM and Other Kernel Methods).

1

Eigentlich ist der gängige Ansatz zum Erstellen von Stoppwörtern, nur die gebräuchlichsten (in Dokumenten, d. H. Durch DF) Wörter zu verwenden. Erstellen Sie eine Liste der Top 100, 200, 1000 Wörter und Bewertung sie. Durchsuchen Sie einfach die Liste, bis Sie ein Wort finden, das Ihrer Meinung nach nicht ein Stoppwort sein sollte. Überlegen Sie dann, ob Sie es überspringen oder die Liste zu diesem Zeitpunkt unterbrechen möchten.

In vielen Datensätzen haben Sie domänenspezifische Stoppwörter. Wenn Sie beispielsweise StackOverflow verwenden, könnten "java" und "C#" durchaus Stoppwörter sein (und das wird eigentlich nicht viel schaden; insbesondere, wenn Sie die Tags immer noch verwenden). Andere domänenspezifische Stoppwörter könnten "code", "implement", "program" sein.

3

Ich bin kein Experte, aber hoffe meine Antwort macht Sinn.

Das statistische Extrahieren von Stoppwörtern aus einem Korpus klingt interessant! Ich würde in Betracht ziehen, die inverse Dokumenthäufigkeit zu berechnen, wie in den anderen Antworten erwähnt, abgesehen davon, dass reguläre Stoppwörter aus einer gemeinsamen Stoppwortliste wie die in NLTK verwendet werden. Stoppwörter variieren nicht nur von Korpora zu Korpora, sie können auch von Problem zu Problem variieren. Zum Beispiel habe ich in einem der Probleme, mit denen ich gearbeitet habe, eine Sammlung von Nachrichtenartikeln verwendet, in denen Sie viele zeitkritische und ortssensitive Wörter finden. Dies waren entscheidende Informationen, und statistische Wörter wie "heute", "hier" usw. hätten meine Ergebnisse stark beeinflusst.Denn Nachrichtenartikel sprechen nicht nur über ein bestimmtes Ereignis, sondern auch über ähnliche Ereignisse, die in der Vergangenheit oder an einem anderen Ort stattgefunden haben.

Kurz gesagt, müssen Sie das Problem in Betracht ziehen, nicht nur das Korpus.

Danke, Ramya

1

Ja, Stop-Wörter automatisch erkannt werden.

Wort Frequenzen als Ganzes

Eine Möglichkeit ist, auf Worthäufigkeiten als Ganzes zu betrachten.

Berechnen Sie die Häufigkeit aller Wörter in den kombinierten Texten. Sortieren Sie sie in absteigender Reihenfolge und entfernen Sie die oberen 20% oder so.

Sie können auch die unteren 5% entfernen. Dies sind keine Stoppwörter, aber für viel maschinelles Lernen sind sie belanglos. Vielleicht sogar Rechtschreibfehler.

Wörter pro „Dokument“

Eine andere Möglichkeit ist es, Wörter pro zu analysieren „Dokument“.

In einem Satz von Dokumenten können Stoppwörter erkannt werden, indem Wörter gefunden werden, die in einer großen Anzahl von Dokumenten vorhanden sind. Sie wären für das Kategorisieren oder Gruppieren von Dokumenten in diesem bestimmten Satz nutzlos.

z. Ein maschinelles Lernsystem, das wissenschaftliche Arbeiten kategorisiert, könnte nach der Analyse das Wort "abstrakt" als Stoppwort markieren, obwohl es nur einmal pro Dokument existiert. Aber wahrscheinlich in fast allen.

Das gleiche gilt für Wörter, die nur in einer sehr begrenzten Anzahl von Dokumenten gefunden werden. Sie sind wahrscheinlich falsch geschrieben oder so einzigartig, dass sie vielleicht nie wieder gesehen werden.

In diesem Fall ist es jedoch wichtig, dass die Verteilung zwischen Dokumentengruppen im Lernsatz gerade ist oder ein in eine große und eine kleine Gruppe unterteilter Satz alle signifikanten Wörter verliert (da sie in zu vielen Dokumenten vorhanden sind) oder zu wenig).

Eine weitere Möglichkeit, Probleme mit ungleich verteilten Gruppen im Trainingssatz zu vermeiden, besteht darin, nur Wörter zu entfernen, die in allen oder fast allen Dokumenten vorhanden sind. (Das heißt, unsere Lieblingsstoppwörter wie "a", "es", "das", "ein" usw. werden in allen englischen Texten vorkommen).

Zipf Gesetz

Als ich studierte Maschinelles Lernen und die Diskussion von Stop-Worte kam, wurde Zipf Gesetz erwähnt. Aber heute könnte ich Ihnen nicht sagen, wie oder warum, aber vielleicht ist es ein allgemeiner Grundsatz oder eine mathematische Grundlage, die Sie untersuchen möchten ...

Ich googelte "Zipf's Law automatische Stoppwort Erkennung" und eine schnelle Auswahl fand mich zwei PDF-Dateien, die von Interesse ...

sein kann
Verwandte Themen