如何在 ServBay 中啟用與設定 SCWS PHP 模組
ServBay 是一套支援 macOS 與 Windows 的強大本地 Web 開發環境,已整合 PHP、Node.js、Python、Go、Java 等多種語言執行環境,以及 MySQL、PostgreSQL、MongoDB、Redis 等數據庫,並支援 Caddy 及 Nginx 等 Web 伺服器。對於需要在 PHP 應用中進行繁體中文文本處理的開發者來說,ServBay 已預先安裝高效的 SCWS (Simple Chinese Word Segmentation) 中文分詞模組,啟用方式極為簡單。
本文將詳盡說明如何在 ServBay 內啟用 SCWS PHP 擴充套件、設定其字典檔案,並以範例程式碼展示基本用法。
SCWS 模組簡介
SCWS 是一個開源的中文分詞引擎,以高效能、高精確度聞名。它結合詞典比對與統計模型,能快速且精確地對中文文本進行分詞處理,非常適合用於建立中文搜尋引擎、文本探勘、內容分析、關鍵字擷取及詞性標註等各種場景。
主要特色
- 高效能分詞: SCWS 採用最佳化的分詞演算法,能高效處理大規模中文資料。
- 高準確度: 結合詞典與統計模型,SCWS 在中文分詞任務上有良好準確性。
- 功能豐富: 除了基本分詞,還支援關鍵字擷取、詞性標註等進階功能。
- 容易整合: 具備精簡的 API,方便開發者嵌入 PHP 應用程式。
- 開源免費: SCWS 為開源軟體,可免費使用並依需求客製化。
ServBay 預載的 SCWS 版本
ServBay 支援多種 PHP 版本,並為每個版本預先安裝相對應的 SCWS 模組。至本文撰寫時止,ServBay 提供 PHP 5.6 到 PHP 8.4 均預載 SCWS 1.2.3 擴充套件。
如何啟用 SCWS 模組
預設狀態下,SCWS 模組在 ServBay 內是關閉的。您可以透過 ServBay 圖形介面或手動編輯設定檔兩種主要方式啟用。
推薦方式:透過 ServBay 圖形介面
這是最簡便快速的方法:
- 開啟 ServBay 主介面。
- 在左側導覽欄,點選 語言 (Languages),再選擇 PHP。
- 於右側 PHP 版本列表中找到您欲啟用 SCWS 的 PHP 版本(如
PHP 8.4
)。 - 點選該 PHP 版本右側的 擴充套件 (Extensions) 按鈕。
- 在彈出清單中找到
SCWS
模組。 - 點選
SCWS
左側的切換開關,轉為開啟狀態(通常會轉為綠色)。 - 點擊視窗底部的 儲存 (Save) 按鈕。
- ServBay 會提醒需重啟 PHP 套件以套用變更,點選 重啟 (Restart)。
完成以上步驟後,SCWS 模組即已成功為指定的 PHP 版本啟用。
手動編輯設定檔啟用(進階用戶或除錯時適用)
如需更細緻控制或進行除錯,也可以手動修改 PHP 的設定檔:
定位設定檔: 先找到對應 PHP 版本的
conf.d
資料夾,SCWS 的設定存於該資料夾下的scws.ini
。路徑通常如下:/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1請將
X.Y
替換為實際 PHP 版本號(例如8.4
)。編輯
scws.ini
檔案: 用文字編輯器開啟scws.ini
,找到類似以下內容:ini[scws] ; Uncomment the following line to enable scws ;extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5將
extension = scws.so
這行前面的分號移除,使其變成:ini[scws] ; Uncomment the following line to enable scws extension = scws.so ;scws.default.charset = gbk ;scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5(可選)您也可以在這裡設定預設字元集及字典路徑,但建議在 PHP 程式碼中動態設定以提升彈性。如果要在此設定,需將相關行的分號移除並調整值,如字典為 UTF-8 編碼:
ini[scws] ; Uncomment the following line to enable scws extension = scws.so scws.default.charset = utf8 scws.default.fpath = /Applications/ServBay/etc/scws
1
2
3
4
5儲存並關閉檔案。
重啟 PHP 套件: 回到 ServBay 主介面,找到 套件 (Packages),定位您剛修改的 PHP 版本(如 PHP 8.4),點選右側的重啟圖示(通常為循環箭頭)。
驗證 SCWS 模組是否成功載入
完成啟用後,建議驗證 SCWS 是否真正在 PHP 內成功載入。一般可借助 phpinfo()
輸出:
- 於 ServBay 建議的網站根目錄
/Applications/ServBay/www
建立一個測試子目錄,如scws-test
。 - 在該目錄下 (
/Applications/ServBay/www/scws-test
) 新增一個檔名為phpinfo.php
的檔案。 - 將以下 PHP 程式碼貼入
phpinfo.php
:php<?php phpinfo(); ?>
1
2
3 - 確認您的 ServBay Web 伺服器(Caddy 或 Nginx)已正確設定及運作,並可存取
/Applications/ServBay/www
下的網站。ServBay 預設綁定servbay.demo
網域至該目錄。 - 在瀏覽器中輸入
https://servbay.demo/scws-test/phpinfo.php
。 - 於頁面滾動尋找 "SCWS" 區塊,若見到 SCWS 相關設定與版本資訊,表示已成功載入。
(備註:圖片路徑僅供範例,請參考實際 ServBay 文件提供圖片)
建立與設定 SCWS 字典
SCWS 依賴詞典進行分詞,其效果與詞典品質息息相關。ServBay 已預載 SCWS 的預設詞典與規則檔,通常位於 /Applications/ServBay/etc/scws
。您亦可新增或自建自訂詞典。
SCWS 字典檔案格式
SCWS 支援純文字格式與二進制格式 xdb 字典,建議採用 xdb 格式以提升載入速度及減少記憶體使用。
純文字字典格式如下,每行一個詞條,詞條後可選擇加上詞頻(數字,愈大愈常用)及詞性:
詞彙1 [詞頻1] [詞性1]
詞彙2 [詞頻2] [詞性2]
...
1
2
3
2
3
例如:
人工智慧 1000 n
自然語言處理 800 n
ServBay 500 nz
1
2
3
2
3
將自訂詞彙存成純文字檔(如 my_dict.txt
),注意檔案編碼需與預期字元集一致(推薦 UTF-8)。
產生 xdb 格式字典檔
ServBay 已預載 SCWS 的 scws-gen-dict
工具,用以將純文字字典轉為 xdb 格式。
- 開啟 macOS 的終端機 (Terminal)。
- 用
cd
指令進入 ServBay 的 bin 目錄,或直接指定scws-gen-dict
完整路徑。通常於 ServBay 的 bin 目錄:bash請將/Applications/ServBay/bin/scws-gen-dict -i /path/to/your/my_dict.txt -o /Applications/ServBay/etc/scws/my_dict.utf8.xdb -c utf8
1/path/to/your/my_dict.txt
替換為實際詞典檔路徑,-o
為輸出的 xdb 檔案路徑與名稱,建議存於/Applications/ServBay/etc/scws
。-c utf8
指明輸入檔編碼。
設定 SCWS 使用字典檔案
產生 xdb 字典檔後,可於 PHP 程式中指定 SCWS 使用該字典:
php
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // 設定字元集,須與字典編碼一致
// 設定主字典路徑,支援 ServBay 預設詞典或自訂 xdb 檔
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// 若有多組字典可追加載入
$scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT); // SCWS_XDICT_TXT 表示追加自訂字典
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini'); // 設定規則檔,用於詞性標註等,ServBay 已預載
// ... 後續分詞操作 ...
?>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
set_dict()
設定主字典(建議用 SCWS 官方大型字典),add_dict()
可追加使用者自訂詞典。SCWS_XDICT_TXT
為常數,表示追加自訂詞典。
SCWS 使用範例
完成啟用並設定字典後,即可於 PHP 程式中呼叫 SCWS 進行分詞。例如:
php
<?php
// 確認 SCWS 擴充套件已載入
if (!extension_loaded('scws')) {
die('SCWS extension is not loaded.');
}
// 初始化 SCWS 物件
$scws = scws_new();
if (!$scws) {
die('Failed to initialize SCWS.');
}
// 設定字元集(需與文本與字典編碼一致)
$scws->set_charset('utf8');
// 設定字典檔路徑(ServBay 預設)
// set_dict() 設定主字典
$scws->set_dict('/Applications/ServBay/etc/scws/dict.utf8.xdb');
// add_dict() 可追加自訂字典
// $scws->add_dict('/Applications/ServBay/etc/scws/my_dict.utf8.xdb', SCWS_XDICT_TXT);
// 設定規則檔路徑(ServBay 預設),用於詞性標註等
$scws->set_rule('/Applications/ServBay/etc/scws/rules.utf8.ini');
// 設定分詞模式(選擇性,預設為 SCWS_XDICT_XPINYIN | SCWS_XDICT_DUALITY)
// SCWS_XDICT_XPINYIN: 分割 x 字元(非漢字),如 email、url 等
// SCWS_XDICT_DUALITY: 複合分詞(二元分詞)
// $scws->set_ignore(true); // 是否忽略標點
// $scws->set_multi(SCWS_MULTI_WORD | SCWS_MULTI_ZHONGCI); // 設定複合分詞層級
// 要分詞的繁體中文文本
$text = "ServBay 是一個強大的本地 Web 開發環境,支援 PHP、Node.js 和多種數據庫。";
// 傳送文本給 SCWS 處理
$scws->send_text($text);
// 取得分詞結果
echo "原始文本: " . $text . "\n\n";
echo "分詞結果:\n";
// 逐筆取得所有分詞結果
while ($result = $scws->get_result()) {
foreach ($result as $word) {
// $word 為關聯陣列,含 'word', 'idf', 'attr'(詞性)等資訊
echo "詞組: " . $word['word'] . " (詞性: " . $word['attr'] . ")\n";
}
}
// 釋放 SCWS 資源
$scws->close();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
將上述程式儲存為 .php
檔案(如 scws_example.php
),放至 ServBay 網站目錄(如 /Applications/ServBay/www/scws-test/
),於瀏覽器開啟 https://servbay.demo/scws-test/scws_example.php
即可看到分詞結果。
注意事項
- 確認已啟用之 SCWS 模組版本與您所用 PHP 版本相容。ServBay 已自動管理,但手動設定時須自行注意。
- 分詞效果高度仰賴詞典品質。針對特定領域,建議自訂或採用專業行業詞典。
- 確保 SCWS 設定檔(
scws.ini
)、字典檔(.xdb
)及規則檔(.ini
)路徑正確,且 PHP 執行程式需具讀取權限。 - 修改 PHP 設定後,務必重啟相關 PHP 套件使設定生效。
常見問題集 (FAQ)
Q: 已經透過 ServBay UI 啟用 SCWS,卻在 phpinfo()
無法看到?
A: 請確認是否重啟了正確的 PHP 套件。有時同時運行多組 PHP 版本,需重啟與您的網站綁定的那一組。如仍無法載入,可試著手動編輯 scws.ini
並檢查路徑與語法是否有誤。
Q: 如何建立與使用自訂字典?
A: 請參考本說明中的「建立與設定 SCWS 字典」章節,使用 scws-gen-dict
工具將純文字字典轉為 xdb 格式,並以 add_dict()
方法於 PHP 程式中載入自訂字典。
Q: SCWS 的規則檔(rules.utf8.ini
)用於何處?
A: 規則檔主要用於詞性標註及特殊分詞規則。ServBay 已預載預設規則檔,一般不需更改。
結語
ServBay 為開發者提供便捷方式啟用及管理 SCWS PHP 中文分詞模組。不論以直覺圖形介面或進階手動設定,都可輕鬆整合 SCWS 至您的 PHP 開發流程。搭配 ServBay 預載的 SCWS 工具及字典,無需繁瑣設定即可快速上手,充分發揮 SCWS 高效、精準處理繁體中文文本的優勢,提升 Web 應用(如搜尋、內容分析)中文處理能力。SCWS 的整合使 ServBay 的本地開發環境更完善、更具實用價值。