0

我的结构:在每个类别中都有文本。这些文本是它自己的条目。因此,表格“类别”和表格“文本”。每个类别大约有90个文本,每个文本大约300个字符。

我想做的是为类别制作元标记(关键字)。如何> 获取所有相关的“文本”并对所有单词进行排名并选取前 10 个单词。这些前 10 名将是该类别的关键字元标记。

现在.. 诀窍 > 如何检索前 10 个单词。目前 > 我已经知道每个文本(是一个全文)都将被分成一个每个单词的数组。这个数组(在 php 中)会很长。之后,我获取每个单词的频率并再次按频率对其进行排名。瞧,前 10 个字。

我还没有测试过这个过程,但我想它可能需要一点时间。它将被缓存,因此它只需要每周运行一次左右,但是,我仍然不想超时。

各位有什么窍门吗?任何帮助表示赞赏。

谢谢,

莫里斯

4

1 回答 1

0

好的,既然我已经在上面的评论中表达了我的平静,我会谈谈你的算法。

有几种方法可以做到这一点,我将专注于 PHP-heavy 方法,并让其他 SOer 做一些其他的方法。

我假设您已经查询了数据库并将所有单词作为空格分隔的列表存储到变量 $texts

// Sample data in $texts
$texts      = "orange orange apple apple apple banana";
$withCounts = array_count_values( explode( ' ', $texts ) );

asort( $withCounts );
$topTen = array_keys( array_reverse( array_slice( $withCounts, -10 ) ) );

print_r( $topTen );
于 2009-06-25T16:46:26.590 回答