首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實現自動提取文章關鍵詞功能的深度解析與實踐

     編輯:PHP 綜合知識

前言:為什麼需要自動關鍵詞提取?

在早期開發項目時,我們往往要求用戶手動輸入標籤,這不僅增加了使用者的負擔,也影響了系統的使用體驗。為了迎接新項目的挑戰,我花了一整晚深入研究自動關鍵詞提取技術,發現這其實是一個系統性的工程問題,主要分為三個核心步驟。

核心步驟一:分詞算法與關鍵詞頻度統計

要實現自動獲取關鍵詞,首要任務是將標題和正文進行分詞處理。目前主流的中文分詞算法主要有中科院的 ICTCLAS 和隱馬爾可夫模型(HMM),但這些方案多基於 C++/Java,對 PHP 開發者門檻較高。所幸 PHP 生態中有兩個優秀的選擇:

  • PSCWS (PHP Chinese Word Segmentation):基於 SCWS 1.x 系列,2008 年發布 1.0.0 版,現已更新至 1.0.4,穩定成熟。
  • HTTPCWS:由張宴開發,早期稱 PHPCWS,結合 ICTCLAS 3.0 API 進行初次分詞,再用逆向最大匹配算法合併詞語並過濾標點。缺點是僅支持 Linux,未移植至 Windows。

核心步驟二:詞庫比對與無用詞過濾

分詞後得到的候選詞需與詞庫比對,剔除「的、我們、了」等無實義詞。詞庫的質量直接決定提取效果。大型網站(如新浪、網易)擁有優質詞庫,但對於中小項目,只能參考開源 CMS(如 DEDECMS、Discuz)的詞庫資源。

核心步驟三:最終關鍵詞篩選策略

此階段需結合業務邏輯:優先選取同時出現在標題與正文高頻位置的詞,並限制輸出數量(如 5-8 個)。這無法達到人工級別的語義理解,但作為輔助功能已足夠實用。

實測對比:DEDECMS vs Discuz API

以 ThinkPHP 2.0 停止維護的新聞為例:

DEDECMS 5.7 分詞結果(經後處理)

版本 thinkphp 2.0 支持 停止

邏輯:去除虛詞 → 按正文頻度排序 → 保留標題中出現的詞。結果貼合主題,可接受度高。

Discuz API 返回結果

的、快速、版本升級、開發、用戶

首個詞即為「的」,且偏離核心主題,雖詞具熱門性但精準度不足。

結論與建議

綜合來看,DEDECMS 分詞 + 自定義後處理規則 的方案在精準度上優於現成 API。建議開發者根據項目規模:小型項目可直接整合 PSCWS 並維護領域詞庫;中大型項目可考慮接入專業 NLP 服務(如百度/騰訊雲 NLP API)以獲取更語義級的理解能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved