Thread Problem beim taggen einer Datei via zweiter Datei. (6 answers)
Opened by efbe at 2008-06-02 22:19

efbe
 2008-06-02 22:19
#110648 #110648
User since
2008-06-02
2 Artikel
BenutzerIn
[default_avatar]
Hallo,

Ich (totaler Perlneuling) habe folgendes Problem:
Ich habe 2 Dateien. Eine enthaelt Nomina, Verben und die Anzahl wie haeufig diese miteinander vorkommen.
Hier ein Beispiel:

Zeit haben 26061
Zeit gehaben 4410
Zeit nehmen 3569
Zeit stehen 3443

Die ganze Datei hat ca. 170MB.

Die zweite Datei enthaelt ausschliesslich Verben.

Beispiel:

abgeben
abhalten
ablegen
ablehnen
abnehmen

Ich will jetzt die Verben in der ersten Datei mit Klammern[] markieren, die auch in der zweiten Datei vorkommen.
Ergebnis dieser Operation waere also zB

Zeit [abnehmen] 234

Mein Ansatz war bis jetzt der Folgende:
Zuerst die erste Datei in Spalten splitten... das funktioniert auch soweit.
Wenn ich dann allerdings nachsehen will ob das Wort in der 2. Datei vorkommt, gibt mir das Programm nichts mehr zurueck.

Meine Frage ist jetzt... was habe ich hier falschgemacht?
oder ist einfach mein kompletter Ansatz total bescheuert.
... in dem Fall... was waere ein guter Ansatz fuer mein Problem?

...ich sitze hier seit mehreren Tagen an diesem eigentlich ja simplen Problem und bin inzwischen total durch den Wind.
Bin also fuer jede Hilfe dankbar!

die Dateien habe ich auch mal ins Netz gestellt unter den folgenden Adressen:

http://kablooie.org/perl/tag.txt
http://kablooie.org/perl/koroesi.txt
http://kablooie.org/perl/svc_test_sdl.txt

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
#/usr/bin/perl
use strict 'vars';

{
my @words;
my $file_in;
my $file_test;
my @columns;
my @datafile;
my $line;
my @koroesi;
my %koroesi;
my $currentline;

$file_in = "svc_test_sdl.txt";
$file_test = "koroesi.txt";

open (INPUT, "$file_in") or die %!;
open (TESTFILE, "$file_test") or die %!;

@datafile = <INPUT>;
close (INPUT);

@koroesi = <TESTFILE>;
close (TESTFILE);
%koroesi = @koroesi;

{
foreach $line (@datafile){
        chomp $line;
        (@columns) = split (/ /,$line);

    $currentline = $columns[1];

        print "$currentline\n";

        if (exists($koroesi{$currentline}))
        {
                s/$currentline/\[$currentline\]/;
        }
}       
}
} 

View full thread Problem beim taggen einer Datei via zweiter Datei.