diff --git a/Aufgabe1.txt b/Aufgabe1.txt new file mode 100644 index 0000000000000000000000000000000000000000..3706fe448d8df3244c3e0fa846b63bc7df5ad8e8 --- /dev/null +++ b/Aufgabe1.txt @@ -0,0 +1,76 @@ +Vergleich der Tokens: + +1: Programmieraufwand +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. + +2: Laufzeit +Spacy: Sehr lange Laufzeit +NLTK: Sehr schnelle Laufzeit +CoreBNLP: Sehr schnelle Laufzeit + +3: Ergebnisse +Spacy: +Warum stimmst du dann nicht dafür ab? :) +'Warum', 'stimmst', 'du', 'dann', 'nicht', 'dafür', 'ab', '?', ':)' +-> Der Smiley wurde als ein einzelner Token gewertet -> 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', '..' +-> 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. +'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', '.' +-> 5-10 wurde getrennt -> Negativ, da 9.3 aber erkannt wurde + +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 wurde getrennt -> Positiv + +NLTK: +Warum stimmst du dann nicht dafür ab? :) +'Warum', 'stimmst', 'du', 'dann', 'nicht', 'dafür', 'ab', '?', ':', ')' +-> Der Smiley wurde nicht als einzelner Token erkannt -> Negativ, da er auch zum Satz betragen könnte (Aber es kommt auf die Anwendung an) + +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..' +-> 9.3 wurde als ein Token erkannt -> Positiv -> Aber nicht .., sondern nur Ausnahmesituation.. -> Negativ + +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. +'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', '.' +-> 5-10 wurde als ein Token erkannt -> Positiv, da auch 9.3 erkannt wurde + +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 wurde als ein Token erkannt -> Negativ, da es sich um eine Satztrennung und kein Datum handelt wie bei 9.3 + +CoreNLP: +Warum stimmst du dann nicht dafür ab? :) +'Warum', 'stimmst', 'du', 'dann', 'nicht', 'dafür', 'ab', '?', ':-RRB-' +-> Der Smiley wurde erkannt: :-RRB- (RRB = Right Round Brace) ist die Darstellung für ) -> Positiv, aber umständlich + +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', '.', '.' +9.3 wurde erkannt -> Positiv, aber nicht .. -> Neutral, da .. auch . und . sein kann + +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. +'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', '.' +-> 5-10 wurde als ein Token erkannt -> Positiv, da auch 9.3 erkannt wurde + +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 wurde als ein Token erkannt -> Negativ, da es sich um eine Satztrennung und kein Datum handelt wie bei 9.3 + + +Fazit: +Ich würde mich für diesen Datensatz für Spacy entscheiden. +Spacy ist im Vergleich zu den anderen Tools zwar deutlich schlechter bezüglich der Laufzeit, doch liefert es solide Ergebnisse. +Es schafft die Unterscheidung zwischen 9.3 und ab.Das -> ab . Das. +Darüber hinaus kann es auch Smileys wie :) erkennen ohne dabei deren Darstellung (RRB) zu verändern. + +Ich würde mich gegen die anderen beiden entscheiden. +CoreNLP ist zu aufwändig für einen so kleinen Datensatz wie diesen. +NLTK ist zwar schneller jedoch sind die Tokens nicht überzeugend. (Ausnahmesituation.., 9.3, ab.Das) \ No newline at end of file diff --git a/Aufgabe2.txt b/Aufgabe2.txt new file mode 100644 index 0000000000000000000000000000000000000000..fcc6ac563f74a41eb84e67393a5ba961c8a31c7b --- /dev/null +++ b/Aufgabe2.txt @@ -0,0 +1,54 @@ +Vergleich der Sentences + +1: Programmieraufwand +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. + diff --git a/aufgabe3.txt b/aufgabe3.txt new file mode 100644 index 0000000000000000000000000000000000000000..6d515be77edbe7fb60c1a0789119df89a067b9b3 --- /dev/null +++ b/aufgabe3.txt @@ -0,0 +1,43 @@ +C.1 +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.