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!
stop words
. Stop-wrods ist eine Liste der am häufigsten verwendeten Wörter in einer Sprache, zum BeispielI
,the
,a
und 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.Antworten:
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.
quelle
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
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.
quelle
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.
quelle
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
good
oderbad
oder 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 .
quelle