| 方案 | 語言 | 特點 | PHP 可用性 |
|---|---|---|---|
| ICTCLAS (中科院) | C++/Java | 權威、準確率高 | 需擴展/服務化,門檻高 |
| HMM (隱馬爾可夫) | C++/Java | 統計建模,無詞庫依賴 | 同左 |
| SCWS (簡單中文分詞) | C + PHP 擴展 | 開源、詞頻統計、新詞發現 | ✅ pscws 擴展,1.0.4 穩定 |
| HTTPCWS (張宴) | C + PHP | ICTCLAS API + 逆向最大匹配 + 標點過濾 | ⚠ 僅 Linux,未移植 Windows |
| DEDECMS 內置分詞 | PHP | 純 PHP 實現,無需擴展 | ✅ 即用,但準確率一般 |
| Discuz! API | PHP (遠程) | 騰訊優化詞庫,效果較好 | ✅ HTTP 調用,有頻率限制 |
測試文本:ThinkPHP 官方停止對 2.0 版本支持的公告。
標題: THINKPHP(1) 官方(1) 即將(1) 停止(1) 對(1) 2.0(1) 版本(1) 的(1) 支持(1) 正文: 版本(12) 的(12) 和(8) ThinkPHP(5) 2.0(5) 也(3) 2.2(3) 2.1(3) 開發(3) 3.0(2) 是(2) 快速(2) 到(2) 發布(2) 維護(2) 之前(2) 了(2) 新版(2) 支持(2) 框架(2) 同時(2) 從(2) ...
後處理策略:去停用詞 → 按正文詞頻排序 → 優先保留標題中出現的詞 → 取 Top 5:
版本、ThinkPHP、2.0、支持、停止
的、快速、版本升級、開發、用戶
首詞為停用詞「的」,偏離主題,但詞熱度高。
pscws 擴展,載入 dict.utf8.xdb 詞庫,開啟多線程,QPS 可達千級。<?php
require_once 'SplitWord.class.php'; // DEDECMS 分詞類
$sp = new SplitWord();
$sp->SetSource($title . ' ' . $body);
$sp->StartAnalysis();
$keywords = $sp->GetFinallyResult(' ', 10); // 空格分隔,取前 10
// 進一步過濾停用詞
$stopWords = ['的','了','和','是','在','我們','你們','它們'];
$kwArr = array_diff(explode(' ', $keywords), $stopWords);
$final = implode(',', array_slice($kwArr, 0, 5));
echo $final; // 版本,ThinkPHP,2.0,支持,停止
?>
TF-IDF 或 TextRank 圖模型。從「能用」到「好用」,關鍵在詞庫與業務規則的持續打磨。