TP 2 : Indexation, Pondération

Download Report

Transcript TP 2 : Indexation, Pondération

M2Pro Info – MIAGE
Indexation et
d’Informaion
Recherche
TP 2 : Indexation, Pond´
eration
L’objectif de ce TP est de parvenir `
a calculer le poids des termes pr´esents dans le corpus du Monde, d´ej`
a
utilis´e au TP pr´ec´edent.
/public/iri/lemonde/
Nous utiliserons la formule du tf.idf vue en cours :
wt,d = tft,d × log(
n
)
dft
o`
u:
—
—
—
—
wt,d est le poids du terme t dans le document d, relativement au corpus.
tft,d est le nombre d’occurrences du terme t dans le document d (term frequency).
n est le nombre de documents dans le corpus.
dft est le nombre de documents du corpus contenant le terme t (document frequency).
1. En vous inspirant du code ´ecrit lors du TP pr´ec´edent pour obtenir les mots les plus fr´equents,
´ecrivez la m´ethode getDocumentFrequency :
private static HashMap<String, Integer> getDocumentFrequency(String dirName,
Normalizer normalizer, boolean removeStopWords) throws IOException
qui calcule le df, c’est-`
a-dire le nombre de documents pour chaque mot apparaissant dans la
collection.
2. Tester avec les deux m´ethodes de normalisation, avec ou sans la suppression des mots vides.
3. Quelle est la liste la plus longue ? La plus courte ?
4. Cr´eez la m´ethode getTfIdf :
public static HashMap<String, Double> getTfIdf(String fileName, HashMap<String, Integer> dfs,
int documentNumber, Normalizer normalizer, boolean removeStopWords) throws IOException
qui calcule le tf.idf des mots d’un fichier en fonction des df d´ej`a calcul´es, du nombre de documents
et de la m´ethode de normalisation.
´
5. Ecrivez
enfin la m´ethode getWeightFiles :
public static void getWeightFiles(String inDirName, String outDirName, Normalizer normalizer,
boolean removeStopWords)
qui cr´ee, pour chaque fichier d’un r´epertoire, un nouveau fichier contenant les poids de chaque
mot. Ce fichier prendra la forme de deux colonnes (mot et poids) s´epar´ees par une tabulation. Les
mots devront ˆetre plac´es par ordre alphab´etique.
Les nouveaux fichiers auront pour extension .poids et seront ´ecrits dans le r´epertoire outDirName.
Par exemple, pour le stemming, en conservant les mots outils, sur le texte texte.95-1.txt.poids,
on obtient :
1
"
",
(...)
,
.
000
120
1995
21
450
6
a
accord
arch´
eolog
au
benyamin
bureau
ce
cet
chef
coeur
colon
cons´
ecut
0.7410032017375805
1.6770965609079151
3.979681653901961
0.09434242152191367
0.11375174128213364
2.8810693652338513
3.979681653901961
2.7269186854065928
7.148433091587592
4.672828834461906
2.3702437414678603
0.6322400155446289
2.59338729278207
4.672828834461906
0.5139457511022343
3.2865344733420154
3.979681653901961
1.0893098960057963
3.3541931218158303
3.0633909220278057
4.672828834461906
3.979681653901961
3.979681653901961
6. Testez avec la segmentation simple et la racinisation, avec ou sans suppression des mots vides.
7. Quel est le mot qui a le plus gros poids ? Celui qui a le plus petit poids ?
8. Quelle est la liste la plus longue ? La plus courte ? Selon quelle proportion la suppression des mots
vides permet-elle de r´eduire la taille de l’index ?
2