Masterarbeit: Near Copy Detection in large text corpora (ODIN): Was bisher geschah! (Stemming, Stopword, Numberremoval, Symbolremoval)

2 Mrz

Dies ist der vorerst letzte Artikel zum Thema Textvorverarbeitung. Hier werden kurz die Techniken Stemming, Stopworts, Numberremoval und Symbolremoval, die ebenfalls als API und Hadoop Map-Reduce implementiert sind, beschrieben. Die folgenen Artikel werden sind mehr mit dem Detectieren von kopierten stellen und der Verarbeitung mittels Hadoop  zu tun haben.

Stemming
Stemming wandelt Worte, ähnlich wie eine Lemmatizer, in eine einheitliche Form um. Diese Form ist aber nicht wie beim lemmatisieren die Grundform eines Wortes oder gar ein korrektes Wort. Das Stemmen wendet auf die Eingabe Worte einen Satz von Ersetzungen, die Sprachspezifisch sind, an. Hierdurch werden Worte, durch einen algorithmischen Ansatz, vereinheitlicht. Dies bieten den Vorteil das Stemmen, im Vergleich zum lemmatisieren das mit Wörterbüchern arbeitet, sehr schnell ist und nur wenig Speicher verbraucht.  Die Worte „Connect“, „Connected“, „Connecting“, „Connection“, „Connections“ werden alle auf „Connect“ gestemmt. Wo bei „went“ nicht auf „go“ umgeformt wird sondern „went“ bleibt. Also hat der Algorithmus eine geringere Genauigkeit als das lemmatisieren, ist dafür um ein vielfaches schneller.

Es gibt eine Vielzahl von fertig implementierten  Stemmingalgorithmen, so des es nicht nötig ist eine eigene Implementierung zu schaffen. Für mein System habe ich die Implementierung von Apache Lucene benutzt, die den Porter Stemmer Algorithmus umgesetzt haben. Die Lucene Implementierung bietet auch den Vorteil das verschiedene Sprachen einheitlich benutzt werden können. Das Ergebnis für den Map-Reduce-Job ist eine SubstitutionList mit den Offsets und den stemms der Worte im Documentobject.

Stopwords
Das entfernen von Stoppworten ist eine üblich Technik in vielen text-verarbeitenden Algorithmen, wie zum Beispiel bei Ähnlickeitsberechnungen oder das Erstellen von Indexen für Suchmaschinen. Stoppworte sind Worte ohne oder mit wenig Semantischer Bedeutung für den Text, zum Beispiel „der“, „die“, „das“, „und“… . Es gibt Listen mit Stoppworte für viele Sprachen. Diese Listen bestehen mehreren hundert Worten die für die semantische Bedeutung wenig Gewicht haben.

Auch hier habe ich die Implementierung von Apache Lucene verwendet, da es sie fertig für verschiedene Sprachen gibt. Das Ergebnis für den Map-Reduce-Job ist eine RemoveList mit den Offsets der Stopworte im Documentobject.

Numberremoval
Wenn kopierte Textstellen numerische Werte enthalten, werden diese häufig durch andere Werte ersetzt. Wenn diese Werte eins zu eins verglichen werden ergibt sich keine Ähnlichkeit. Um dies zu verbessern können die Zahlenwerte durch einheitliche Platzhalter ersetzt werden, da die Zahl ansich nur wenig Bedeutung für den Kontext hat und interessanter ist das an der Stelle eine Zahl steht.

In der Implementierung werden alle Zahlenwerte die nicht alphanumerisch sind durch einen Paltzhalter ersetzt, der in einer SubstitutionList zusammen mit dem Offset gespeichert wird.

Symbolremoval
Die letzte Methode entfernt alle nicht alphanumerischen Tokens aus dem Text, hier also alle Satzzeichen
 

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: