1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <meta charset="UTF-8"/><pre><?php
$sentences = [
'Faria le reçut assis, évita tout geste compromettant, et parvint à cacher au gouverneur la paralysie qui avait déjà frappé de mort la moitié de sa personne.',
'Sa crainte était que le gouverneur, touché de pitié pour lui, ne le voulût mettre dans une prison plus saine et ne le séparât ainsi de son jeune compagnon; mais il nen fut heureusement pas ainsi, et le gouverneur se retira convaincu que son pauvre fou, pour le quel il ressentait au fond du cur une certaine affection, nétait atteint que dune indisposition légère.',
'Pendant ce temps, Edmond, assis sur son lit et la tête dans ses mains, essayait de rassembler ses pensées; tout était si raisonné, si grand et si logique dans Faria depuis quil le connaissait, quil ne pouvait comprendre cette suprême sagesse sur tous les points alliée à la déraison sur un seul: était-ce Faria qui se trompait sur son trésor, était-ce tout le monde qui se trompait sur Faria?',
'Dantès resta chez lui toute la journée, nosant retourner chez son ami.',
'Il essayait de reculer ainsi le moment où il acquerrait la certitude que labbé était fou.',
'Cette conviction devait être effroyable pour lui.',
'Mais vers le soir, après lheure de la visite ordinaire, Faria, ne voyant pas revenir le jeune homme, essaya de franchir lespace qui le séparait de lui.',
'Edmond frissonna en entendant les efforts douloureux que faisait le vieillard pour se traîner : sa jambe était inerte, et il ne pouvait plus saider de son bras. Edmond fut obligé de lattirer à lui, car il neût jamais pu sortir seul par létroite ouverture qui donnait dans la chambre de Dantès.',
'« Me voici impitoyablement acharné à votre poursuite, dit-il avec un sourire rayonnant de bienveillance.',
'Vous aviez cru pouvoir échapper à ma magnificence, mais il nen sera rien.',
'Écoutez donc. »',
'Edmond vit quil ne pouvait reculer; il fit asseoir le vieillard sur son lit, et se plaça près de lui sur son escabeau.',
'« Vous savez, dit labbé, que jétais le secrétaire, le familier, lami du cardinal Spada, le dernier des princes de ce nom.',
'Je dois à ce digne seigneur tout ce que jai goûté de bonheur en cette vie.',
'Il nétait pas riche bien que les richesses de sa famille fussent proverbiales et que jaie entendu dire souvent: Riche comme un Spada.',
'Mais lui, comme le bruit public, vivait sur cette réputation dopulence.',
'Son palais fut mon paradis.',
'Jinstruisis ses neveux, qui sont morts, et lorsquil fut seul au monde, je lui rendis, par un dévouement absolu à ses volontés, tout ce quil avait fait pour moi depuis dix ans.'
];
$res = [];
// on construit un tableau "brut" qui associe à chaque mots différents une liste d'index de phrase
foreach ($sentences as $k => $sentence) {
// la classe \p{Xan} contient tous les caractères unicode alphanumériques, \P{Xan} est son contraire
$words = preg_split('~\P{Xan}+~u', mb_strtolower($sentence, 'UTF-8'), -1, PREG_SPLIT_NO_EMPTY);
// array_fill_keys se charge d'écrabouiller au passage tous les mots dupliqués d'une même phrase
$res = array_merge_recursive($res, array_fill_keys($words, $k));
}
// un fois qu'on a ce tableau brut, on peut en faire ce que l'on veut.
// tableau des mots avec plusieurs occurrences
$res = array_filter($res, function ($i) { return count($i)>1; });
// tableau mots=>nombres d'occurrences trié par nombres d'occurrences
$res = array_map('count', $res);
arsort($res);
// tableau des mots de plus de deux lettres
foreach($res as $k=>$v) {
if (mb_strlen($k, 'UTF-8') < 3)
unset($res[$k]);
}
print_r($res); |
Partager