ServBayでSCWS PHP モジュールを有効化・設定する方法
ServBayはmacOS専用の強力なローカル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は、オープンソースの中国語分かち書きエンジンで、高いパフォーマンスと精度を誇ります。辞書マッチングと統計モデルを組み合わせ、素早く正確に中国語テキストを分かち書きできます。検索エンジンやテキストマイニング、コンテンツ分析、キーワード抽出、品詞分析など幅広いシーンで活用されています。
主な特徴
- 高性能な分かち書き: 最適化されたアルゴリズムにより、大量の中国語データも迅速に処理可能。
- 高い精度: 辞書と統計モデルの併用により、高精度な中国語分かち書きを実現。
- 豊富な機能: 基本的な分かち書きだけでなく、キーワード抽出や品詞付与など高度な処理も対応。
- 容易な統合: シンプルなAPIにより、PHPアプリへの組み込みも容易。
- オープンソース・無償: SCWSはオープンソースで、自由に利用・カスタマイズが可能。
ServBay同梱SCWS バージョン
ServBayは複数PHPバージョンをサポートし、それぞれに対応するSCWSモジュールもプリインストールしています。(執筆時点)PHP 5.6〜PHP 8.4まで全てSCWS 1.2.3拡張がプリセットされています。
SCWS モジュールの有効化方法
初期状態ではServBayでSCWSモジュールは無効となっています。有効化方法は2つ:ServBayのGUIから設定、もしくは設定ファイルを手動で編集する方法です。
おすすめ:ServBayのGUIから有効化
この方法が最も手軽で確実です:
- ServBayメイン画面を開きます。
- 左側のナビゲーションで言語 (Languages) をクリックし、PHP を選択。
- 右側に表示されるPHPバージョン一覧から、SCWSを有効化したいPHPバージョン(例:
PHP 8.4
)を選択。 - 選択したPHPバージョンの右の拡張機能 (Extensions) ボタンをクリック。
- 開いた拡張リスト内で
SCWS
モジュールを見つけます。 SCWS
左のスイッチをオン(緑色)に切り替えます。- 画面下部の保存 (Save) ボタンをクリック。
- ServBayからPHPパッケージを再起動するよう案内が出るので、再起動 (Restart) ボタンをクリック。
上記で、指定したPHPバージョンでSCWSモジュールが有効化されます。
設定ファイルを手動で編集(上級者・トラブル対応用)
より細かい制御やトラブルシューティングの際は、PHPの設定ファイルを直接編集できます:
設定ファイルの場所を特定: 対象PHPバージョンの
conf.d
ディレクトリを探します。SCWSの設定は通常以下のscws.ini
ファイルです。/Applications/ServBay/etc/php/X.Y/conf.d/scws.ini
1X.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(任意)ここでデフォルトの文字セットや辞書パスも指定できますが、コード内で動的に指定するほうが柔軟でおすすめです。ここで設定する場合は該当行をアンコメントし、値を編集してください。たとえば辞書が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バージョンを見つけたら、右側の再起動ボタン(丸い矢印アイコン)をクリックします。
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.demo
ドメインが/Applications/ServBay/www
にマッピングされています。 - ブラウザで
https://servbay.demo/scws-test/phpinfo.php
にアクセス。 - 表示されたPHP情報ページで「SCWS」というセクションを探します。バージョンや設定内容が表示されていれば、モジュールのロードは成功です。
(注:画像パスは例です。最新のServBay公式ドキュメントの画像をご参照ください)
SCWS 辞書の作成・設定
SCWSは辞書ベースの中国語分かち書きエンジンであり、その精度は用いる辞書の質に大きく依存します。ServBayはデフォルトのSCWS辞書・ルールファイルも標準搭載し、通常は /Applications/ServBay/etc/scws
配下に設置されています。カスタム辞書の作成・利用も可能です。
SCWS 辞書ファイル形式
SCWSはプレーンテキスト形式とバイナリ(xdb)形式の辞書に対応。xdb形式は高速&省メモリなので推奨されています。
テキスト辞書ファイルの例(一行ごとに語彙、(任意で)出現頻度、品詞を指定):
単語1 [頻度1] [品詞1]
単語2 [頻度2] [品詞2]
...
2
3
例:
人工知能 1000 n
自然言語処理 800 n
ServBay 500 nz
2
3
自作単語リストは、my_dict.txt
など任意のテキストファイルに保存(文字コードは必ず利用予定のエンコーディング—UTF-8推奨—に揃えること)。
xdb形式辞書ファイルを生成
ServBayにはSCWS公式提供の scws-gen-dict
が同梱されています。これでテキスト型辞書をxdb型へ変換できます。
- macOSのターミナル(Terminal)を起動。
cd
でServBayのbinディレクトリに入るか、scws-gen-dict
のフルパスを指定します。標準では次のように利用できます。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コード内で該当辞書を利用できます:
<?php
$scws = scws_new();
$scws->set_charset('utf8'); // 文字セットは辞書のエンコーディングに合わせる
// メイン辞書パス(デフォルトあるいは作成した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初期設定済み
// ... 以降で分かち書き操作 ...
?>
2
3
4
5
6
7
8
9
10
11
set_dict()
はメイン辞書(公的な大型辞書推奨)を、add_dict()
は自作のユーザー辞書を設定する際に使います。SCWS_XDICT_TXT
はカスタム辞書であることを示す定数です。
SCWS 利用例
SCWSモジュール有効化&辞書設定後、PHPコードからSCWS機能を呼び出して分かち書きできます。基本的な例は以下の通りです。
<?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: 非漢字文字(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();
?>
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の設定(
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化し、PHPコードでadd_dict()
メソッドで読み込めます。
Q: SCWSのルールファイル(rules.utf8.ini
)は何のため?
A: 品詞付与や特殊ルールのために利用されます。ServBayでは標準ルールファイルがプリセットされており、通常は編集不要です。
まとめ
ServBayは、SCWS PHP中国語分かち書きモジュールを手軽に導入・管理できる開発環境です。直感的なGUI操作でも、柔軟な手動設定でも、SCWSをPHPワークフローに簡単に統合できます。 ServBay同梱のSCWSツールやデフォルト辞書と組み合わせれば、すぐに中国語テキスト処理を開始可能。検索やコンテンツ分析などWebアプリで強力な中国語処理機能を手軽に構築できます。ServBayパッケージエコシステムの一部としてのSCWS統合により、ローカル開発環境の網羅性と実用性を一層高めています。