Bonsoir,
J'ai fais un code qui permet de lire des lignes à partir de deux fichiers, j'ai utilisé un hash de hash
Le problème c'est que ces résultats sont triés automatiques par les hash, alors que moi je veux qu'elle soit triés selon des valeurs particulières:
les fichier d'origine sont triés et on les deux cette forme:
1 Q0 DerOpthalmologe/80950033 0 5.960979448916666 TF_IDF
1 Q0 DerRadiologe/80380710 1 5.836199971080442 TF_IDF
1 Q0 MonatsschriftKinderheilkunde/01480013 2 5.836199971080442 TF_IDF
1 Q0 DerHautarzt/90500127 3 5.601683110384085 TF_IDF
1 Q0 DerAnaesthesist/80470024 4 5.4913531937974644 TF_IDF
2 Q0 ZfuerKardiologie/90880788 0 7.950456651153142 TF_IDF
2 Q0 DerChirurg/90701174 1 7.677017765795651 TF_IDF
2 Q0 DerUnfallchirurg/81010830 2 7.503564829783422 TF_IDF
2 Q0 DerChirurg/80690854 3 7.503564829783422 TF_IDF
le problème c'est que les scores c'est à dire le 4ème champs de la ligne n'est plus triés, les valeurs sont hasard, de même pour le premier champs ou on peut trouver le numéro 103 au début puis 19, comment triés ces résultats selon le champs 1 puis le champs 4?
voila mon code
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #!/usr/bin/perl print "bonjour\n"; open(FIC, $ARGV[0]); open(FICC, $ARGV[1]); my @a = (); my @b = (); my $l=0; my $v=0; print "choisis un nom de fichier\n"; chomp(my $fic2=<STDIN>); open(FIC2, ">$fic2"); $i=0; $j=0; $u=0; while (<FIC>) { my $ligne=$_; @aa=split(/\s/,$ligne); $who = $aa[0]; $key=$aa[2]; $HoH{$who}{$key} = $aa[4]; $i++; } while (<FICC>) { my $ligne=$_; @aa=split(/\s/,$ligne); $who = $aa[0]; $key=$aa[2]; $HoH2{$who}{$key} = $aa[4]; $i++; } print "\n"; foreach my $k ( keys %HoH2){ #print "$k: "; $i=0; foreach ( keys%{HoH2{$k}}){ $l= (0.1*$HoH2{$k}{$_})+ (0.9*$HoH{$k}{$_}); print FIC2 ("$k Q0 $_ $i $l TF_IDF \n"); $i++; #print "$kk \n"; }}
Partager