在文本中统计单词频率?

11
我希望编写一个PHP函数,该函数接受一个字符串作为输入,将其拆分为单词,并返回一个按照每个单词出现频率排序的单词数组。最有效的算法是什么?这里有一个类似的问题:php: sort and count instances of words in a given string

我认为这将取决于文本的大小。无论如何,有很多这样的解析器存在,编程的最有效方式是重用而不是编写自己的解析器。只需在谷歌上搜索“PHP词频计数器”。 - dnagirl
这也取决于您所说的“单词”是什么意思。当它是所有格标记时,“'s”是否算作单词?当它是“is”的缩写时呢?其他缩写呢?如果您只是想通过空格或连字符拆分(就像手机上的T9一样),那么最好使用类似Gordon建议的内置工具。 - Chris Pfohl
在同一主题上,StackOverflow上的两个先前问题。应该很有用。在PHP中计算文本中单词出现的次数php:对给定字符串中的单词进行排序和计数 - Paul
1个回答

29

以下是您最好的选择:

示例

$words = 'A string with certain words occuring more often than other words.';
print_r( array_count_values(str_word_count($words, 1)) );

输出

Array
(
    [A] => 1
    [string] => 1
    [with] => 1
    [certain] => 1
    [words] => 2
    [occuring] => 1
    [more] => 1
    [often] => 1
    [than] => 1
    [other] => 1
)

因为该问题是至少两个包含相同答案的其他问题的重复,所以标记为CW


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接