在早期開發項目時,我們往往要求用戶手動輸入標籤,這不僅增加了使用者的負擔,也影響了系統的使用體驗。為了迎接新項目的挑戰,我花了一整晚深入研究自動關鍵詞提取技術,發現這其實是一個系統性的工程問題,主要分為三個核心步驟。
要實現自動獲取關鍵詞,首要任務是將標題和正文進行分詞處理。目前主流的中文分詞算法主要有中科院的 ICTCLAS 和隱馬爾可夫模型(HMM),但這些方案多基於 C++/Java,對 PHP 開發者門檻較高。所幸 PHP 生態中有兩個優秀的選擇:
分詞後得到的候選詞需與詞庫比對,剔除「的、我們、了」等無實義詞。詞庫的質量直接決定提取效果。大型網站(如新浪、網易)擁有優質詞庫,但對於中小項目,只能參考開源 CMS(如 DEDECMS、Discuz)的詞庫資源。
此階段需結合業務邏輯:優先選取同時出現在標題與正文高頻位置的詞,並限制輸出數量(如 5-8 個)。這無法達到人工級別的語義理解,但作為輔助功能已足夠實用。
以 ThinkPHP 2.0 停止維護的新聞為例:
版本 thinkphp 2.0 支持 停止
邏輯:去除虛詞 → 按正文頻度排序 → 保留標題中出現的詞。結果貼合主題,可接受度高。
的、快速、版本升級、開發、用戶
首個詞即為「的」,且偏離核心主題,雖詞具熱門性但精準度不足。
綜合來看,DEDECMS 分詞 + 自定義後處理規則 的方案在精準度上優於現成 API。建議開發者根據項目規模:小型項目可直接整合 PSCWS 並維護領域詞庫;中大型項目可考慮接入專業 NLP 服務(如百度/騰訊雲 NLP API)以獲取更語義級的理解能力。