Leser: 1
![]() |
![]() |
9 Einträge, 1 Seite |
QuoteIch PRO.Pers.Subst.1.Nom.Sg.*6 Ich
habe VFIN.Haben.1.Sg.Pres.Ind haben
einen ART.Indef.Acc.Sg.Masc eine
Menschen N.Reg.Acc.Sg.Masc Mensch
gesehen VPP.Full.Psp sehen
, SYM.Pun.Comma ,
welcher PRO.Inter.Subst.-3.Nom.Sg.Masc welche
schwankte VFIN.Full.1.Sg.Past.Ind schwanken
und CONJ.Coord.-2 und
umsank VFIN.Full.3.Sg.Past.Ind <unknown>
. SYM.Pun.Sent .
Quoteahnte VFIN.Full.3.Sg.Past.Ind (3) VFIN.Full.1.Sg.Past.Ind (2) VFIN.Full.1.Sg.Past.Subj (2)
als CONJ.Comp.-2 (196) CONJ.SubFin.-2 (61) APPR.Als(33) CONJ.Coord.Als(3)
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
my @zeilen_lexikon = split ("\n", $lexikon); my $token; my $tag; my $lemma; my %hash; foreach my $zeile (@zeilen_lexikon) { # Die Leerzeichen zwischen Worttypen und Tags normalisieren: $zeile =~ s/\s+/ /g; # Worttyp, Tag und Lemma voneinander trennen: if ($zeile =~ /([A-ZÄÖÜa-zäöüß0-9,;.:!?"'\(\)\[\]\{\}\-]+)\s([A-Z]+(\.[A-Za-z0-9\-\*]+){1,6})\s([A-ZÄÖÜa-zäöüß0-9,;.:!?"'\(\)\[\]\{\}\-]+)/) { $token = $1; $tag = $2; $lemma =$4; # Ich zähle die verschiedenen Kombinationen aus Worttyp und Tag: $hash{lc($token)}->{$tag}++; } } # Ausgabe foreach my $token (sort keys %hash) { foreach my $tag (sort {${$hash{$token}}{$b} <=> ${$hash{$token}}{$a}} keys %{$hash{$token}}) { print $hash{$token} . "\t\t" . $tag . "\t\t" . $hash{$token}->{$tag} . "\n"; } }
Quotealle PRO.Indef.Attr.-3.Acc.Pl.Fem 12
alle PRO.Indef.Attr.-3.Acc.Pl.Masc 7
alle PRO.Indef.Attr.-3.Nom.Pl.Fem 7
alle PRO.Indef.Attr.-3.Acc.Sg.Fem 5
alle PRO.Indef.Attr.-3.Acc.Pl.Neut 2
alle PRO.Indef.Attr.-3.Acc.Pl.*6 1
alle PRO.Indef.Attr.-3.Nom.Pl.*6 1
1
2
3
4
5
6
7
my $href = {
'ahnte' => {
'VFIN.Full.3.Sg.Past.Ind' => 3,
'VFIN.Full.1.Sg.Past.Ind' => 2,
'VFIN.Full.1.Sg.Past.Subj' => 2,
}
};
Quote'ahnte' => {
'VFIN.Full.3.Sg.Past.Ind' => 3,
'VFIN.Full.1.Sg.Past.Ind' => 2,
'VFIN.Full.1.Sg.Past.Subj' => 2,
}
1
2
3
4
5
'ahnte' => {
'VFIN.Full.3.Sg.Past.Ind' => 3,
'VFIN.Full.1.Sg.Past.Ind' => 2,
'VFIN.Full.1.Sg.Past.Subj' => 2,
}
1
2
3
4
5
6
7
8
9
# ungetestet...
my @partial_result = ();
while(my ($wort, $tag_freq) = each $href) { #$href aus Beitrag 2
push @partial_result, $wort;
# und jetzt noch die ganzen Einträge im Hash abarbeiten
while( my ($tag, $freq) = each %{$tag_freq} ) {
push @partial_result, ($tag . ' (' . $freq . ')');
}
}
1
2
3
%hash = ( 'ahnte' => ['VFIN.Full.3.Sg.Past.Ind (3)', 'VFIN.Full.1.Sg.Past.Ind (2)', 'VFIN.Full.1.Sg.Past.Subj (2)'],
'als' => [...]
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$wortform_href = { 'als' => [ [ 'CONJ.SubFin.-2', 61 ], [ 'CONJ.Coord.Als', 3 ] [ 'APPR.Als', 33 ], [ 'CONJ.Comp.-2', 196 ], ] };
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
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my %tagcount; while (my $line=<DATA>) { my ($token,$tag,$lemma)= split /\s+/,$line; $tagcount{lc($lemma)}->{$tag}++; }; #print Dumper \%tagcount; foreach my $lemma (sort keys %tagcount) { my @tags_sortedby_count = sort { $tagcount{$lemma}->{$b} <=> $tagcount{$lemma}->{$a} } keys %{ $tagcount{$lemma} }; # Ausgabe print "$lemma "; foreach my $tag ( @tags_sortedby_count ) { print "\t", $tag, " (", $tagcount{$lemma}->{$tag}, ")"; } print "\n"; } __DATA__ Ich PRO.Pers.Subst.1.Nom.Sg.*6 Ich habe VFIN.Haben.1.Sg.Pres.Ind haben einen ART.Indef.Acc.Sg.Masc eine Menschen N.Reg.Acc.Sg.Masc Mensch allen PRO.Indef.Attr.-3.Acc.Pl.Fem alle allen PRO.Indef.Attr.-3.Acc.Pl.Masc alle all PRO.Indef.Attr.-3.Nom.Pl.Fem alle allen PRO.Indef.Attr.-3.Acc.Sg.Fem alle all PRO.Indef.Attr.-3.Acc.Pl.Neut alle all PRO.Indef.Attr.-3.Acc.Pl.*6 alle all PRO.Indef.Attr.-3.Nom.Pl.*6 alle all PRO.Indef.Attr.-3.Acc.Sg.Fem alle all PRO.Indef.Attr.-3.Acc.Pl.Neut alle all PRO.Indef.Attr.-3.Acc.Pl.*6 alle all PRO.Indef.Attr.-3.Nom.Pl.*6 alle all PRO.Indef.Attr.-3.Acc.Pl.*6 alle all PRO.Indef.Attr.-3.Nom.Pl.*6 alle
1
2
3
4
5
alle PRO.Indef.Attr.-3.Nom.Pl.*6 (3) PRO.Indef.Attr.-3.Acc.Pl.*6 (3) PRO.Indef.Attr.-3.Acc.Pl.Neut (2) PRO.Indef.Attr.-3.Acc.Sg.Fem (2) PRO.Indef.Attr.-3.Nom.Pl.Fem (1) PRO.Indef.Attr.-3.Acc.Pl.Fem (1) PRO.Indef.Attr.-3.Acc.Pl.Masc (1)
eine ART.Indef.Acc.Sg.Masc (1)
haben VFIN.Haben.1.Sg.Pres.Ind (1)
ich PRO.Pers.Subst.1.Nom.Sg.*6 (1)
mensch N.Reg.Acc.Sg.Masc (1)
![]() |
![]() |
9 Einträge, 1 Seite |