2011-11-17 30 views
0

希望這是有道理的。我有一個PHP腳本,磁盤,分析RSS源,並將數據插入MySql,它工作正常。我將RSS項目的各個部分變爲變量以使它們更易於使用,因此獲取rss源文件並不是問題。PHP和RSS - 基於描述創建「分數」

但是,我的目標是能夠過濾故事,並只導入特定的故事。我想盡可能地自動化這些,對於誤報/消極因素有一些限制,因爲他們會在以後手動驗證。

我想要做的是爲每個單詞設置關鍵字和「權重」列表。因此,當分析新的RSS項目時,腳本將根據說明字段中單詞的權重創建「分數」。

例如:

stackoverflow = 10 
very = 7 
helpful = 8 

因此,「計算器非常有幫助」會得到一個分數的25

,也有「計算器總是非常樂於助人」仍然會得到一個得分25,因爲「是'和'always'不是帶有賦予權重的關鍵字。

和「隨機在這裏」會得到0分,因爲沒有關鍵字。

然後我可以玩關鍵字權重和分數來找出篩選rss提要的最佳設置。

大部分我都能弄清楚。我只需要知道解析項目描述的方法,併爲指定的關鍵字分配權重以創建「分數」。

+0

執行此操作:http://www.ibm.com/developerworks/cn/library/wa-bayes1/ – Incognito

回答

1

PHP帶有一些有用的功能,比如strpos()和preg_match。前者將搜索特定的字符串,preg_match將搜索正則表達式。您應該創建一組關鍵字及其權重,然後遍歷每個關鍵字並檢查描述是否包含該值。如果是這樣,你增加一個重量計數器。這裏有一個簡單的例子:

$keywords = array(
    'stackoverflow' => 10, 
    'very' => 7, 
    'helpful' => 8 
); 
$description = $feed->getDescription(); // or wherever 
$total_weight = 0; 
foreach ($keywords as $keyword => $weight) { 
    if (strpos($keyword, $description)) 
     $total_weight += $weight; 
} 
return $total_weight; // total weight of this item 

反正就是這樣。還有其他方法可以做到這一點,但這應該讓你開始。

祝你好運。

+0

這看起來像我想要做的。很快就能試用它,會讓你知道它是如何發展的。 –

+1

我認爲這是一個很好而簡單的例子。但是,您可以使用此處描述的MySQL自然全文搜索(http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html)來實現一些內容。在這種情況下,你不能自己分配權重。但是評分本身的作用比僅僅檢查某個單詞是否存在要好一些。 – Jasmo

+0

我以前使用過全文搜索。這對於這樣的基本事物非常有用。不過,我傾向於寫我自己的,因爲我的搜索比簡單的基於關鍵詞的權重更復雜。但是,好的,Jasmo。 – Jemaclus