Ivation > Autres > Comment récupérer les mots clés importants dans un titre en PHP ?

Comment récupérer les mots clés importants dans un titre en PHP ?

Le 23/05/2008 à 09:00 - par Camille - dans Autres

Je cherche à développer une sorte d'algorithmique en PHP, c'est pas évident donc je fais appel à vous (si vous savez). Le but est de trouver les mots clés importants dans une phrase/un titre en PHP.

Exemple : Office 2007 : ODF, PDF et XPS au menu du Service Pack 2 (via PC INpact).
Mots clés importants : Office 2007 (et éventuellement Service Pack 2).

En gros, je peux faire un explode() qui me trouverait tous les mots de la phrase, c'est pas compliqué jusque là. Ensuite j'enlève les mots de moins de 3 lettres ("au", "du", etc.) mais après ?

Si on suit cette logique, voici les mots clés restants : Office, 2007, ODF, PDF, XPS, menu, Service, Pack (cf. le code ci-dessous).

Code : PHP
 1: <?php
 2: $phrase = 'Office 2007 : ODF, PDF et XPS au menu du Service Pack 2';
 3: $phrase = str_replace( array( ',', ';', '.' ), '', $phrase );
 4: 
 5: $mots_pertinents = array();
 6: $list_mots = explode( ' ', $phrase );
 7: 
 8: foreach( $list_mots AS $mot )
 9: {
10:     if( strlen( trim( $mot ) ) >= 3 )
11:     {
12:         $mots_pertinents[] = trim( $mot );
13:     }
14: }
15: 
16: echo implode( ', ', $mots_pertinents );
17: ?>

On a bien Office et 2007, et Service Pack mais le 2 n'est plus là, c'est ce qui tout à fait normal. En fait, ce que je cherche à faire, c'est en quelque sorte une intelligence artificielle et j'avoue que ce n'est pas la chose la plus facile à développer..

Z'avez des idées ? Merci d'avance en tout cas. :)

Derniers articles Flux RSS de Ivation

Tous les commentaires

Avatar de arno31
arno31

Salut,
Ton idée est pas mal en supprimant les mots de moins de 3 lettres mais ça ne résout pas tout.
Comme ça, à l'instinct, je pense à plusieurs méthodes qui sont cumulables:
- d'abord au lieu de supprimer les mots de moins de 3 lettres, faire une liste des mots à supprimer : le au du des ... l'exécution devrait être plus couteuse mais plus fiable.
- mais le top serait sans doute de faire une analyse syntaxique détaillée. Mais là il faut émettre pleins d'hypothèses.
- sinon tu peux plus simplement faire un algorithme semi-automatique qui apprend au fur et à mesure : il te découpe les mots tu valide ceux qui t'intéressent. Ceux-ci seront reconnus automatiquement par la suite mais tu pourras toujours sélectionnés de nouveaux mots. La partie manuelle sera plus longue au début mais au fur et à mesure, la listedes termes à reconnaître se complétant, ce sera de plus en plus performant.

#1 - Le 23/05/2008 à 10:47 - Répondre

Avatar de Vinchz
Vinchz

Je pense que tu as fait le principal en éliminant les mots de moins de trois lettres, ceci constituant la partie mécanique de la démarche. En effet, les mots-clés diffèrent selon les individus et dans ta phrase, moi je vois d'autres mots-clés. Tout ça pour dire que c'est vraiment variable et je doute qu'on puisse programmer un tel processus, les mots-clés dépendant du contexte.

Maintenant, je salue le boulot, c'est pas évident ce genre de choses et j'espère que tu arriveras au mieux à imiter l'interprétation humaine de mots-clés.

#2 - Le 23/05/2008 à 11:48 - Répondre

Avatar de Pixool
Pixool

C'est un des script que je suis entrain de développer pour bloodeo pour pouvoir proposer des tag rien qu'à partir d'un texte.
Alors j'ai pensé au début tu supprime tout ce qu'i n'est pas mot-clé (le, la,...) après enlever les verbe (comment faire ? terminaison ?) puis après faut les classer dans un ordre avec les mots les plus dit et tout ba après c'est un peut comme un moteur de recherche.

#3 - Le 23/05/2008 à 12:21 - Répondre

Avatar de Vanger
Vanger

Le fait que ce soit variable est bien la grosse difficulté. Il faudrait un système "intelligent" qui serait capable d'identifier les mots importants.

Se baser sur le nombre de lettres, au fond ça fonctionne mais ça risque de récupérer beaucoup plus que l'essentiel. Dans l'exemple de Cam, le fait que ça soit le SP DEUX est très important, si on ressort juste Service Pack et qu'on omet le 2, ça change l'information.

On cherche, on cherche mais c'est très complexe car très dépendant de la situation. Même dans le cas d'un "dictionnaire" contenant les mots les plus probables d'être des mots clés, on risque d'en louper certains et d'en récupérer des inutiles.

De toute façon, un script parfait ne sera pas vraiment possible AMHA, mais doit y avoir un moyen d'obtenir un système plus ou moins fiable.

#4 - Le 23/05/2008 à 18:26 - Répondre

Avatar de Acidifié
Acidifié

Un chiffre ou une lettre en majuscule (II, III, IV, V) suivant un groupe de mots en majuscule est très souvent important.
Tous les mots en majuscules excepté le premier mot de la phrase ont une importance particulière.
Les mots se terminant par -er et -ir sont susceptibles de donner du sens à la phrase.
Les verbes être et avoir sont à éliminer, mais les adjectifs & participes passés qui les suivent sont importants.

#5 - Le 24/05/2008 à 13:24 - Répondre

Avatar de GeekFG
GeekFG

Il y a quelques années, j'ai mis en place le même genre de technique : http://vistarc.net/index.php/articles/1/5293/gigabyte-m912-le-netbook-8-9-a-ecran-tactile-sous-vista-et-ubuntu.htm
Avec un dico de mot à exclure, mais c'est vrai qu'il faudrait créer une base de donnée qui contient chaque mot-clef, et le nombre de fois qu'il à été trouvé, ainsi on ne récupèrerai que les mots clefs les plus trouvés.

#6 - Le 03/06/2008 à 22:40 - Répondre

Poster un commentaire

Nouveau commentaire






* champs obligatoires