(debutant )Frequence des mots

Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007 - 26 mai 2007 à 17:57
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007 - 1 juin 2007 à 13:17
Salut tout le monde,
Je voudrais savoir comment calculer  la Frequence des mots dans  un corpus composé de plusieurs documents..
la sortie devrait ressembler à ça:
index du document - mot - freqence

Exemple : Doc:1 { salon: 3,table:1}
                  Doc:2 { bilan:1, cheque:4} etc..
Avez vous  svp une idee!?
merci

9 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 mai 2007 à 00:05
Salut:

Je ne vois pas où est le problème.

Il faut juste:

1. Créer une structure de données (tableau, liste, ...)
Personnellement je te conseille d'utiliser une liste.
 
2. lire le fichier ligne par ligne
3. Extraire les jetons de chaque ligne:
 - Voir si la liste contient cet élément si oui incrémenter le nombre d'occurence
 - Sinon ajouter une nouvelle entrée de cet élément dans la liste.

4. Répèter ces points.

Ou bien:

Extraire tous les mots du fichier, puis le mettre dans un tableau
Trier ce tableau
Compter le nombre d'occurence de chaque élément.
0
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007
27 mai 2007 à 00:31
merci , je veux utiliser au fait un HashMap comme structure de données,  pourquoi trouves tu une liste meilleure?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
27 mai 2007 à 00:37
Salut:

Je trouve une liste la structure de données la plus adéquate pour deux choses:

1. On est en train d'ajouter les éléments au fûr et à mesure de notre recherche; création de nouvelles entrées.

2. On est en train de réaliser un accès séquentielle lors des éléments existents.

ça n'empêches pas que d'autres structures de données sont aussi favorables, une liste traduit parfaitement ce que je pense c'est tout.

Remarque:
Tu peux utiliser un HashSet pour unifier le tableaux, enlever les doublons.
0
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007
31 mai 2007 à 12:58
Salut :
Cela marche pour un seul et unique fichier, si je veux  obtenir le nombre d'occurence des mots dans plusieurs fichiers simultanément, il faudra implementer une "matrice-document-terme" et ça, ça me depasse!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007
31 mai 2007 à 12:59
Salut :
Cela marche pour un seul et unique fichier, si je veux  obtenir le nombre d'occurences des mots dans plusieurs fichiers simultanément, il faudra implementer une "matrice-document-terme" et ça, ça me depasse!!
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
31 mai 2007 à 13:13
Salut:

Je ne vois pas où est le problème. Que ce soit un fichier ou plusieurs c'est le même procédé.

Quel problème as tu rencontré?

---------------------------------------------------------------------------------
A.B. : Qui veut faire quelque chose trouve un moyen.
       Qui ne veut faire rien trouve un excuse
0
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007
31 mai 2007 à 13:38
D'abord y'a un probleme avec la methode StringTokenizer , j'arrive pas a splitter en tokens tous le fichier. y'a aussi l'indexation des differents documents qui composent le corpus! Encore une fois  chaque document   est representé par son index suivi du nombre d'occurrences des mots ou tokens qu'il contient:.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
31 mai 2007 à 21:31
Salut:

C'est ligne par ligne que tu cherches les tokens.
Si le fichier n'est pas long tu peux mettre tout le contenu de ce fichier dans une seul chaine de caractères.
Pour faire ça tu peux utiliser:
1. La méthode readFully ()
2. StringBuffer.
0
Palazzo Messages postés 9 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 7 juin 2007
1 juin 2007 à 13:17
Je me suis mal fait comprendre peut-etre.mon idee etait d'implementer un matrice document-terme zu implementieren! Seulement j'ai des prblemes avec mon code.
<!-- --><!-- Created by AbiWord, a free, Open Source wordprocessor. --><!-- For more information visit http://www.abisource.com. --><!-- --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><title></title><style type="text/css"><!--
#toc,
.toc,
.mw-warning {
border: 1px solid #aaa;
background-color: #f9f9f9;
padding: 5px;
font-size: 95%;
}
#toc h2,
.toc h2 {
display: inline;
border: none;
padding: 0;
font-size: 100%;
font-weight: bold;
}
#toc #toctitle,
.toc #toctitle,
#toc .toctitle,
.toc .toctitle {
text-align: center;
}
#toc ul,
.toc ul {
list-style-type: none;
list-style-image: none;
margin-left: 0;
padding-left: 0;
text-align: left;
}
#toc ul ul,
.toc ul ul {
margin: 0 0 0 2em;
}
#toc .toctoggle,
.toc .toctoggle {
font-size: 94%;
}@media print, projection, embossed {
body {
padding-top:1in;
padding-bottom:1in;
padding-left:1in;
padding-right:1in;
}
}
body {
font-family:'Times New Roman';
color:#000000;
widows:2;
font-style:normal;
text-indent:0in;
font-variant:normal;
font-size:12pt;
text-decoration:none;
font-weight:normal;
text-align:left;
}
table {
}
td {
border-collapse:collapse;
text-align:left;
vertical-align:top;
}
p, h1, h2, h3, li {
color:#000000;
font-family:'Times New Roman';
font-size:12pt;
text-align:left;
vertical-align:normal;
}
--></style>
<colgroup><col /><col /><col /><col /><col /></colgroup>----
, TERME 1, TERME 2, TERME 3, TERME 4, ----
DOC 1, 2, 5, 8, 5, ----
DOC 2, 1, 4, 3, 7

import java.io.*;
import java.util.*;

 
class CorpVectors
{
    int[][] docVector;
    
    int docAnz;
    int termeAnz;    
    
    CorpVectors(AllDocs Corpus)
    {    docAnz= Corpus.allDocsArray.length;  
        termeAnz= Corpus.indexSetArray.length;  // nbre de Textes
        System.out.println("length: " +termeAnz);
        docVector = new int[docAnz][termeAnz];    
        
    }
 
 
 
   
    void fillDocVector(AllDocs Corpus)
    {    int i;    //doc
        int j;    //term
        
        for(i=0; i<this.docAnz; i++)
        {    for(j=0; j<this.termeAnz; j++)
            {    this.docVector[i][j]= frequence(i, j, Corpus);
 
            }//for
        }//for
        
    }//fillDocVector
  */
    int frequence(int docInd, int termInd, AllDocs Corpus)
    {    int counter=0;
        String Word= (String)Corpus.indexSetArray[termInd];
        AllDocs.Document Doc= (AllDocs.Document) Corpus.allDocsArray[docInd];
        int k;
        
 
        for(k=0; k< Doc.index.length; k++)
        {    if( Doc.index[k].indexOf( Word)!= -1)
            
                counter++;
        }
            //if((termInd==6 || termInd==33)&& counter!=0)    
            //System.out.println(docInd+"/"+suchWort+" ->"+counter);
        return(counter);
    }//frequence()
 
 
 
    void docVectorToFile(AllDocs Corpus)
    {    int i;    //doc
        int j;    //term
        
            
        try
        {                            
            for(i=0; i<this.docAnz; i++)
            {    FileWriter fw= new FileWriter("docVector.txt", true);
                BufferedWriter fwBuff= new BufferedWriter(fw);
 
                
                fwBuff.write("\n \nDOC " + i + ": " + ((AllDocs.Document)Corpus.allDocsArray[i]).title   + "\n");                
                for(j=0; j<this.termeAnz; j++)
                {    fwBuff.write("DOC " + i + " | TERM " + j + "-frequence-->  " + this.docVector[i][j] + "\n");
                    //System.out.println("DOC " + i + " | TERM " + j + "-frequence-->  " + this.docVector[i][j]);
                }//for
                
                fwBuff.close();                    
            }//for
            
        }
        catch (IOException e)
        {    System.out.println("Error docVectorToFile() -- " + e.toString());
        }
 
            
    }//docVectorToFile()
}
 
        
    
0
Rejoignez-nous