ServBay 中的 SCWS 中文斷詞:安裝、設定與使用指南
ServBay 作為一款強大的本機 Web 開發環境,內建整合了許多開發者常用的工具與套件。SCWS(Simple Chinese Word Segmentation)是一個高效的中文斷詞系統,對於處理中文文本(如搜尋、自然語言處理、內容分析等)至關重要。ServBay 已經為您預先安裝了 SCWS 及其 PHP 模組,無需另行繁複設定。本文將詳細指引您在 ServBay 環境中如何設定與使用 SCWS,包括命令列工具及 PHP API 的應用方式。
概述
SCWS 是一款高效能的中文斷詞庫,特別適合需要大量中文文本高速、精確斷詞的應用場景。支援多種斷詞模式、可自訂詞典與規則,是架構中文搜尋、內容推薦、文本分析等應用的基礎工具之一。ServBay 已將 SCWS 整合於其套件並提供預先編譯之 PHP 擴充套件,大幅簡化您在本機開發環境使用 SCWS 的流程。
前提
- 您已在 macOS 作業系統上成功安裝並運行 ServBay。
安裝與設定
安裝
ServBay 的設計理念是提供一個開箱即用(即開即用)的開發環境。作為重要的中文處理工具,SCWS 已作為 ServBay 的一部分預先安裝於系統,您無需另外下載或編譯即可使用。相關的執行檔、設定檔及詞典等都集中存放於 ServBay 的安裝目錄,預設路徑通常為 /Applications/ServBay/
。
設定
SCWS 的預設設定檔位於 ServBay 安裝目錄下的 /Applications/ServBay/etc/scws/scws.ini
。您可依照自己的需求調整此檔案,變更 SCWS 的斷詞行為、字元集、詞典及規則等設定內容。
以下為預設設定檔的範例內容:
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
2
3
4
5
6
7
8
[charset]
:指定預設字元集,通常建議使用utf8
。[rule]
:設定斷詞規則檔案路徑。[dict]
:指定斷詞詞典檔案路徑。您可以指定多個詞典檔案,並以逗號,
分隔。
基本使用:命令列工具
SCWS 提供強大的命令列工具 scws
,方便您直接於終端機進行斷詞測試或批量處理文本。ServBay 已經將 scws
執行檔涵蓋在其 bin
目錄下,且 /Applications/ServBay/bin
通常已加入系統 PATH 變數,您可於終端機直接呼叫 scws
指令。
斷詞範例
以下是幾個基本的 scws
命令列工具使用示例:
斷詞單一字串
透過管道將字串輸入 scws
命令:
echo "這是一個中文斷詞的例子" | scws -i
從檔案讀取文本進行斷詞
使用 -i
參數指定輸入檔案,-o
指定輸出檔案:
scws -i input.txt -o output.txt
指定斷詞規則
用 -r
參數自訂規則檔案路徑:
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
指定詞典
用 -d
參數指定自訂詞典檔案路徑:
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
進階使用
自訂詞典
為提升斷詞精準度,尤其面對行業術語、人名、地名或新詞時,您可以自建詞典。SCWS 採用高效的 xdb
格式詞典。可利用 ServBay 內建的 scws-gen
工具,將純文字格式詞典轉換為 xdb
檔案。
建立自訂詞典步驟:
建立一個文字檔(如
custom_dict.txt
)。每行為一詞,後方可選擇加上空格及詞語權重(整數值,影響斷詞優先度)。ServBay 10 本機開發環境 8 中文斷詞 9
1
2
3使用
scws-gen
轉換為xdb
格式詞典,同樣工具位於 ServBay 的bin
目錄。bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1編輯 SCWS 設定檔
/Applications/ServBay/etc/scws/scws.ini
,在[dict]
區塊將您的自訂詞典路徑新增於預設詞典之後,以逗號,
分隔。ini[dict] dict = /Applications/ServBay/etc/scws/dict.utf8.xdb,/path/to/your/custom_dict.xdb
1
2請確保
/path/to/your/custom_dict.xdb
為您的實際自訂詞典檔案路徑。
調整斷詞規則
斷詞規則檔(預設為 /Applications/ServBay/etc/scws/rules.ini
)決定 SCWS 如何處理歧義或複雜的中文結構。編輯規則檔需對 SCWS 演算法有較深認識。對多數使用者來說,預設規則搭配自訂詞典即可滿足需求。若需調整,請小心操作,並參考 SCWS 官方文件(如 ServBay 內之 SCWS 版本含相關說明)。
範例規則檔內容(通常包含模式化比對規則):
[rule]
# 可於此新增自訂斷詞規則
# 例如:定義一個簡單規則
# pattern = result
2
3
4
PHP API 使用
對於以 PHP 架設 Web 應用的開發者而言,ServBay 預設內建 SCWS PHP 擴充套件。您無需額外安裝或設定,即可於 PHP 程式中直接呼叫 SCWS API 進行中文斷詞處理。
您可透過 ServBay 內建 phpinfo()
頁面檢查 SCWS 擴充是否啟用。
使用範例
以下為 PHP 程式範例,說明如何調用 SCWS API 完成斷詞:
<?php
// 確認 SCWS 擴充已載入
if (!extension_loaded('scws')) {
die("SCWS extension is not loaded.");
}
// 待斷詞的文本
$text = "ServBay 是一款強大的本地 Web 開發環境,支持 PHP、Node.js、Python 等多種語言,並集成了 MySQL、Nginx 等軟體包。";
// 開啟 SCWS 斷詞器實例
$sh = scws_open();
// 設定字元集,需與您的文本編碼一致
scws_set_charset($sh, 'utf8');
// 設定詞典與斷詞規則檔路徑
// 請確保這裡的路徑請使用 ServBay 環境中 SCWS 檔案的實際位置
$dict_path = '/Applications/ServBay/etc/scws/dict.utf8.xdb';
$rule_path = '/Applications/ServBay/etc/scws/rules.ini';
if (!file_exists($dict_path)) {
die("SCWS dictionary file not found: " . $dict_path);
}
if (!file_exists($rule_path)) {
die("SCWS rules file not found: " . $rule_path);
}
scws_set_dict($sh, $dict_path);
scws_set_rule($sh, $rule_path);
// 傳送待斷詞的文本予 SCWS 實例
scws_send_text($sh, $text);
// 取得斷詞結果
echo "原始文本: " . $text . "\n";
echo "斷詞結果:\n";
// 逐一取得與印出結果
// $res 為陣列,每個元素為一斷詞(含詞語、詞性等資訊)
while ($res = scws_get_result($sh)) {
foreach ($res as $word_info) {
// 印出詞語本身
echo $word_info['word'] . " ";
// 若需要,可印出詞性等資訊,例如:
// echo "詞語: " . $word_info['word'] . ", 詞性: " . $word_info['attr'] . ", 權重: " . $word_info['idf'] . "\n";
}
}
echo "\n";
// 關閉 SCWS 斷詞器實例,釋放資源
scws_close($sh);
?>
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
檔,如 segment_test.php
,放於 ServBay 網站根目錄 /Applications/ServBay/www/servbay.demo/
下(假設已有名為 servbay.demo
的網站設定),之後可用瀏覽器瀏覽檔案或於終端機用 PHP CLI 執行來查看斷詞效果。
常用函式
以下為 SCWS PHP 擴充常用核心函式:
scws_open()
: 初始化並開啟 SCWS 斷詞器實例。成功時回傳資源,失敗則回傳false
。scws_set_charset($sh, $charset)
: 設定實例$sh
的字元集。scws_set_dict($sh, $dict_path, $mode = SCWS_XDICT_TXT)
: 設定$sh
的詞典路徑,$mode
指定詞典檔格式,SCWS_XDICT_TXT
代表純文字(已不推薦,建議用xdb
),通常直接給xdb
路徑即可。scws_set_rule($sh, $rule_path)
: 設定$sh
分詞規則檔路徑。scws_send_text($sh, $text)
: 傳送待斷詞的$text
予分詞器$sh
。scws_get_result($sh)
: 由分詞器取得斷詞結果陣列。每次呼叫回傳分詞詞語資訊,無下一結果時回傳false
。scws_close($sh)
: 關閉斷詞器實例$sh
,釋放資源。
更多進階函式(如忽略標點、調整斷詞模式、取得詞權重…等),請參閱 SCWS PHP 官方文件。
常見問題解答 (FAQ)
1. SCWS 斷詞結果不夠精確怎麼辦?
- 解決方案:請先檢查
/Applications/ServBay/etc/scws/scws.ini
中設定的詞典 (dict
) 與規則 (rule
) 檔路徑是否正確,確保檔案存在且可存取。如針對特殊領域文本或新詞推薦自建詞典(以scws-gen
產生xdb
檔),並於設定檔內加入自訂詞典路徑。適當調整詞典權重或規則也有助於改善,但需更深入理解 SCWS。
2. SCWS 效能不佳、斷詞慢?
- 解決方案:請確認使用的是高效能的
xdb
格式詞典,而非舊式純文字詞典。xdb
優化後載入與查詢速度更快。設定詞典時確保所用路徑指向xdb
檔案。若需處理大量文本,建議可分批處理。
3. SCWS 命令列工具無法運作,出現找不到指令訊息?
- 解決方案:多為 ServBay 執行檔路徑未加進系統 PATH 造成。可考慮用完整路徑執行,如
/Applications/ServBay/bin/scws -i ...
。或將/Applications/ServBay/bin
加入 shell 設定檔(如~/.bash_profile
,~/.zshrc
等)的 PATH 變量,並重新讀取設定或重啟終端機。
4. 在 PHP 中呼叫 scws_open()
失敗或找不到相關函式?
- 解決方案:這代表 ServBay 所用 PHP 環境未正確載入 SCWS PHP 擴充。請至 ServBay 控制面板確認您的 PHP 版本,並檢查該版本之
phpinfo()
頁面(通常由 ServBay 提供捷徑)確定是否已啟用scws
擴充。如未啟用,請檢查 ServBay PHP 設定檔(php.ini
)是否含有extension=scws.so
等設定,並且scws.so
檔案放於 PHP 擴充目錄(ServBay 已預設配置)。若仍有問題,可嘗試重啟 ServBay 服務。
總結
SCWS 屬功能強大且高效的中文斷詞系統。透過 ServBay 預載軟體包及 PHP 擴充,開發者可於 macOS 本機環境中快速安裝、設定並運用 SCWS,無論透過命令列批次處理文本,還是在 PHP 應用實現動態斷詞功能皆十分便捷。依照本指南操作,您將能極速上手並在專案中靈活運用 SCWS,顯著提升中文文本處理的能力。