J'ai codé un truc similaire en php. $sArticle contient tout le texte à analyser et enrichir.
$ArrayWords = preg_split("/[\s,\.\(\)\/:><+]+/", $sArticle, -1, PREG_SPLIT_OFFSET_CAPTURE);
$ArrayWordsToReplace = array();
Avec ça, tu obtiens les mots seuls dans un tableau. Pour conserver les mots de manière unique, histoire de pas rechercher le même mot x fois :
$ArrayWords = array_unique($ArrayWords);
Ensuite, tu parcours ton tableau de mots. Pour chaque mot, tu le "nettoies" avec un str_replace() afin de retirer les "d'", "n'", "qu'" et "l'" et les guillemets. Après, tu voudras peut-être pas forcément mettre un lien sur tous les mots ayant "peu" de sens comme "ce", "son", "sa", "la", "le", "un", "une", "quel", "quelle", "celui", "celle"...
Là, tu vas avoir le mot dont il faut rechercher le lemme (ex : pour un verbe, sa forme à l'infinitif, pour un nom commun, sa forme masculin singulier). Pour obtenir le lemme associé à un mot, il existe une base sympa pour avoir pleins d'infos sur un mot, dont le lemme : Lexique.org ( http://www.lexique.org/telLexique.php ), la v3.80, que tu pourras facilement transformer en BD Mysql. Par contre, y'a pas la déf, il me semble
Une fois le lemme obtenu, il te faudra aller sur un site ou une autre BD afin d'obtenir la déf. Une fois la déf obtenue, tu vas générer le code HTML qui remplacera le mot de l'article par le mot + sa déf représentée en html et tu le stockera dans un buffer, associé au mot à replacer. Ex :
Code :
foreach($ArrayWords as $w => $CurrentWord) { // On fait là tout le traitement de lemnisation et recherche if (! in_array($CurrentWord, $ArrayWordsToReplace)) { // On fait le test d'unicité car l'étape de lemnisation peu te donner le même mot $ArrayWordsToReplace[$CurrentWord] = "<dfn title=\"$sDefinitionTrouvee\"">$CurrentWord</dfn>"; } }
|
A la fin, pour remplacer tous les mots par leur déf, tu feras :
$sArticle = str_ireplace(array_keys($ArrayWordsToReplace), array_values($ArrayWordsToReplace), $sArticle);
Voilà en gros la trame de l'algo.
---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta