关键字词组的关键字密度计算?

时间:2011-02-13 00:12:49

标签: php string

当尝试计算内容字符串中单个关键字的关键字密度时,公式非常简单:kwd =(关键字数/总字数)* 100

但是,当我们寻找关键字词组的关键字密度时,该公式应该是什么?

例如,您将如何计算以下字符串中“blue widgets”短语的关键字密度?

$myContent = "Blue widgets in a field
of widgets blue makes for lots of widgets, true. But
if a widget is blue, is it still a
\"blue widget\" or just a lone widget in a sea
of blue?";

这是我当前的功能

function my_keyword_density($post)
{
    $word_count =  my_word_count($post);
    $keyword_count = my_keyword_count($post);
    $density = ($keyword_count / $word_count) * 100;
    $density = number_format($density, 1);
return $density;
}

如何计算关键字词组中的字数?

3 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情:

$tot_words = str_word_count($myContent);
$keyword_count = preg_match_all("/\bblue widgets\b/msiU", $myContent, $res);
$kwd = ($keyword_count / $tot_words) * 100;

如果您需要自定义“单词”,您可以在str_word_count函数see the manual page中添加参数。只需添加错误检查需要的地方,它应该工作。 关于公式,我会使用这样的东西:

    $search_words = str_word_count("blue widgets");
    $kwd = ($keyword_count / ($tot_words - (($keyword_count -1) * $search_words));

通过这种方式,您可以处理所有多字关键短语,就好像它是单一的。希望它有所帮助

答案 1 :(得分:1)

您的示例似乎暗示您要考虑每个关键字以及关键字词组。在这种情况下,您可以使用加权公式:

kwd = α*kwd("blue widgets") + (1-α)*(kwd("blue")+kwd("widgets"))

α=1给出了最保守的措施(只有“蓝色小部件”这个词是相关的),
α=0给出了最自由的度量(文本中任何地方的“蓝色”和“小部件”都是相关的)。

答案 2 :(得分:0)

也许

kwd =(总字数/ num关键短语出现次数)/关键短语中的num字数