Analyse d'association de mot

Problème d'algorithme

a marqué ce sujet comme résolu.

Bonjour à tous,

Je suis en train de travailler sur de l’analyse sémantique de texte et je bloc depuis quelques jours sur l’analyse d’association de mot.

Il existe de nombreux sites qui permettent d’analyser le contenu texte d’une page web et de retourner la fréquence de certaines expressions : par exemple http://alyze.info/.

De l’analyse de mot à mot, j’y arrive mais pas d’expression (association de mot).

Par exemple si vous faites l’analyse sur ce site : http://www.monfairepart.com/

Il faut faire remonter des expressions faire part, faire part naissance, carton d’invitation, etc.

Comment cette association de mot est-elle faite algorithmiquement parlant et couplée à une information de fréquence ?

Si vous avez des ressources, je suis preneur car je tourne en rond.

Merci d’avance. Florian

arglow, l’approche ’naïve’ où tu découpes et tu classes par fréquence, ça marche pas ici juste parce que tu découpes pas bien. Utilise une sliding window par exemple.

Regarde : Mon faire-part. Ton faire-part. Faire du cheval.

->

1
2
3
4
5
6
1 cheval
1 du
1 mon
1 ton
2 part
3 faire

C’est inutile, ça. En revanche, avec une sliding window de 2 tokens :

1
2
3
4
5
1 mon faire
1 ton faire
1 faire du
1 du cheval
2 faire part
+0 -0

Je n’ai pas compris ou tu voulais en venir Victor ?

arglow

Quelle partie est-ce que tu n’as pas compris ? Tu cherches bien, dans l’exemple que j’ai donné, à ce que faire part ait plus de poids que faire, non ?

+0 -0

La première liste de mot c’est quoi ? décomposition au mot d’un texte dans une table ? par exemple en php :

$mot[’cheval’] = 1; … $mot[’part’] = 2; etc

La recomposition à deux termes, tu as découpé par phrases et fait des tests d’association. Le truc c’est qu’il y a 3 termes par phrase ça peut aller, mais une phrase avec 5 ou 10 mots comment fais tu cela ? Mot1-> mot2 Mot1-> mot3 Mot1-> mot4 etc

puis Mot2-> mot3 mot3-> mot4 mot4-> mot5

Si tu veux c’est dans la mise en application en php de la réflexion ou j’ai du mal j’ai l’impression.

+0 -0

La première liste de mot c’est quoi ? décomposition au mot d’un texte dans une table ?

Oui.

La recomposition à deux termes, tu as découpé par phrases et fait des tests d’association.

Oui j’ai découpé par phrase, parce que je doute que tu veuilles des expressions qui s’étalent sur deux phrases. Non, je n’ai pas fait de tests.

Le truc c’est qu’il y a 3 termes par phrase ça peut aller, mais une phrase avec 5 ou 10 mots comment fais tu cela ?

Avec une sliding window, comme je l’ai dit plusieurs fois.

Prends la phrase de 5 mots A B C D E. Mot par mot, tu fais A, B, C, D, E. 5 tokens. Sliding window de 2 mots, tu fais A B, B C, C D, D E. 4 fenêtres.

+0 -0

Ok Victor, je te remercie de ta patience. C’est le sliding window qui m’est totalement inconnu. J’ai fait quelques recherches mais pour le moment pas trouvé grand chose. Je vais codé un petit truc et faire quelques recherches supplémentaires et je viendrais poster.

Je te remercie. Flo

J’avais 2 minutes alors j’ai pris un bout de papier, des ciseaux, un feutre, mon téléphone, et je t’ai fait un petit gif montrant une fenêtre qui glisse, une sliding window. C’est utile dans bon nombre de situations, et c’est un concept simple à comprendre, simple à illustrer, et simple à implémenter.

https://imgur.com/a/rgl8J

+4 -0

Salut Victor,

Bon même si je sens une touche de sarcasme dans ton commentaire :-), j’ai avancé et pu pondre un petit truc :

Je n’ai pas traité pour commencer par phrase mais texte entier.

Je viens apporter ma solution.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
$texte = "Tradition des plus charmantes, le faire-part s’associe aux temps forts de la vie qu’on souhaite partager avec nos proches. Annonciateur d’une nouvelle qui compte, pour les gens qui comptent, le faire-part se prépare avec goût et attention, et porte en lui les valeurs de vie de ses expéditeurs. Beaucoup d’émotions l’accompagnent, et il n’est pas rare qu’il soit très longtemps conservé par ses destinataires. Modèle original, classique ou chic, Carteland vous propose le modèle qui vous correspond.";

$texteModifie = strtolower(preg_replace('/[^a-z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœ]+/i',' ',$texte));
echo $texte.'<br />';
echo $texteModifie;

$mots = explode(" ",$texteModifie);

$pairs = array_map(null, $mots, array_slice($mots, 1));

$expression = '';
/*(1,2)(2, 3)(3, )*/
foreach ($pairs as list($x, $y)) {
    $exp = $x.' '.$y;
    $expression[] = $exp;
}
?>

Par contre les résultats ne sont pas probants du tout…

Faut que je vois comment je peux épurer les choses.

Merci en tout cas pour ton aide Victor.

+0 -0

Salut Victor,

Bon même si je sens une touche de sarcasme dans ton commentaire :-)

arglow

Absolument pas ! J’avoue toujours mes sarcasmes, là c’est pas le cas du tout, c’était pour te montrer visuellement le concept, je pense que ça aide beaucoup à retenir le nom lié au concept quand effectivement c’est une fenêtre qui glisse qui est nommée sliding window !

Pas de blague, c’était pour être sympa. :)

+1 -0

Si tu as des ressources de qualités sur l’analyse de champs lexical et champs sémantique… je prend.

arglow

Jette un oeil dans ce thread : https://news.ycombinator.com/item?id=12916498

Si au contraire tu veux pas apprendre ce "domaine" mais que t’as un but et que tu cherches une technique pour y arriver, hésite pas à demander.

+0 -0

Pour résumer grossièrement, c’est un modèle qui permet de passer aléatoirement à un état suivant en connaissant uniquement l’état précédent.

En reprenant l’exemple de l’article Wikipédia français avec le hamster, quand il est sur la roue (l’état présent), il a une probabilité de 0.2 d’y rester, et de 0.8 d’aller vers les copeaux (états suivants). Les états précédents (qu’il soit passé avant par la mangeoire, les copeaux ou la roue) n’influent pas sur la décision.

Ok entwanne. Merci pour cette vulgarisation.

Là ou je bloque c’est plus dans la formulation "pratique".

Dans mon exemple, d’analyse de texte, je ne sais pas par ou commencer : stocker tous les mots dans un tableau, toutes les associations de mots, … ?

Je n’arrive pas à matérialiser concrètement la base.

Salut Victor,

Alors j’essaye d’apprendre l’analyse de texte et plus précisément faire ressortir d’un texte les lexie et champs lexicaux. Cela passe par du nettoyage : suppression de la ponctuation, terme pauvre, etc mais aussi par l’analyse des expressions.

L’analyse de mot simple (composé d’un élément) ne pose pas de problème. Je retraite les éléments pauvres (le, la , des, un , mon, ton son, etc). J’arrive à voir et comprendre comment faire.

Toutefois, cela s’avère beaucoup plus compliqué pour moi pour comprendre comment analyser et traiter les BONNES associations de mots : 2 ou 3 mots.

Par exemple le terme "de" peut être un élément pauvre du langage pour comprendre un texte que je supprime. Toutefois dans l’expression : "faire part de mariage" ou "voiture de tourisme" il devient important.

Voila un peu mon but.

Je fais cela pour apprendre et me perfectionner : nouveau problème pour moi -> nouvelle fonction du langage à utiliser et surtout cela forme le cerveau à réfléchir autrement pour trouver une solution. Tout cela en php car c’est le langage que je maîtrise le mieux.

Après je cours peut être dans tous les sens comme un poulet sans tête par faute de connaissance du domaine.

Florian

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte