Voici un bout de code php qui permet d'obtenir un tableau indexé par mot dont les valeurs correspondent aux nombres d’occurrences du mot.
Pour obtenir un résultat intéressant j'utilise la fonction de normalisation de texte clean.
Calcul de la fréquence des mots
<?php
function getWordsCount($txt)
{
$txt = clean($txt);
$words = array();
if(preg_match_all('~\p{L}+~',$txt,$matches) > 0)
{
foreach ($matches[0] as $w)
{
$words[$w] = isset($words[$w]) === false ? 1 : $words[$w] + 1;
}
}
return $words;
}
?>
Pour vous montrer le résultat de cette fonction je vais utiliser un Lorem ipsum :
Lorem ipsum dolor sit amet. Maecenas imperdiet imperdiet facilisis. Lorem ipsum bibendum eu tempus eget. Donec lorem risus, fermentum in suscipit sed.
Et maintenant le vecteur contenant tous les mots de mon texte et la fréquence d'apparition de ces derniers :
array(18) {
["lorem"]=>
int(3)
["ipsum"]=>
int(2)
["dolor"]=>
int(1)
["sit"]=>
int(1)
["amet"]=>
int(1)
["maecenas"]=>
int(1)
["imperdiet"]=>
int(2)
["facilisis"]=>
int(1)
["bibendum"]=>
int(1)
["eu"]=>
int(1)
["tempus"]=>
int(1)
["eget"]=>
int(1)
["donec"]=>
int(1)
["risus"]=>
int(1)
["fermentum"]=>
int(1)
["in"]=>
int(1)
["suscipit"]=>
int(1)
["sed"]=>
int(1)
}
C'est bien beau tout ça mais à quoi ça sert ? A calculer la similarité entre deux textes par exemple ;)
Image : Hilary Bacon