2011-02-13 90 views
1

當試圖計算的內容的字符串的單個關鍵字的關鍵字密度,該公式是非常簡單的:KWD =(關鍵詞計數/總字數)* 100關鍵字詞組的關鍵字密度計算?

然而,應該式是我們時正在尋找關鍵字詞組的關鍵字密度?

例如,如何計算以下字符串中短語「藍色小部件」的關鍵字密度?

$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; 
} 

我怎樣才能得到的單詞數的計數的關鍵字詞組?

+0

@Jacob:謝謝你逃脫報價! – 2011-02-13 00:26:43

+0

關鍵字數/總字數,當然? – aaz 2011-02-13 00:30:46

+0

@aaz:失讀症復發:) – 2011-02-13 00:35:07

回答

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)); 

這種方式,你會處理所有的多字的關鍵詞,如果是單一的措辭。希望它有幫助

0

也許

KWD =(總字數/ NUM關鍵短語occurances)/在關鍵短語NUM個字

1

你的例子似乎暗示你想要考慮每個關鍵字以及關鍵字短語。在這種情況下,你可以使用一個加權公式:

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

α=1給出了最保守的措施(只有那句「藍色小工具」是相關的),
α=0給出了最寬鬆措施(包括「藍色」和文本中任何地方的「小部件」都是相關的)。