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"; } } } }
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
#!/usr/bin/perl use strict; use warnings; my @alles_ausser_verb; my @umlaut_map =(['o"','ö'],['u"','ü'],['a"','ä'],['sS','ß'],['ss','ß']); my @files = ( ["adjektive.txt", '/'],#Adjektivedjektive ["artikel.txt", ','],#Artikel ["adverben.txt", ','],#Adverben ["pronomen.txt", ','],#Pronomen ["präpositionen.txt", ','],#Präpositionen ["konjunktionen.txt", ','],#Konjunktionen ["interjektionen.txt",','],#Interjektionen ); for my $i (@files) { my ($file,$separator) = @$i; if(open(my $fh, '<', "$adjektive")) { while ( my $line = <$fh>) { # Zeilenumbrüche entfernen $line=~s/[\r\n]+//gs; #Elemente splitten foreach my $lm (split(m!$separator!,$line)) { #umlaute setzen foreach(@umlaut_map) { my ($s,$r) = @$_; $elm=~ s/$s/$r/g; } #ins array push (@alles_ausser_verb,$elm); } } close($fh); } else { warn "ERROR OPEN $file ($!)\n"; } } my $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."; my $regexp = join('|',map{qr/\Q$_\E/}@alles_ausser_verb); $regexp = qr/$regexp|[A-Z].*/; my @saetze_0_anapher= split(/(?<=[.!?])\s*/,$normalText); foreach $satz (@saetze_0_anapher) { my @woerter= split(/\s+/,$satz); foreach $wort (@woerter) { $wort=~ s/(,|\.|\?|\!|\"|„|-|\s)//sg; foreach $alles_ausser_verb (@alles_ausser_verb) { next if ($wort=~ m/$regexp/); print "$wort\t"; } } }