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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
#!/usr/bin/perl -w $normalText= "Der Weihnachtsmann kommt heim. Cäsar kam, sah und siegte. Menschen sind komplex. Luna mag Tiere, bringt Wasser mit und geht wieder nach Hause."; #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,@adj,@art,@ad,@pro,@pra,@kon,@int); @anapher_0=(); @saetze_0_anapher= split(/(?<=[.!?])\s*/,$normalText); $counter=0; @anapher_0=(); foreach $satz (@saetze_0_anapher) { $flag = 0; @woerter= split(/ /,$satz); foreach $wort (@woerter) { if ($wort=~ m/[A-Z].*/) { push(@np,$wort); } foreach $artikel (@art) { if ($wort=~ m/\b$artikel\b/) { push(@np,$wort); } } foreach $alles_ausser_verb (@alles_ausser_verb) { if (($wort!~ m/($alles_ausser_verb|[A-Z].*)/) and ($satz=~ m/und $wort/g) and $flag == 0) { unless ($anapher_0[$counter] eq $satz) { push(@anapher_0,$satz); $counter++; } $flag = 1; } } } } foreach $anapher_satz (@anapher_0) { print "Es wurde eine 0-Anapher gefunden. Satz:\n$anapher_satz\nWählen Sie einen Ersatz aus folgenden Nomen:\n"; }
1 2 3 4
$counter = 0; $anapher_0 = (); ... unless ($anapher_0[$counter] eq $satz) {
if ( defined $anapher_0[$counter] && $anapher_0[$counter] ne $satz) {
if ( not defined $anapher_0[$counter] || $anapher_0[$counter] ne $satz) {