Thread Probleme mit Listenabgleich
(7 answers)
Opened by Corni_Cornflake at 2017-09-04 15:41
Hallo,
ich versuche gerade ein Programm zu schreiben, das im Prinzip Verben findet. Dafür lese ich mehrere Listen von Wörtern ein, im Prinzip ist jede Wortart enthalten, außer Verben, um dann die Verben mit dem Ausschlussprinzip zu finden. Leider funktioniert mein Programm so nicht. Als Ergebnis soll es mir einfach nur die Verben anzeigen, doch so ist das Ergebnis ebenfalls ein Artikel, eine Präposition und so weiter. Ich versteh aber auch nicht wieso. Vielleicht kann mir ja jemand weiter helfen? Bis auf die Liste der Adjektive sind alle anderen Daten in den Dateien nur mit einem Komma getrennt. Mein Fehler müsste denke ich irgendwo ab Zeile 85 sein. Mein Code sieht so aus: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 #!/usr/bin/perl -w #Adjektive $adjektive= "adjektive.txt"; open(DATEI_ADJ, "<$adjektive"); foreach (<DATEI_ADJ>) { @adjektivliste= split(/\n/,$_); #adjektivliste in adjektive aufspalten foreach $listenelement (@adjektivliste) { #tags entfernen @adjektive= split(/\/.+/,$listenelement); foreach $adjektiv (@adjektive) { #endgültige adjektivliste durchgehen if ($adjektiv=~ m/.*?a".*?/g) { #sonderzeichen umwandeln ä $adjektiv=~ s/a"/ä/g; } if ($adjektiv=~ m/.*?o".*?/g) { #sonderzeichen umwandeln ö $adjektiv=~ s/o"/ö/g; } if ($adjektiv=~ m/.*?u".*?/g) { #sonderzeichen umwandeln ü $adjektiv=~ s/u"/ü/g; } if ($adjektiv=~ m/.*?sS.*?/g) { #sonderzeichen umwandeln ß $adjektiv=~ s/sS/ß/g; } push (@adj,$adjektiv); } } } #Artikel $artikel= "artikel.txt"; open(DATEI_ART, "<$artikel"); foreach (<DATEI_ART>) { @art= split(/,/,$_); #artikelliste in artikel aufspalten } #Adverben $adverben= "adverben.txt"; open(DATEI_AD, "<$adverben"); foreach (<DATEI_AD>) { @ad= split(/,/,$_); #adverbenliste in artikel aufspalten } foreach (@ad) { #bearbeiten adverben liste if ($_=~ m/.*?ss.*?/g) { $_=~ s/ss/ß/g; } } #Pronomen $pronomen= "pronomen.txt"; open(DATEI_PRO, "<$pronomen"); foreach (<DATEI_PRO>) { @pro= split(/,/,$_); #pronomenliste in artikel aufspalten } #Präpositionen $praposition= "präpositionen.txt"; open(DATEI_PRA, "<$praposition"); foreach (<DATEI_PRA>) { @pra= split(/,/,$_); #präpositionsliste in artikel aufspalten } #Konjunktionen $konjunktionen= "konjunktionen.txt"; open(DATEI_KON, "<$konjunktionen"); foreach (<DATEI_KON>) { @kon= split(/,/,$_); #konjunktionsliste in artikel aufspalten } #Interjektionen $interjektionen= "interjektionen.txt"; open(DATEI_INT, "<$interjektionen"); foreach (<DATEI_INT>) { @int= split(/,/,$_); #interjektionsliste in artikel aufspalten } push (@alles_ausser_verb, @art, @ad, @pro, @pra, @kon, @int, @adj); $normalText= "Der Weihnachtsmann kommt heim. Kinder. die Enkel. Cäsar kam, sah und siegte, Muskatnuss und lief. Menschen sind komplex. Luna mag Tiere, bringt Wasser mit und geht wieder nach Hause. Leben. die Mutter."; @saetze_0_anapher= split(/(?<=[.!?])\s*/,$normalText); foreach $satz (@saetze_0_anapher) { @woerter= split(/ /,$satz); foreach $wort (@woerter) { $wort=~ s/(,|\.|\?|\!|\"|„|-|\s)//g; foreach $alles_ausser_verb (@alles_ausser_verb) { if ($wort!~ m/($alles_ausser_verb|[A-Z].*)/) { print "$wort\t"; } } } } Vielen Dank für die Hilfe!! |