Skip to content
Snippets Groups Projects
Commit e4f805ab authored by Marc Feger's avatar Marc Feger
Browse files

Refactor

parent 8de9cbc9
Branches
Tags
No related merge requests found
...@@ -4,13 +4,13 @@ Vergleich der Tokens: ...@@ -4,13 +4,13 @@ Vergleich der Tokens:
Spacy: Einfach zu verstehende Implementierung die sehr gut dokumentiert ist. 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) 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 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. Schwerere Implementierung die mäßig gut dokumentiert ist.
2: Laufzeit 2: Laufzeit
Spacy: Sehr lange Laufzeit Spacy: Sehr lange Laufzeit
NLTK: Sehr schnelle Laufzeit NLTK: Sehr schnelle Laufzeit
CoreBNLP: Sehr schnelle Laufzeit CoreNLP: Sehr schnelle Laufzeit
3: Ergebnisse 3: Ergebnisse
Spacy: Spacy:
...@@ -20,7 +20,7 @@ Warum stimmst du dann nicht dafür ab? :) ...@@ -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..
'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.
'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', '.'
......
...@@ -46,7 +46,7 @@ Ich würde mich trotz der längeren Laufzeit für Spacy entscheiden, da die ande ...@@ -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. 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. 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. Die Ergebnisse sind auch nicht ganz zuverlässig.
Es werden neue Tags eingeführt (RRB, LLB) wodurch der Text verändert wird. 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. NLTK scheidet aus, da die Ergebnisse deutlich schlechter ausfallen. Jedoch ist die Implementierung sehr einfach gehalten und die Laufzeit ist gut.
......
...@@ -20,7 +20,7 @@ So könnte z.b eine spezifische (semantische) Suchanfrage wie bspw. Google-Sucha ...@@ -20,7 +20,7 @@ So könnte z.b eine spezifische (semantische) Suchanfrage wie bspw. Google-Sucha
C.3 C.3
Bei der Grundformreduktion handelt es sich um die Rückführung eines Terms (Wort) auf dessen gramatikalische Grundform. 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. 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 Singular und 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. Im Allgemeinen geschieht dies durch Abtrennung der Flexionsendung und eine anschließende Rekodierung.
...@@ -33,11 +33,11 @@ Bei einer semantischen Suche könnte die Reduktion auf die Grund- oder Stammform ...@@ -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 die Auflösung des Plurals (Hunde -reduziert-> Hund) bessere Suchergebnisse erzielt werden die dennoch die Semantik
der Anfrage berücksichtigen. der Anfrage berücksichtigen.
Es macht keinen Sinn eine Reduktion bei exakten Suchen anzuwenden. 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 C.5
Es ist nicht sinnvoll Stoppwörter zu entfernen, wenn diese wesentlich zur Semantik des Textes beitragen. Es ist nicht sinnvoll Stoppwörter zu entfernen, wenn diese wesentlich zur Semantik des Textes beitragen.
Bsp. "Sein oder nicht sein" 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 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 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.
...@@ -38,4 +38,4 @@ if __name__ == '__main__': ...@@ -38,4 +38,4 @@ if __name__ == '__main__':
''' '''
file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt') file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt')
file_splits = get_splits(file_sentences) file_splits = get_splits(file_sentences)
FileWriter.write(file_splits, './results/corenlp_sentences.txt') FileWriter.write(file_splits, './results/stanfordcorenlp_sentences.txt')
...@@ -30,4 +30,4 @@ def get_tokens(sentences: List) -> List[List]: ...@@ -30,4 +30,4 @@ def get_tokens(sentences: List) -> List[List]:
if __name__ == '__main__': if __name__ == '__main__':
file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt') file_sentences = FileReader.get_file_as_list('./corpus/projekt1_corpus.txt')
file_tokens = get_tokens(file_sentences) file_tokens = get_tokens(file_sentences)
FileWriter.write(file_tokens, './results/corenlp_tokens.txt') FileWriter.write(file_tokens, './results/stanfordcorenlp_tokens.txt')
...@@ -11,7 +11,7 @@ def get_splits(model, sentences: List) -> List[List]: ...@@ -11,7 +11,7 @@ def get_splits(model, sentences: List) -> List[List]:
:param model: Which model should be used :param model: Which model should be used
:param sentences: List containing the sentences :param sentences: List containing the sentences
:return: List of token-lists :return: List of sentences-lists
''' '''
tokens = [] tokens = []
for sentence in sentences: for sentence in sentences:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment