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

Gast wer
 2017-09-05 12:11
#187348 #187348
So würde ich es schreiben (ungetestet):
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
#!/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";
    }
  }
}

Last edited: 2017-09-05 12:36:29 +0200 (CEST)

View full thread Probleme mit Listenabgleich