Recuperer tous les mots d'une page html

karine -  
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !

Je programme en java et je voudrais récuperer tous les mots (et peut-etre le nombre d'occurences de chaque mot) d'une page html.

Quelle methode me conseillez-vous ?

Merci
A voir également:

9 réponses

sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
si le nombre de mots peut etre grand tu devrai chercher une methode de Hachage
0
karine
 
Oui j'ai pensé faire une table de hachage pour compter les mots.

Mais mon problème c'est pour récuperer tous les mots de la page. Car en fait je recupere un flux de reponse d'un serveur Web et je voudrais recuperer les mots quand j'ai des pages html.

Est-ce que je dois les mettre dans un fichier d'abord (j'ai un peur pour la vitesse d'execution) ? Ou bien existe-t-il une autre solution ?

Merci
0
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
tu peut traiter le flux directement (allocation d'objets directement au cours du traitement, l'utilisation d'un dictionnaire pourrais te faciliter la tache)
sachant qu'un mot commence par une "lettre" et fini par une "non lettre"
lettres: abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
-
éèàçîù (et leurs majuscules)

Le signe moins (-) est pour les mots composés
0
karine
 
excuses-moi mais qu'est-ce que tu veux dire par allocation d'objets ?

Et quand tu parles de dictionnaire, tu veux dire que je dois le creer et le remplir avec les mots de la page ou bien utiliser un dictionnaire qui existe déjà ?

Merci pour ton aide !
0

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

Posez votre question
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
c'est a toi de créer le dictionnaire (les mots de la page)
en gros l'algorithme sera:
creer dictionnaire
mot=0;
tant que (! flux.eof)
{
  car=lire_caractere_flux
  si (car est lettre)
  {
     si (! mot)
     {
        mot_courant=vide
        mot=1
     }
     mot_courant.ajout_caractere(car)
  }
   sinon
  {
     si (mot)
     {
         si (dictionnaire.contient(mot_courant))
         {
            dictionnaire(mot_courant).valeur++
         }
          sinon
         {
            dictionnaire.ajouter(mot_courant)
            dictionnaire(mot_courant).valeur=1
         }
         mot=0
     }
  }
}
0
karine
 
Merci,

je vais essayer ça.
0
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
c'est juste un algorithme car je connais tres peu java (les notions de base c'est tout)
0
karine
 
Maintenant mon problème c'est qu'en lisant tous les mots, j'ai aussi le code html qui est récupéré.

Moi je voudrais juste les mots qui ont du "sens", qui me disent de quoi parle la page.

Est-ce que quelqu'un a déjà fait ça ?

J'ai essayé avec une fonction qui enlève les balises html mais ça me donne une erreur java.lang.OutOfMemoryError (c'est une fonction récursive).
En plus meme avec ça, je garde les fonctions javascript par exemple.

Bref, j'aurais bien besoin d'un peu d'aide ;-)

Merci!
0
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
il y a une methode (mais c'est approximatif!)
tu compte les caracteres "<" (compteur++) et ">" (compteur--) tu prend en compte les caracteres que si ton compteur est egal à zero (bien sur c'est 0 sa valeur d'initialisation) ainsi, tu es sur que tu es en dehors d'une balise, bien sur les balises sont aussi des separateurs de mots (non lettre)
0