diff --git a/Aufgabe1.txt b/Aufgabe1.txt index 3706fe448d8df3244c3e0fa846b63bc7df5ad8e8..b471ff7fa2620f906bd96821550dd3b63ac08bfa 100644 --- a/Aufgabe1.txt +++ b/Aufgabe1.txt @@ -4,13 +4,13 @@ Vergleich der Tokens: 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. +der Sentence-Splitter aus der Doku der 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 +CoreNLP: Sehr schnelle Laufzeit 3: Ergebnisse Spacy: @@ -20,7 +20,7 @@ Warum stimmst du dann nicht dafür ab? :) 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 +-> 9.3 wurde 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', '.' diff --git a/Aufgabe2.txt b/Aufgabe2.txt index fcc6ac563f74a41eb84e67393a5ba961c8a31c7b..048190bda44120fa2d3ca2ffbe1e38a205569848 100644 --- a/Aufgabe2.txt +++ b/Aufgabe2.txt @@ -46,7 +46,7 @@ Ich würde mich trotz der längeren Laufzeit für Spacy entscheiden, da die ande 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. +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. diff --git a/aufgabe3.txt b/Aufgabe3.txt similarity index 94% rename from aufgabe3.txt rename to Aufgabe3.txt index 6d515be77edbe7fb60c1a0789119df89a067b9b3..47fc83f4d23d52d5a869502917278d55d37acd62 100644 --- a/aufgabe3.txt +++ b/Aufgabe3.txt @@ -20,9 +20,9 @@ So könnte z.b eine spezifische (semantische) Suchanfrage wie bspw. Google-Sucha 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. +Bei der Stammformreduktion handelt es sich um 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. +Bei der Grundformreduktion werden Substantive auf den Nominativ Singular und 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. @@ -33,11 +33,11 @@ Bei einer semantischen Suche könnte die Reduktion auf die Grund- oder Stammform 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. +Dort würde die Reduktion zu Problemen bei Mehrwortgruppen führen bzw. 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. +schlechter den Kontext erfassen, da möglicherweise angrenzende Worte entfernt wurden. diff --git a/code/corenlp_sentences.py b/code/corenlp_sentences.py index 1fb82a6649a850e75b2fd618b388191339e9c8ab..97eeed3b3279e9b3cfbe7d549395ea3be0e79700 100644 --- a/code/corenlp_sentences.py +++ b/code/corenlp_sentences.py @@ -38,4 +38,4 @@ if __name__ == '__main__': ''' file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt') file_splits = get_splits(file_sentences) - FileWriter.write(file_splits, './results/corenlp_sentences.txt') + FileWriter.write(file_splits, './results/stanfordcorenlp_sentences.txt') diff --git a/code/corenlp_tokens.py b/code/corenlp_tokens.py index 7f898290f0fcebb31dd5fa43768a2205fe6b7312..8cc3ce1b30384e456fa73d103c9fd9d4b8e64574 100644 --- a/code/corenlp_tokens.py +++ b/code/corenlp_tokens.py @@ -30,4 +30,4 @@ def get_tokens(sentences: List) -> List[List]: if __name__ == '__main__': file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt') file_tokens = get_tokens(file_sentences) - FileWriter.write(file_tokens, './results/corenlp_tokens.txt') + FileWriter.write(file_tokens, './results/stanfordcorenlp_tokens.txt') diff --git a/code/results/corenlp_sentences.txt b/code/results/stanfordcorenlp_sentences.txt similarity index 100% rename from code/results/corenlp_sentences.txt rename to code/results/stanfordcorenlp_sentences.txt diff --git a/code/results/corenlp_tokens.txt b/code/results/stanfordcorenlp_tokens.txt similarity index 100% rename from code/results/corenlp_tokens.txt rename to code/results/stanfordcorenlp_tokens.txt diff --git a/code/spacy_sentence.py b/code/spacy_sentence.py index a7f0de77e35fb285090dda22b74e592fefbfecb5..46cad1b1d03b31ad2da093f7e6b82293a0bc1bea 100644 --- a/code/spacy_sentence.py +++ b/code/spacy_sentence.py @@ -11,7 +11,7 @@ def get_splits(model, sentences: List) -> List[List]: :param model: Which model should be used :param sentences: List containing the sentences - :return: List of token-lists + :return: List of sentences-lists ''' tokens = [] for sentence in sentences: