Perl Schlüssel im Hash nur während Iteration verändern?

Dingels

Ensign
Registriert
Juli 2006
Beiträge
174
Hallöchen zusammen,

Perl wird ja hier nicht so oft genutzt, aber vielleicht könnt ihr mir trotzdem helfen.

ich möchte ein Script schreiben, welches in einem Korpus mit deutschen Wörtern Komposita erkennt. Dazu habe ich die Wörter als Schlüssel in einem Hash abgelegt (der Hash hat auch noch Values, die sind jetzt aber irrelevant).
Um die Komposita zu erkennen, schaue ich nach, ob vorkommende Worttypen aus kleineren Worttypen bestehen, die ebenfalls im Korpus vorkommen.

Also so:

PHP:
foreach my $wortteil_1 (keys %hash) {
        foreach my $wortteil_2 (keys %hash) {
                if (exists $hash{$wortteil_1.$wortteil_2}) {
                        print $wortteil_1.$wortteil_2 . "\t\t" . $wortteil_1 . "\t" . $wortteil_2 . "\n";
                }
        }
}

Damit das auch bei Substantiven funktioniert, muss die Groß- und Kleinschreibung normalisiert werden. Da die Wörter später aber alle in ihrer richtigen Schreibung ausgegeben werden sollen, sollen alle Wörter nur temporär während der Iteration in der Schleife kleingeschrieben werden.

Aber folgendes z.B. funktioniert nicht:

PHP:
foreach my $wortteil_1 (keys %hash) {
        my $wortteil_1_klein = lc($wortteil_1);
        foreach my $wortteil_2 (keys %hash) {
                my $wortteil_2_klein = lc($wortteil_2);
                if (exists $hash{$wortteil_1_klein.$wortteil_2_klein}) {
                        print $wortteil_1_klein.$wortteil_2_klein . "\n";
                }
        }
}

Habt ihr eine Ahnung, wie ich das bewerkstelligen könnte? Die Values im Hash müssen übrigens unbedingt erhalten bleiben! Ihr würdet mir wirklich sehr helfen. Vielen vielen Dank im Voraus.


Schönen Gruß,
Dingels
 
Zurück
Oben