Thread Problem mit einem Hash of Hashes
(10 answers)
Opened by Dingels at 2008-12-11 19:09
Hallo zusammen,
ich habe ein annotiertes Textkorpus vorliegen. In jeder Zeile steht ein einziges Wort, dahinter ein Wortarten-Tag. Mit einem Hash of Hashes habe ich jetzt gezählt, welches Wort mit welchem Wortarten-Tag wie häufig vorkommt. Die Struktur dieses Hashs sieht folgendermaßen aus: $VAR1 = 'Haus'; $VAR2 = { 'VNP' => 3, 'NE' => 17, 'NN' => 4 }; $VAR3 = 'Garten'; $VAR4 = { 'NE' => 12, 'NN' => 35 }; $VAR5 = 'Auto'; $VAR6 = { 'NGB' => 465, 'VP' => 142, 'MO' => 1, 'VE' => 7, 'NN' => 2 }; Dann habe ich den äußeren Hash nach dem Alphabet sortiert und die inneren Hashes nach Häufigkeit absteigend sortiert. Dann hab ich die sortierten Ergebnisse Zeile für Zeile in ein Array geschrieben. Die Struktur des Arrays sieht also jetzt folgendermaßen aus : $VAR1 = 'Auto NGB 465'; $VAR2 = 'Auto VP 142'; $VAR3 = 'Auto VE 7'; $VAR4 = 'Auto NN 2'; $VAR5 = 'Auto MO 1'; $VAR6 = 'Garten NN 35'; $VAR7 = 'Garten NE 12'; $VAR8 = 'Haus NE 17'; $VAR9 = 'Haus NN 4'; $VAR10 = 'Haus VNP 3'; Jetzt möchte ich zu jedem Worttyp aber nur den Eintrag im Array behalten, der die höchste Häufigkeit besitzt. D.h. zum Worttyp 'Auto' möchte ich nur die erste Zeile behalten, zum Worttyp 'Garten' nur die erste Zeile und zum Worttyp 'Haus' nur die erste Zeile. Folgendes soll also später nur noch im Array stehen: $VAR1 = 'Auto NGB 465'; $VAR2 = 'Garten NN 35'; $VAR3 = 'Haus NE 17'; Meine Frage: Wie schaffe ich es, pro Worttyp alle Einträge außer den mit dem höchsten Häufigkeitswert zu entfernen? Geht das nur im Array oder auch schon in dem Hash? Wenn ja, wie? Ich hab schon zig Sachen ausprobiert, aber es klappt nichts. Habt ihr vielleicht eine Idee? Vielen Dank. :) MfG, Dingels |