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
にあります。分かち書き動作や文字コード、使用辞書、ルールの調整など、用途に合わせてこのファイルを編集できます。
サンプル設定ファイル内容:
ini
[charset]
default = utf8
[rule]
rules = /Applications/ServBay/etc/scws/rules.ini
[dict]
dict = /Applications/ServBay/etc/scws/dict.utf8.xdb
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
[charset]
:デフォルト文字コード指定。通常はutf8
のまま推奨。[rule]
:分かち書きルールファイルのパス指定。[dict]
:辞書ファイルのパス指定。複数辞書を利用する場合はカンマ区切りで記載。
基本的な使い方:コマンドラインツール
SCWSは強力なコマンドラインツールscws
を同梱しており、ターミナルでの分かち書きテストや一括処理が簡単に行えます。ServBayはscws
実行ファイルをbin
ディレクトリに収めており(通常は /Applications/ServBay/bin
)、このパスがPATH環境変数に追加されているため、そのままターミナルでscws
コマンドが呼び出せます。
分かち書き例
基本的なscws
コマンド利用例:
文字列の分かち書き
パイプで文字列をscws
コマンドに渡す:
bash
echo "这是一个中文分词的例子" | scws -i
1
ファイルからテキストを読み込んで分かち書き
-i
で入力ファイル、-o
で出力ファイルを指定:
bash
scws -i input.txt -o output.txt
1
分かち書きルールの指定
-r
でカスタムルールファイルパスを指定:
bash
scws -i input.txt -o output.txt -r /path/to/your/rules.ini
1
辞書ファイルの指定
-d
でカスタム辞書ファイルパスを指定:
bash
scws -i input.txt -o output.txt -d /path/to/your/dict.utf8.xdb
1
応用的な活用法
カスタム辞書の作成
業界用語や人名・地名・新語への対応など、精度をさらに向上させるため独自辞書を作成できます。SCWSは高速なxdb
形式の辞書を利用します。ServBay同梱のscws-gen
コマンドでテキスト形式からxdb形式への変換も可能です。
カスタム辞書作成手順
テキストファイル(例:
custom_dict.txt
)を作成。1行につき1単語、空白と整数(重み付け)を任意で記載。ServBay 10 ローカル開発環境 8 中国語分かち書き 9
1
2
3scws-gen
ツール(bin
ディレクトリ内)でxdb形式辞書を生成。bashscws-gen -i custom_dict.txt -o custom_dict.xdb
1SCWS設定ファイル
/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公式ドキュメント等もご参照ください。
ルールファイルの一例:
ini
[rule]
# ここにカスタム分かち書きルールを記載できます
# 例:パターンの定義
# pattern = result
1
2
3
4
2
3
4
PHP APIの利用
PHPでWebアプリを開発している場合、ServBay内蔵のPHP環境にはSCWS拡張が標準で組み込まれており、別途拡張インストールや設定は不要です。PHPコード内からSCWS APIを即時に呼び出して中国語分かち書きが可能です。
SCWS拡張の有効化状況は、ServBayのphpinfo()
ページからも確認できます。
利用例
以下はSCWS APIによる簡単なPHPサンプルです:
php
<?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_send_text($sh, $text);
// 結果取得
echo "元テキスト: " . $text . "\n";
echo "分かち書き結果:\n";
// 結果を繰り返し取得・出力
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);
?>
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
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
このコードを.php
ファイル(例:segment_test.php
)として保存し、ServBayのWebルート /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が標準)。scws_set_rule($sh, $rule_path)
: 分かち書きルールファイルのパス指定。scws_send_text($sh, $text)
: テキスト$text
を分かち書き器へ送信。scws_get_result($sh)
: 分かち書き結果を得る。1呼び出しで単語リスト配列が返り、データ尽きるとfalse
。scws_close($sh)
: インスタンスをクローズしリソース解放。
その他、高度な関数(句読点無視、モード指定、重み取得など)は公式SCWS PHPドキュメントをご参考ください。
よくある質問 (FAQ)
1. SCWSの分かち書き精度が悪い・おかしい
- 対応策:まず設定ファイル
/Applications/ServBay/etc/scws/scws.ini
に指定された辞書(dict
)・ルール(rule
)ファイルのパスが正しいか、ファイルが存在し読込可能か確認してください。特定分野の語彙や新語はカスタム辞書(scws-gen
でxdb化)を作成し、設定に追加しましょう。辞書の重み調整やルールファイルの変更も効果的ですが、SCWSの仕組み把握が重要です。
2. SCWSの動作が遅い・パフォーマンスが悪い
- 対応策:旧来のテキスト形式ではなく高速化された
xdb
形式辞書を必ず利用してください。xdb
は読み込み・検索が高速です。設定ファイル内のdictパスがxdb
ファイルを指しているか確認。巨大テキスト処理時は分割しての段階処理も検討しましょう。
3. SCWSコマンドが動作しない・コマンドが見つからない
- 対応策:
/Applications/ServBay/bin
ディレクトリがPATHに追加されていない可能性が高いです。コマンド実行時にフルパス(例:/Applications/ServBay/bin/scws -i ...
)で起動する、もしくはシェルの設定ファイル(~/.bash_profile
や~/.zshrc
など)のPATHに追加し、設定ファイルを再読み込みまたはターミナルを再起動してください。
4. PHPでscws_open()
呼び出し時に関数がない/失敗する
- 対応策:これはServBayのPHPでSCWS拡張が読み込まれていない場合に発生します。ServBayコントロールパネルでPHPバージョンを確認し、その
phpinfo()
ページ(ショートカットあり)にてscws
が有効かチェックしましょう。未有効なら該当バージョンのphp.iniにextension=scws.so
記述があるか、scws.so
自身が拡張ディレクトリに存在するか再確認。ServBayはこれらをあらかじめ設定済みです。問題が続く場合はServBayサービスの再起動も試してください。
まとめ
SCWSはパワフルかつ高効率な中国語分かち書きシステムです。ServBayのプリインストールパッケージおよびPHP拡張を活用することで、macOSローカル環境でも簡単にSCWSの導入・設定・利用が実現できます。コマンドラインによるファイル分かち書きから、PHPアプリでの動的な分かち書き処理まで、この記事のガイドに従うことで素早くSCWSを活用でき、中国語テキスト処理の生産性向上に貢献します。