中文無自然分詞符號(空格),搜索引擎、標籤雲、內容推薦、情感分析等場景都依賴準確分詞。PHP 生態中主流有兩類方案:C 擴展型(高性能)與純 PHP 實現(易部署)。
<?php
// 需安裝 scws 擴展:pecl install scws
// 或編譯共享庫後 php.ini 加入 extension=scws.so
$scws = new SCWS();
$scws->set_charset('utf-8');
$scws->set_dict('/path/to/dict.utf8.xdb'); // 主詞典
$scws->set_rule('/path/to/rules.utf8.ini'); // 模糊規則
$scws->set_ignore(true); // 忽略標點、數字等
$scws->send_text($text);
// 獲取權重前 10 關鍵詞
$topWords = $scws->get_tops(10);
$keywords = array_column($topWords, 'word');
// 輸出: ['關鍵詞1', '關鍵詞2', ...]
// 完整分詞結果(帶詞性)
$words = [];
while ($token = $scws->get_result()) {
$words[] = $token; // ['word'=词, 'idf'=权重, 'attr'=词性]
}
$scws->close();
?>
<?php
require_once 'PhpAnalysis.class.php';
PhpAnalysis::$loadInit = false; // 禁用自動載入詞典(手動控制)
$pa = new PhpAnalysis('utf-8', 'utf-8', false);
$pa->LoadDict(); // 載入詞典(首次較慢,建議緩存)
$pa->SetSource($text);
$pa->StartAnalysis(false); // false=不進行詞性標註,加快速度
$keywords = $pa->GetFinallyResult(); // 空格分隔的關鍵詞字符串
?>
| 維度 | SCWS | PhpAnalysis |
|---|---|---|
| 性能 | ⭐⭐⭐⭐⭐ (C擴展) | ⭐⭐ (純PHP) |
| 部署難度 | 需編譯/安裝擴展 | 引入文件即用 |
| 準確率 | 90%~95% | 略低,依賴詞典覆蓋 |
| 適用場景 | 高併發、大文本、生產核心服務 | 低頻任務、共享主機、快速原型 |
現代項目建議使用 Composer 封裝庫:
composer require hightman/scws (社區維護的 SCWS 封裝)composer require fukuball/jieba-php (結巴分詞 PHP 移植版,純 PHP 且準確率極高,強烈推薦)若項目允許安裝擴展且追求極致性能,SCWS 是首選;受限於虛擬主機或需快速接入,PhpAnalysis 或 Jieba-PHP 更務實。實際上線前,請用業務真實語料測試分詞效果,必要時補充自定義詞典。