Spacy: Einfach zu verstehende Implementierung die sehr gut dokumentiert ist.
NLTK: Einfach zu verstehende Implementierung die gut dokumentiert ist. (An einigen Stellen nltk.download('punkt', download_dir='.') fehlt es an Informationen)
CoreNLP: Schlecht dokumentierter Python Wrapper. Die Dokumentation von CoreNLP ist zwar umfangreich jedoch werden einfache Tools wie
der Sentence-Splitter aus der Doku des Anwendung und der des Python Wrappers nicht direkt ersichtlich.
Schwerere Implementierung die mäßig gut dokumentiert ist.
-> 9.3 wurde nurch an dem Punkt zertrennt und wurde als eigenes Datum tokenisiert -> Positiv + .. ist auch als einzelner Token erkannt worden -> Positiv
Kiten ist der Hammer, ich selbst kite auch schon seit 5-10 Jahren, ABER der Spot am Tempelhofer Feld ist schlecht und sehr GEFÄHRLICH.
Spacy: Einfach zu verstehende Implementierung die sehr gut dokumentiert ist.
NLTK: Einfach zu verstehende Implementierung die gut dokumentiert ist. (An einigen Stellen nltk.download('punkt', download_dir='.') fehlt es an Informationen)
CoreNLP: Schlecht dokumentierter Python Wrapper. Die Dokumentation von CoreNLP ist zwar umfangreich jedoch werden einfache Tools wie
der Sentence-Splitter aus der Doku des Anwendung und der des Python Wrappers nicht direkt ersichtlich. So war es z.b. nicht direkt ersichtlich wie der Sentence wieder zusammengesetzt werden
kann aus dem Ergebnis. Für Java gibt es dazu exktra eine eigene Klasse. Erst nach intensiven Suchen konnte ich eine Lösung erstellen.
Schwerere Implementierung die mäßig gut dokumentiert ist.
2: Laufzeit
Spacy: Sehr lange Laufzeit
NLTK: Sehr schnelle Laufzeit
CoreBNLP: Sehr schnelle Laufzeit
3: Ergebnisse
Spacy:
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab.Das ist ungerecht und sorgt für schlechte Laune.
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab., Das ist ungerecht und sorgt für schlechte Laune.
-> ab.Das führt zu keinem Problem -> Positiv
Ich war gestern (9.3.) auch dort und denke es handelte sich um eine Ausnahmesituation..
Ich war gestern (9.3.) auch dort und denke es handelte sich um eine Ausnahmesituation..
-> Der Satz wurde richtig erkannt -> Positiv
NLTK:
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab.Das ist ungerecht und sorgt für schlechte Laune.
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab.Das ist ungerecht und sorgt für schlechte Laune.
-> ab.Das sorgt dafür, dass der Satz nicht richtig erkannt wird -> Negativ
Ich war gestern (9.3.) auch dort und denke es handelte sich um eine Ausnahmesituation..
Ich war gestern (9.3.), auch dort und denke es handelte sich um eine Ausnahmesituation.. so voll hab ich das Feld glaub ich noch nie gesehen, es war der erste beinahe sommerliche Sonntag der Jahres gepaart mit nicht nur starkem Wind sondern auch einer Windrichtung, die das auf und abfahren auf den Landebahnen begünstigte.. An solchen Tagen ist halt einfach Rücksicht von allen (insbesondere der Kiter, die mit den Leinen eine Menge Platz in anspruch nehmen) von Nöten.
-> Der Satz wird an der falschen Stelle (9.3.) getrennt und .. wird nicht getrennt -> Der Satz wäche sehr lange -> Negativ
CoreNLP:
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab.Das ist ungerecht und sorgt für schlechte Laune.
Steht der Wind ungünstig, kriegen die Nichtraucher den Qualm ab.Das ist ungerecht und sorgt für schlechte Laune.
-> ab.Das sorgt dafür, dass der Satz nicht richtig erkannt wird -> Negativ
Ich war gestern (9.3.) auch dort und denke es handelte sich um eine Ausnahmesituation..
Ich war gestern -LRB-9.3.-RRB-, auch dort und denke es handelte sich um eine Ausnahmesituation., .
-> Der Satz wird an der falschen Stelle (9.3.) getrennt aber .. wird richtig getrennt -> Positiv + Negativ
Fazit:
Ich würde mich trotz der längeren Laufzeit für Spacy entscheiden, da die anderen Tools gravierendere Fehler machen.
So werden einige Sätze nicht richtig getrennt wohingegehn Spacy diese richtig erkennt.
Zudem sollten gerade solche Elemente wie ab.Das nicht dazu führen, dass die Sätze nicht richtig getrennt werden.
CoreNLP ist vom Setup (Wrapper + Server + Language-Packet) zu viel arbeit für einen so kleinen Datensatz.
Die Ergebnisse sind auch nicht ganz zuverlässig.
Es werden neue Tags eingeführt (RRB, LLB) wodurch der Text verändert wird.
NLTK scheidet aus, da die Ergebnisse deutlich schlechter ausfallen. Jedoch ist die Implementierung sehr einfach gehalten und die Laufzeit ist gut.
Dennoch würde ich es nicht nehmen, da die Ergebnisse dennoch richtig sein sollten.
Oftmals trägt die Groß- und Kleinschreibung zur Semantik bei.
Zum Beispiel finden sich in der deutschen Sprache Anglizismen wie Couch, Kindergarten, Mob, Sandwich etc. Hierbei spielt die
Groß- und Kleinschreibung eine Rolle, da im englischen die Worte klein geschrieben werden im deutschen aber nicht.
Zudem spielt bei Homonymen ("Teekesselchen") die Groß- und Kleinschreibung eine große Rolle.
So kann bei Homonymen deren Schreibweise eine grundlegend andere Semantik herbeiführen:
Bspl. "Arm"(Körperteil) und "arm"(Zustand).
Bei der Zusammenführen von Termen mit gleicher Semantik spielt deren Groß- und Kleinschreibung keine Rolle.
So können z.b. Nominalisierungen zusammen geführt werden. Zudem können auch durch das Ignorieren von Groß- und Kleinschreibung
Worte die am Satzanfang/Caps-Lock geschrieben sind zusammengeführt werden.
C.2
Bei einer Schlagwortsuche (Suche in einem Text nach bestimmten Schlagworten) kann die Eingrenzung auf bestimmte POS-Tags
sinnvoll sein.
So könnte eine mögliche Anwendung z.b. eine Artikel-Suche sein.
Es könnten Produktbeschreibungen oder Kundenrezensionen nach einem bestimmten Produktnamen durchsucht werden.
Die Suche könnte effizienter gestalltet werden, wenn vorher durch POS-tagging z.b alle Nomen gefiltert werden.
Wenn mehr semantischer Zusammenhang gefragt ist, so ist die Eingrenzung auf wenige POS-Tags nicht sinnvoll.
So könnte z.b eine spezifische (semantische) Suchanfrage wie bspw. Google-Suchanfragen durch die Eingrenzung auf wenige POS-Tags beeinträchtigt werden.
C.3
Bei der Grundformreduktion handelt es sich um die Rückführung eines Terms (Wort) auf dessen gramatikalische Grundform.
Bei der Stammformreduktion handelt es sich im die Rückführung eines Terms (Wort) auf seinen Wortstammt.
Dabei darf nicht außer Acht gelassen werden, dass es sich bei der Grundform (i.d.R) nicht um den Wortstammt handelt.
Bei der Grundformreduktion werden Substantive auf den Nominativ Singularund Verben auf den Infinitiv zurückgeführt.
Im Allgemeinen geschieht dies durch Abtrennung der Flexionsendung und eine anschließende Rekodierung.
Ein klassischen Beispiel ist hierfür: applies -> appl -> apply
Die Grundformreduktion bildet bei der Reduktion immer auf existierende Worte ab. Die Stammformreduktion hingegen nicht.
Ein klassischen Beispiel für Stammformreduktion ist: computer,compute,computation -> comput
C.4
Bei einer semantischen Suche könnte die Reduktion auf die Grund- oder Stammform sinnvoll sein. So könnten z.b durch
die Auflösung des Plurals (Hunde -reduziert-> Hund) bessere Suchergebnisse erzielt werden die dennoch die Semantik
der Anfrage berücksichtigen.
Es macht keinen Sinn eine Reduktion bei exakten Suchen anzuwenden.
Dort würde die Reduktion zu Problemen bei Mehrwortgruppen führen bzw. wäre könnte es auch kein Ergebnis geben.
C.5
Es ist nicht sinnvoll Stoppwörter zu entfernen, wenn diese wesentlich zur Semantik des Textes beitragen.
Bsp. "Sein oder nicht sein"
Auch wäre es nicht sinnvoll vor der Anwendung eines POS-Taggers den Text von Stoppwörtern zu befreien, da diese wesentlich
dazu beitragen können, dass die POS-Tags richtig gesetzt werden. Durch das Entfernen von Stoppworten kann der POS-Tagger
schlechter den Kontext erfassen, da möglicherweise angrenzende Worte entfern wurden.