我正在尝试计算页面上每个唯一单词的出现次数(想想你在woorank上看到的SEO'字数' - 但不是为了那个目的!)
我真的在努力解决这个问题: -
目前我正在考虑阅读每个单词,然后检查它是否对阵列是唯一的 - >如果使用occurences=>1
将唯一添加到数组 - 那么如果我稍后找到相同的单词,则只需+1。
然而,这对于大块文本来说似乎非常麻烦和缓慢(特别是因为我将不得不删除逗号等,将所有内容转换为小写等) - >是否有更好的方法,有人为此任务获得了代码段或库吗?
为清楚起见
猫逃跑了。勺子已经和另一只猫走了很远的距离。
会屈服:
the => 3,
away => 3,
cat => 2,
with => 2,
far => 2,
spoon => 1,
hat => 1,
ran => 1,
run => 1,
had => 1,
another => 1,
already => 1
提前致谢 - 如果没有更好的方法,那就没关系了!
ASIDE
我打算在找到并统计后对所有单词进行replace($word,"")
- >但这看起来同样麻烦。
答案 0 :(得分:3)
将array_count_values()
与str_word_count()
结合使用:
$wordCounts = array_count_values(str_word_count(strtolower($sentence), 1));
arsort($wordCounts);
输出:
Array
(
[the] => 3
[away] => 3
[cat] => 2
[far] => 2
[with] => 2
[run] => 1
[another] => 1
[already] => 1
[hat] => 1
[ran] => 1
[spoon] => 1
[had] => 1
)
答案 1 :(得分:0)
答案 2 :(得分:0)
拆分所有单词(您可以使用像Solr中的用户那样的“标记器”来“清理”它们),然后放入数组,对其进行排序,以及数组唯一计数。它实际上取决于语言,但使用自己迭代文本的语言本机函数总是会更快。
在php中:
$array = preg_split('/[\s,\.]+/', strtolower($text));
$unique = array_count_values($array);
print_r($unique);