Aller au contenu

Comparateur logique de texte


vodnok

Messages recommandés

bonjour,

Il y a quelques mois j'avais déja posé une question pour mon travail de fin d'année à l'université et j'ai appris aujourd'hui que j'avais réussi. :iloveyou::iloveyou:

Je rentre dans ma dernière année et je dois chercher une sujet de mémoire. Je veux rester dans le net et j'ai quelques idées intéressantes.

Cependant j'aurais une question...

Je voudrais savoir ou je peux trouver de l'information sur des algos de comparaisons textuelles.

Le but est de déterminer si 2 textes parlent de la même chose.

2 niveaux:

1/ Ils parlent du même thème : CPU, foot, ect ect

2/ Iils parlent de la même chose : Si les news sont identiques dans leur propos. Si ils parlents tous 2 de la PSP (par exemple) et bien determiner si ils donnent la même info. Par exemple: "La PSP sera vendue moins chère le 1 novembre"

Je recherche des infos sur des algo de comparaison.

Merci,

Lien vers le commentaire
Partager sur d’autres sites

Je ne saurais pas t'aider, mais cherche sur google ou autres sites de ressources théoriques à propos des algos d'intelligence artificielle. Tu y trouveras ton bonheur. Après il n'est pas dit que ce soit simple à implémenter...

L'IA n'est définitivement pas mon truc. Mais j'ai souvenir d'avoir croisé un "paper" décrivant une méthode pour ce que tu veux faire...

edit: inutile de préciser que ce genre de programme appelant des routines d'IA se code parfaitement bien en LISP si tu as le courage... Tu risque d'user et abuser de récursivité donc le LISP est fait pour toi :)

Lien vers le commentaire
Partager sur d’autres sites

(Ha (non (pas (ça, (pas (le (lisp (J'en (ai (déja (manger (cette (année.

(Merci (de (vos (réponses, (je (vais (continer (ma (petite (recherche

))))))))))))))))))))))))))))))))))))))))))))))) (scheme inside) (private joke)

Tu as fermé deux fois plus de parenthèses que tu en a ouvert :francais:

:mdr2::D:mdr:

En tout cas, si tu y arrive, Partage ! 5929.gif

Lien vers le commentaire
Partager sur d’autres sites

"Si j'y arrive" :byebye:

Je ne garderai certainement pas ça dans un mémoire...

Mais la soluce ne sera pas pour de suite :arrow: (c'est pour fin juin ou début septembre)

Enfin si je choisi ce domaine pour mon mémoire je ferai sans doute un petit topic pour suivre les évolutions et écouter vos avis.

Je n'ai pas encore développé l'idée générale que je vais proposer mais je compte utiliser cela dans le cadre d'une méthode de stockage d'informations et de recherche.

J'attend d'avoir les critères obligatoire vis à vis de l'unif pour contacter le prof et fixer les objectifs.

Je taff le jour et j'ai cours le soir donc je voudrais pas non plus faire trop compliqué. :arrow: Paresseux inside.

Lien vers le commentaire
Partager sur d’autres sites

Si j'ai bien compris, la première idée est de faire de la classification de texte par thème.

Voilà comment je procède personnellement.

Je commence par une phase d'apprentissage où je fais un tableau de thèmes et ensuite j'associe à ce tableau les documents que j'ai préalablement classés à la main.

L'ordinateur me construit un modèle de classification (cf plus bas).

Ensuite je n'ai plus qu'à lui injecter un nouveau document pour qu'il me dise dans quel thème il le classerait.

La création du modèle:

1) je construis un dictionnaire

Pour cela je récupère tous les mots de tous les documents que j'ai pré-classés à la main.

Ces mots sont identifiés comme des suites de caractères alphanumériques. Tous les autres caractères sont ignorés.

Ensuite, j'enlève les mots qui font moins de 2 lettres (non significatifs).

Pour chaque mot, j''extrais sa racine grâce à la bibliothèque Snowball:

http://snowball.tartarus.org/

et je regroupe les mots par racine.

Les racines qui n'apparaissent qu'une fois sont supprimées. De même celles qui sont trop fréquentes (plus d'une fois sur 2 documents) sont enlevées.

Ainsi j'obtiens un dictionnaire de mots assez significatifs.

2) l'apprentissage

Pour l'apprentissage j'utilise les machines à vecteurs de support et notamment la bibliothèque libsvm:

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Chaque document est transformé en un vecteur de mots du dictionnaire préalablement créé comme on le fait habituellement en text mining.

Le vecteur est normalisé et associé à sa classe (ie son thème)

Une fois tous les vecteurs créés, on les donne à manger au moteur de SVM.

Celui-ci retourne le modèle de classification.

Attention: ce processus peut être lent et gourmand: compter 50ko de cache par document pour que la classification se passe bien en général

3) la classification

Pour chaque nouveau document, on crée son vecteur normalisé en fonction du dictionnaire et on le donne à classer au SVM.

Les résultats obtenus sont assez bons: on dépasse facilement les 85% de pertinence quand les paramètres du moteur de SVM sont bien ajustés.

Pour ce qui est d'analyser le contenu précisément une fois le texte classé, là je ne saurais vraiment te conseiller...

Bon je n'ai pas vraiment le temps de tout développer dans ce post, mais pour plus de détail:

sdroux at gmail dot com

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup pour les références, je vais lire tout cela demain

J'avais aussi pensé à créer une sorte de graph qui representerait une information. Ici on crée un vecteur. Très interessant.

Pour les graphes, regarde du côté des réseaux bayésiens, c'est peut-être un moyen de résoudre le second point de ton problème.

Mais la construction automatique d'un réseau bayésien peut se révéler assez compliquée...

Lien vers le commentaire
Partager sur d’autres sites

Effectivement les réseaux de neurones me font un peu peur :transpi:

La méthode de construction de dictionnaire à partir des racines des mots je n’y avais pas pensé.

Par contre pour la classification et le groupement, je dois intégrer un facteur temporel. Je ne peux pas mettre 2 documents ensemble si par le 1ier a été fait un an avant le second. Je ne sais pas si SVM intègre cette dimension.

Pour l’exploitation et recherche sur les documents classés, SVM me semble un peu hard. Mais je vais un peu plus étudier la chose.

Lien vers le commentaire
Partager sur d’autres sites

en fait, la difficulté réside d'une part de le bon choix des vecteurs, car il faut qu'ils soient très représentatif de la sementique des textes, et d'autre part dans un classifieur compétent.

les SVM ont la particularité d'être de bons classifieurs dans les espaces de grandes dimensions et pour lesquels on ne disposent que d'un faible nombre d'apprentissages.

il faut bien voir que la construction du vecteur d'attributs d'un texte est completement décorellée du choix de ton classifieur, ainsi (ex bête), si dans ton vecteur, tu as un élément qui prend en compte la date, alors cela sera pris en compte lors de la classif (peut importe que ce soit un SVM, un LMS ou un réseau de neurones).

l'avantage de la solution réseau de neurones pour la classif, c'est la capacité forte à généraliser, que tu retrouve difficilement dans les autres méthodes de classif. Par contre, il n'y a pas de solutions direct aux problèmes de dimensionnement (combien de couche, combien de neurones par couche...)...

enfin, on trouve une quantité d'article impressionnante sur le data-mining sur le net, googlelise un coup, et tu devrais trouver ton bonheur :zarb:

Lien vers le commentaire
Partager sur d’autres sites

Effectivement les réseaux de neurones me font un peu peur :zarb:

La méthode de construction de dictionnaire à partir des racines des mots je n’y avais pas pensé.

Par contre pour la classification et le groupement, je dois intégrer un facteur temporel. Je ne peux pas mettre 2 documents ensemble si par le 1ier a été fait un an avant le second. Je ne sais pas si SVM intègre cette dimension.

Pour l’exploitation et recherche sur les documents classés, SVM me semble un peu hard. Mais je vais un peu plus étudier la chose.

En fait, je parlais des réseaux bayésiens et non des réseaux de neurones.

Les réseaux bayésiens donnent souvent des résultats plus rapidement.

Les vecteurs de texte faits avec les documents ne prennent pas en compte le temps. Mais tu peux très bien trouver un autre modèle de vecteur qui le prend en compte.

Ou plus simplement traiter le temps à part.

En général pour ce genre de paramètre extérieur, on utilise un filtre bayésien (plus simple qu'un réseau) en surcouche des SVM.

Tu classifies avec tes SVM puis tu injectes le résultat dans le filtre avec d'autres paramètres et tu obtiens le classement définitif.

Pour ton dernier point, je ne comprends pas ce que tu entends par exploitation et recherche sur les documents classés.

Lien vers le commentaire
Partager sur d’autres sites

La recherche:

En entrant un ou plusieur mots, on recherche les documents où ces mots sont le plus important. Cela peut aussi être une phrase ou pourquoi pas un texte. Je n'ai pas encore determiné cela.

ok mais ça me semble plutôt décorrellé du travail de classification.

Je ne vois pas en quoi les techniques de data/text mining pourraient t'aider sur cette partie.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...