So erstellen Sie eine gute Liste von Stoppwörtern

9

Ich suche nach Hinweisen, wie man eine Liste von Stoppwörtern kuratiert. Kennt / kann jemand eine gute Methode empfehlen, um Stoppwortlisten zur Vorverarbeitung und Filterung aus dem Datensatz selbst zu extrahieren?

Die Daten:

Eine große Menge menschlicher Texteingaben mit variabler Länge (Suchbegriffe und ganze Sätze (bis zu 200 Zeichen)) über mehrere Jahre. Der Text enthält viel Spam (wie maschinelle Eingaben von Bots, einzelne Wörter, dumme Suchen, Produktsuchen ...) und nur wenige Prozent davon scheinen nützlich zu sein. Mir wurde klar, dass manchmal (nur sehr selten) Leute meine Seite durchsuchen, indem sie wirklich coole Fragen stellen. Diese Fragen sind so cool, dass ich denke, es lohnt sich, sie genauer zu betrachten, um zu sehen, wie Menschen im Laufe der Zeit suchen und welche Themen die Menschen an der Nutzung meiner Website interessiert haben.

Mein Problem:

ist, dass ich wirklich mit der Vorverarbeitung zu kämpfen habe (dh den Spam fallen lassen). Ich habe bereits eine Stoppwortliste aus dem Internet (NLTK usw.) ausprobiert, aber diese helfen meinen Anforderungen in Bezug auf diesen Datensatz nicht wirklich.

Vielen Dank für Ihre Ideen und Diskussionen!

PlagTag
quelle
1
Das Python NLTK-Modul bietet Stoppwortdaten und wenn es Ihnen nicht geholfen hat, mehr Informationen zu Ihrem Datensatz bereitzustellen. Warum war es in Ihrem Fall nicht hilfreich?
Kasra Manshaei
@kasramsh: Als ich nach diesen SWs gefiltert habe, hatte ich den Eindruck, dass dies den Spam nicht signifikant herausfiltert. Ich denke, der Grund dafür ist, dass diese Liste auf natürlichen Texten erstellt wird (nicht sicher) und daher nicht für Suchwörter und Site-Abfragen verwendet werden kann. Wie beim Clustering (basierend auf der Ähnlichkeit der Suchzeichenfolgen) hatte ich den Eindruck, dass der Spam auf Entropieebene einen starken Effekt hat und dadurch das Endergebnis verwechselt: - /.
PlagTag
1
Ich denke, @PlagTag versteht nicht, was ist stop words. Stop-wrods ist eine Liste der am häufigsten verwendeten Wörter in einer Sprache, zum Beispiel I, the, aund so weiter. Sie werden diese Wörter einfach aus Ihrem Text entfernen, bevor Sie mit dem Trainieren Ihres Algorithmus beginnen, um festzustellen, welcher Text Spam ist oder nicht. Es hat Ihnen nicht geholfen zu erkennen, welcher Text Spam ist oder nicht, es kann Ihren Lernalgorithmus verbessern.
itdxer
@itdxer, danke für deinen Kommentar. Ich habe den Begriff Stoppwörter hier in einem breiteren Umfang verwendet (da ich dachte, dass es für diesen Zweck in Ordnung sein könnte). Vielen Dank für die Klärung des Problems ;-)
PlagTag

Antworten:

5

Ein Ansatz wäre die Verwendung des tf-idf- Scores. Die Wörter, die in den meisten Abfragen vorkommen, helfen wenig dabei, die guten Suchanfragen von den schlechten zu unterscheiden. Aber diejenigen, die sehr häufig (hohe tf oder Termfrequenz) in nur wenigen Abfragen (hohe idf oder inverse Dokumenthäufigkeit) auftreten, sind wahrscheinlich wichtiger für die Unterscheidung der guten von den schlechten Abfragen.

Shagun Sodhani
quelle
Vielen Dank, ich werde dieses ausprobieren und hier berichten!
PlagTag
Tatsächlich
2

Das hängt von Ihrer Bewerbung ab.

Versuchen Sie bei der Themenmodellierung zuerst die Standardstoppwörter. Wenn einige Wörter in vielen Themen prominent vorkommen (beachten Sie meine eher vage Formulierung), sind sie gute Kandidaten für zusätzliche Stoppwörter.

Beispielsweise sind in einem Korpus mit Texten, die Abbildungen und Tabellenmaterial enthalten, die Wörter "fig", "figure", "tab" oder "table" gute zusätzliche Stoppwörter. Im Ergebnis werden Ihre Themen klarer.


quelle
1

Die Verwendung von TFIDF (Term Frequency Inverse Document Frequency) löst Ihren Zweck. Holen Sie sich die TFIDF-Bewertung für jedes Wort in Ihrem Dokument und sortieren Sie die Wörter nach ihren Bewertungen, anhand derer Sie die wichtigen Wörter in Ihren Daten auswählen können.

Thilak Adiboina
quelle
1

Ein Ansatz, den ich zum Erstellen einer Stoppwortliste verwendet habe, besteht darin, ein logistisches Regressionsmodell (aufgrund seiner Interpretierbarkeit) für Ihre Textdaten zu erstellen und zu trainieren. Nehmen Sie den absoluten Wert der Koeffizienten für jedes Token. Sortieren Sie dann absteigend nach dem Absolutwert der Koeffizienten der Token. Erstellen Sie dann eine Liste aller Token mit einem absoluten Wert mit hohem Koeffizienten, die zu einer Überanpassung führen können oder einige andere Kriterien erfüllen, um ein Stoppwort zu sein. Diese Liste ist Ihre Stoppwortliste. Sie können diese Stoppwortliste dann auf einen anderen Satz von Dokumenten dieses Typs anwenden (ähnlich einem Testsatz), um festzustellen, ob das Entfernen dieser Dokumente die Genauigkeit, Präzision oder den Abruf des Testsatzmodells erhöht.

Diese Strategie ist effektiv, da sie die Auswirkungen von Token beim Erstellen einer Stoppwortliste berücksichtigt.

Dshefman
quelle
0

Stoppwörter können irgendwann Teil der Lösung sein, aber nicht der Schlüssel. In jedem Fall gibt es für alle Hauptsprachen gute Listen mit Stoppwörtern, die nicht domänenspezifisch sein sollten.

Ich denke auch nicht, dass die Verwendung von TD-IDF allein wirklich richtig ist. Es kann sehr seltene (möglicherweise Müll-) Wörter in Zeichenfolgen von schlechter Qualität geben.

Anstatt zu erraten, welche genauen Funktionen nützlich sind: Ich würde zunächst einen Datensatz erstellen, indem ich einige der Daten zufällig auswähle und von Hand beschrifte (als goododer badoder auf einer Skala von 0,0 bis 1,0). Codieren Sie dann etwas, das viele Funktionen hervorhebt (Länge, Anzahl der Wörter (Token), Spam-Score, ob es URLs oder Botish-Zeichen enthält, erkannte Sprache, ob es ein Fragezeichen hat, ob es die richtige Großschreibung hat). Vergessen Sie auch nicht, nichtsprachliche Funktionen einzuschließen, die Sie möglicherweise haben, z. B. das Land des geoIP des Benutzers, der die Abfrage durchgeführt hat, ob der Benutzer angemeldet war und wie alt das Benutzerkonto ist. An diesem Punkt haben Sie also eine massive Tabelle / CSV und eine kleinere mit einer zusätzlichen Spalte für das von Ihnen hinzugefügte Etikett.

Trainieren Sie anschließend ein maschinelles Lernpaket mit den angegebenen Beispielen, um ein Modell zu erstellen, das genau genug für Sie ist. Lassen Sie dieses Modell dann auf den restlichen Daten ausgeführt werden.

Wenn Sie nicht zu viel codieren möchten, können Sie diese Funktionen sogar einfach in CSV-Form bringen und an die Tabellenkalkulationsoberfläche der Google Prediction API weitergeben .

Adam Bittlingmayer
quelle