ich komme eigentlich aus der Perl-Gemeinde, möchte mir aber Python beibringen. Daher schreibe ich momentan einige meiner Programme in Python neu.
Ich schildere euch mal mein Problem:
Ich habe ein Textkorpus, in dem in jeder Zeile ein Wort steht und dahinter ein Wortarten-Tag (also ein Kürzel, das die Wortart angibt).
Ein Beispiel:
Nun möchte ich in einem Dictionary zählen, wie oft welches Wort mit welchem Wortarten-Tag im Korpus auftaucht. Denn manche Wörter gehören nicht eindeutig immer nur einer Wortart an, sondern können auch zu zwei Wortarten gerechnet werden.The AT
Fulton NP
County NN
Grand JJ
Jury NN
said VBD
Friday NR
an AT
investigation NN
of IN
Atlanta's NP$
recent JJ
primary NN
election NN
produced VBD
Hierzu benutze ich in Perl einen "Hash of Hashes". Der Code dazu sieht folgendermaßen aus:
Code: Alles auswählen
use strict;
# Dieses Array besteht aus den einzelnen Zeilen des Korpus:
# (die Subroutine namens 'lese_korpus' ist hier uninteressant)
my @trainingskorpus = lese_korpus("brown.train.tags.txt");
# Dieser Hash wird zum Zählen benutzt:
my %worttyp_tag_kombinationen;
# Dann wird in einer For-Schleife gezählt:
# (dabei trenne ich Wort und Tag mit einem regulären Ausdruck)
foreach my $zeile (@trainingskorpus) {
if ($zeile =~ /(\S+)\s+(\S+)/) {
$worttyp_tag_kombinationen{$1}->{$2}++;
}
}
Code: Alles auswählen
$VAR1 = {
'measles' => {
'NN' => 1
},
'Revolutionaries' => {
'NNS' => 1
},
'unsure' => {
'JJ' => 1
},
'Unconscionable' => {
'JJ' => 1
},
'proven' => {
'VBN' => 2
},
'perverted' => {
'VBN' => 1
},
'issue' => {
'VB' => 7,
'NN' => 55
},
'Village' => {
'NN' => 4
}
}
--> Genau das möchte ich jetzt in Python nachbilden. Das ist mir bisher aber mehr schlecht als recht gelungen. Mein bisheriger Code sieht so aus:
Code: Alles auswählen
# -*- coding: utf-8 -*-
trainingskorpus = file("brown.test.tags.txt", "r").readlines()
lexikon = {}
for zeile in trainingskorpus:
zeile = zeile.rstrip().split()
lexikon[zeile[0]] = {}
Vielen herzlichen Dank und frohe Weihnachten!
LG,
Dingels