Thread Probleme mit Listenabgleich (7 answers)
Opened by Corni_Cornflake at 2017-09-04 15:41

Corni_Cornflake
 2017-09-04 15:41
#187338 #187338
User since
2017-08-20
13 Artikel
BenutzerIn
[default_avatar]
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!!

View full thread Probleme mit Listenabgleich