Können Stoppwörter automatisch gefunden werden?

8

In NLP ist das Entfernen von Stoppwörtern ein typischer Vorverarbeitungsschritt. Und es wird typischerweise in einer empirischen Weise basierend auf dem, was wir denken, Stop-Worte sollten gemacht werden.

Aber meiner Meinung nach sollten wir das Konzept der Stoppwö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 diesbezüglich ähnliche Gedanken und Fortschritte? Könnte jemand etwas Licht werfen?

    
smwikipedia 13.03.2014, 05:52
quelle

5 Antworten

3

Normalerweise kommen die Stoppwörter viel häufiger vor 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 Eigennamen, die nach den ersten beiden Schritten noch existieren.

    
sumitb.mdi 13.03.2014 06:10
quelle
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 von einer gemeinsamen Stoppwortliste verwendet werden, wie die in NLTK. 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, mein Punkt ist, dass Sie auch das Problem in Betracht ziehen müssen, und nicht nur das Korpus.

Danke, Ramya

    
Ramya 14.03.2014 04:46
quelle
1
___ qstnhdr ___ Können Stoppwörter automatisch gefunden werden? ___ qstntxt ___

In NLP ist das Entfernen von Stoppwörtern ein typischer Vorverarbeitungsschritt. Und es wird typischerweise in einer empirischen Weise basierend auf dem, was wir denken, Stop-Worte sollten gemacht werden.

Aber meiner Meinung nach sollten wir das Konzept der Stoppwö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 diesbezüglich ähnliche Gedanken und Fortschritte? Könnte jemand etwas Licht werfen?

    
___ answer22370422 ___

Normalerweise kommen die Stoppwörter viel häufiger vor 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 Eigennamen, die nach den ersten beiden Schritten noch existieren.

    
___ answer22394431 ___

Tatsächlich besteht der übliche Ansatz zum Erstellen von Stoppwörtern darin, einfach 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 review . Durchsuchen Sie die Liste, bis Sie ein Wort finden, das Ihrer Meinung nach nicht 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.

    
___ tag123nlp ___ Natural Language Processing (NLP) ist ein Teilbereich der künstlichen Intelligenz, bei dem nützliche Informationen aus natürlichsprachlichen Daten transformiert oder extrahiert werden. Methoden umfassen maschinelles Lernen und regelbasierte Ansätze. ___ answer22396327 ___

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 von einer gemeinsamen Stoppwortliste verwendet werden, wie die in NLTK. 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, mein Punkt ist, dass Sie auch das Problem in Betracht ziehen müssen, und nicht nur das Korpus.

Danke, Ramya

    
___ tag123machineelearning ___ Implementierungsfragen zu Algorithmen des maschinellen Lernens. Allgemeine Fragen zum maschinellen Lernen sollten in ihren jeweiligen Communities veröffentlicht werden. ___ tag123datamining ___ Data Mining ist der Prozess der Analyse großer Datenmengen, um Muster und Gemeinsamkeiten zu finden. ___ tag123textmining ___ Text Mining ist ein Prozess zum Ableiten von qualitativ hochwertigen Informationen aus unstrukturierten (textuellen) Informationen. ___ answer49121636 ___

Ja, Stoppwörter können automatisch erkannt werden.

Worthäufigkeiten insgesamt

Eine Möglichkeit besteht darin, Wortfrequenzen 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.

Vielleicht möchten Sie 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 besteht darin, Wörter pro "Dokument" zu analysieren.

In einer Gruppe 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 nutzlos für das Kategorisieren oder Gruppieren von Dokumenten in diesem speziellen Satz.

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 von ihnen.

Das gleiche gilt für Wörter, die nur in einer sehr begrenzten Anzahl von Dokumenten vorkommen. 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 den Dokumentgruppen im Lernsatz gerade ist oder ein in eine große und eine kleine Gruppe unterteilter Satz alle seine signifikanten Wörter verlieren könnte (da sie in zu vielen Dokumenten vorhanden sind) zu wenige).

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

Zipfsches Gesetz

Als ich Machine Learning studierte und die Diskussion über Stop-words kam, wurde Zipf's Law erwähnt. Aber heute könnte ich Ihnen nicht sagen, wie oder warum, aber vielleicht ist es ein allgemeiner Grundsatz oder eine mathematische Grundlage, auf die Sie eingehen möchten ...

Ich habe gegoogelt "Zipf's Law automatische Stoppwort Erkennung" und eine schnelle Auswahl fand mich zwei PDFs, die von Interesse sein könnten ...

___ antwort22389203 ___

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, ist die inverse Dokumenthäufigkeit (IDF) eines Wortes.

IDF ist ein besserer Weg über die Frequenzberechnung, um Stoppwörter zu definieren, weil einfache Frequenzberechnungen durch einige spezialisierte Dokumente, die oft ein spezielles Wort enthalten, nachteilig beeinflusst werden. Diese Methode wurde verwendet, um Stoppwörter in Fremdsprachen automatisch zu lernen (siehe Maschinelles Lernen mit SVM und Andere Kernel-Methoden ).

    
___
Chthonic Project 13.03.2014 19:40
quelle
1

Tatsächlich besteht der übliche Ansatz zum Erstellen von Stoppwörtern darin, einfach 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 review . Durchsuchen Sie die Liste, bis Sie ein Wort finden, das Ihrer Meinung nach nicht 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.

    
Anony-Mousse 14.03.2014 01:28
quelle
1

Ja, Stoppwörter können automatisch erkannt werden.

Worthäufigkeiten insgesamt

Eine Möglichkeit besteht darin, Wortfrequenzen 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.

Vielleicht möchten Sie 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 besteht darin, Wörter pro "Dokument" zu analysieren.

In einer Gruppe 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 nutzlos für das Kategorisieren oder Gruppieren von Dokumenten in diesem speziellen Satz.

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 von ihnen.

Das gleiche gilt für Wörter, die nur in einer sehr begrenzten Anzahl von Dokumenten vorkommen. 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 den Dokumentgruppen im Lernsatz gerade ist oder ein in eine große und eine kleine Gruppe unterteilter Satz alle seine signifikanten Wörter verlieren könnte (da sie in zu vielen Dokumenten vorhanden sind) zu wenige).

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

Zipfsches Gesetz

Als ich Machine Learning studierte und die Diskussion über Stop-words kam, wurde Zipf's Law erwähnt. Aber heute könnte ich Ihnen nicht sagen, wie oder warum, aber vielleicht ist es ein allgemeiner Grundsatz oder eine mathematische Grundlage, auf die Sie eingehen möchten ...

Ich habe gegoogelt "Zipf's Law automatische Stoppwort Erkennung" und eine schnelle Auswahl fand mich zwei PDFs, die von Interesse sein könnten ...

Erk 06.03.2018 00:32
quelle