Le code ci-dessous renvoie une liste de mots apparaissant le plus fréquemment dans la chaîne $commentstring
, nettoyée de la ponctuation et des nombres. Cela fonctionne fantastique.Conserver certaines phrases dans une chaîne
Cependant, les expressions familières et les noms de marque sont divisés en mots individuels. Je voudrais les combiner. Donc, si le mot «français» apparaît immédiatement avant «frites», je voudrais les garder combinées avec le mot «frites». Je voudrais arriver à une liste de phrases comme celle-ci comme «pépites de chocolat», «coca cola», «old school», etc. Comment pourrais-je faire cela?
$commentstring = str_replace(array('/', '*', ')', '(', '!', '.', ',', ':'), '', $commentstring);
$words = explode(" ", $commentstring);
$result = array();
arsort($words);
foreach($words as $word) {
if(!is_numeric($word)){
$result[$word]++;
arsort($result);
}
}
echo "<table>";
$blacklist = array($submission, 'DESPITE', 'FARE', 'DECENT', 'AMAZING', 'WOULD', 'DISLIKE', 'HATE', 'OKAY', 'JUST', 'NOTHING', 'CURRENTLY', 'BASICALLY', 'BIT', 'COME', 'WANT', 'TOO', 'HERE', 'EATING', 'EAT', 'WAS', 'TRIED', 'TRY', 'MAKES', 'HAS', 'EVEN', 'THINK', 'BETTER', 'YET', 'MORE', 'LOVE', 'WHILE', 'WHERE', 'WRONG', 'FIND', 'EVER', 'RIGHT', 'BEST', 'HAVE', 'WE', 'WAY', 'GREAT', 'NICE', 'HOW', 'RESTAURANTS', 'RESTAURANT', 'EXCELLENT', 'FORGET', 'THEY', 'REALLY', 'MISS', 'VERY', 'LOOKING', 'YOU\'LL', 'CAN\'T', 'WON\'T', 'PLACE', 'ABOUT', 'FOR', 'MOST', 'GOOD', 'CAN', 'GET', 'THING', 'DON\'T', 'BY', 'YOUR', 'BE', 'YOU', 'BRING', 'THAT\'S', 'LITTLE', 'OTHER', 'MANAGES', 'ATE', 'ATE', 'EAT', 'SO', 'SOMEHOW', 'MAKE', 'ALL', 'UP', 'THEM', 'AS', 'THEM', 'YOU\'RE', 'WILL', 'ONLY', 'IF', 'GO', 'DO', 'I\'VE', 'HAD', 'TO', 'SOME', 'FOOD', 'THIS','DOES', 'NOT', 'IT.', 'IT,', 'SEEM', 'END', 'THERE\'S', 'WHETHER', 'DOUBT', 'WHAT', 'WHICH', 'RECOMMEND', 'THE', 'IS', 'A', 'IT\'S', 'OUT', 'JAN', 'IT', 'IT', 'IT', 'LIKE', 'THAN', 'WITH', 'SEEMS', 'WHICH', 'THAT', 'SAY', 'AT', 'ON', 'AN', 'BUT', 'APART', 'STILL', 'ARE', 'OR', 'TEST', 'IN', 'IT', 'AND', 'SET', 'TO', 'NO', 'OF', '', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II', 'JJ', 'KK', 'LL', 'MM', 'NN', 'OO', 'PP', 'QQ', 'RR', 'SS', 'TT', 'UU', 'VV', 'WW', 'XX', 'YY', 'ZZ');
foreach($result as $word => $count1)
{
if (in_array($word, $blacklist)) continue;
echo '<tr>';
echo '<td>';
echo "$word";
echo '</td>';
echo '<td>';
echo "$count1 ";
echo '</td>';
echo '</tr>';
}
echo "</table>";
Vous aurez besoin d'une liste explicite, ou mieux encore: règles sémantiques. C'est un autre niveau ... –
@ Idiqual Je suis plus que disposé à faire une liste. – John
C'est juste impossible, il y a des combinaisons infinies. Si vous voulez le faire correctement, vous devrez utiliser l'analyse de la langue. C'est un gros marteau, alors ça ne répondra peut-être pas à vos besoins. –