Thread 2 Dateien vergleichen aber.... (14 answers)
Opened by FDX at 2013-08-13 16:47

Gast FDX
 2013-08-13 16:47
#169542 #169542
Hallo Community,

ich habe ein Problem und hoffe als Newbie Hilfestellung zu bekommen.

Ich habe 2 Dateien die fast gleich sind. ich muss die beiden Dateien in eine in eine Vereinen. Jedes Wort des Satzes ist untereinander geschrieben.Die Sache ist, dass die Eigenschaften nach dem Wort (in der 2 Datei) immer nach dem Wort kommen muss und erst dann die anderen der ersten Datei. (Die unterschrichenen)

Datei 1 enthält Sätze wie folgend:

<S> <S>+BSTag
Ona o+Pron+Demons+A3sg+Pnon+Dat o+Pron+Pers+A3sg+Pnon+Dat on+Num+Card^DB+Noun+Zero+A3sg+Pnon+Dat Ona+Noun+Prop+A3sg+Pnon+Nom ona+Verb+Pos+Imp+A2sg
her her+Det
şeyimi şey+Noun+A3sg+P1sg+Acc
verdim ver+Verb+Pos+Past+A1sg
. .+?
</S> </S>+ESTag
<S> <S>+BSTag
Bir bir+Adverb bir+Det bir+Num+Card bir+Adj Bir+Noun+Prop+A3sg+Pnon+Nom
sigara sigara+Noun+A3sg+Pnon+Nom
yakmıştı yak+Verb+Pos^DB+Adj+Zero yak+Verb+Pos+Narr+Past+A3sg ^DB+Verb+Zero+Past+A3sg
. .+?
</S> </S>+ESTag

Ordner 2 enthält die selben Sätze in der Form:

Ona o+Pron+Pers+A3sg+Pnon+Dat
her her+Det
şeyimi şey+Noun+A3sg+P1sg+Acc
verdim ver+Verb+Pos+Past+A1sg
. .+Punc

Bir bir+Det
sigara sigara+Noun+A3sg+Pnon+Nom
yakmıştı yak+Verb+Pos+Narr+Past+A3sg
. .+Punc

Ausgabe muss Aussehen:

<S> <S>+BSTag
Ona o+Pron+Pers+A3sg+Pnon+Dat o+Pron+Demons+A3sg+Pnon+Dat on+Num+Card^DB+Noun+Zero+A3sg+Pnon+Dat Ona+Noun+Prop+A3sg+Pnon+Nom ona+Verb+Pos+Imp+A2sg
her her+Det
şeyimi şey+Noun+A3sg+P1sg+Acc
verdim ver+Verb+Pos+Past+A1sg
. .+?
</S> </S>+ESTag
<S> <S>+BSTag
Bir bir+Det bir+Adverb bir+Num+Card bir+Adj Bir+Noun+Prop+A3sg+Pnon+Nom
sigara sigara+Noun+A3sg+Pnon+Nom
yakmıştı yak+Verb+Pos+Narr+Past+A3sg yak+Verb+Pos^DB+Adj+Zero^DB+Verb+Zero+Past+A3sg
. .+?
</S> </S>+ESTag

Für die Vereinigung, habe ich mithilfe des Forums, diesen Code benutzt:
Code: (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
my $in_file = "turtb_detached_train.ambig";
my $in_file2 = "test9STag.txt";
my $gold_standard = "GoldFormat.txt";

my @lines_file1 = ();
my %hash = ();


# einlesen der 1. Datei
open(R_FILEONE,"<$in_file") or die $!;
while(my $line = <R_FILEONE>){
push(@lines_file1,$line);
}
close R_FILEONE;

# einlesen der 2. Datei
open(R_FILETWO,"<$in_file2") or die $!;
while(my $line = <R_FILETWO>){
chomp $line;
$hash{$line} = 1;
}
close R_FILETWO;

# überprüfen, ob die Zeile aus der 1.Datei eine Zahl aus der 2. Datei enthält
foreach(@lines_file1){
my $check = substr($_,394,16); # Zahl in der langen Zeile raussuchen
if($hash{$check}){
$_ = '';
}
}

# Zieldatei schreiben
open(W_TARGET,">$gold_standard") or die $!;
foreach(@lines_file1){
print W_TARGET $_ if($_);
}
close W_TARGET;


Bin für jede Kritik & Antwort sehr dankbar !

modedit Editiert von GwenDragon: Code-Tags repariert
Last edited: 2013-08-13 16:55:45 +0200 (CEST)

View full thread 2 Dateien vergleichen aber....