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は最適化された分かち書きアルゴリズムにより、大規模な中国語データを効率的に処理します。
- 高精度: 辞書と統計モデルの組み合わせにより、中国語分かち書きで高い精度を実現しています。
- 豊富な機能: 基本の分かち書きに加え、キーワード抽出や品詞タグ付けなどの高度な機能も利用できます。
- 簡単導入: シンプルなAPIインターフェースで、PHPアプリへの組み込みが容易です。
- オープンソース・無料: SCWSはオープンソフトウェアで、誰でも無料で利用・カスタマイズできます。
ServBayのSCWSプリインストール状況
ServBayは複数のPHPバージョンに対応しており、それぞれに合ったSCWSモジュールも標準搭載されています。執筆時点では、PHP 5.6~PHP 8.4の各バージョンにSCWS 1.2.3拡張がプリインストール済みです。
SCWS モジュールの有効化方法
デフォルトでは、SCWSモジュールは無効になっています。二つの有効化方法があり、ServBayのUIから行う方法と、設定ファイルを直接編集する方法です。
推奨: ServBay UIから有効化
最も簡単な方法です:
- ServBayメイン画面を開きます。
- 左側のナビゲーションバーで**言語 (Languages)**をクリックし、PHPを選択します。
- 右側のPHPバージョン一覧から、SCWSを有効化したいバージョン(例:
PHP 8.4
)を選びます。 - 対象バージョンの右側にある**拡張 (Extensions)**ボタンをクリックします。
- 表示された拡張リストから**
SCWS
**モジュールを探します。 SCWS
左のトグルスイッチを緑色にオンに切り替えます。- ウィンドウ下部の**保存 (Save)**ボタンをクリック。
- 設定反映のためPHPパッケージの再起動を求められるので、**再起動 (Restart)**ボタンをクリックします。
以上で選択したPHPバージョンにSCWSモジュールが有効になります。
設定ファイルを直接編集して有効化(上級者・トラブルシュート用)
より細かい調整やトラブル時には、PHP設定ファイルを直接編集できます:
設定ファイルの場所: 対象PHPバージョンの
conf.d
ディレクトリにある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(任意)ここで文字コードや辞書パスを指定可能ですが、通常は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編集後は
scws.ini
を保存して閉じます。PHPパッケージの再起動: ServBayメイン画面で**パッケージ (Packages)**に進み、編集したPHPバージョン(例:PHP 8.4)を再起動します(右側の丸矢印ボタン)。
SCWSモジュールの読み込みを確認する
有効化後、モジュールが正常に読み込まれたか、確認しましょう。一般的な方法はPHPのphpinfo()
出力をチェックすることです:
- ServBayの推奨ウェブルートである
/Applications/ServBay/www
に検証用フォルダ(例:scws-test
)を作成します。 - 配下(
/Applications/ServBay/www/scws-test
)にphpinfo.php
ファイルを新規作成します。 - 下記PHPコードをファイルへコピーします:php
<?php phpinfo(); ?>
1
2
3 - ServBayのWebサーバー(CaddyやNginx)が稼働し、
/Applications/ServBay/www
へアクセス可能であることを確認します。ServBayでは、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 [頻度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のターミナルを開きます。
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
で出力先を指定(/Applications/ServBay/etc/scws
推奨)。-c utf8
でエンコーディング指定。
PHPコードで辞書ファイルを指定する
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()
はメイン辞書(公式の大型辞書等)指定用。add_dict()
はカスタム辞書追加用で、SCWS_XDICT_TXT
は定数です。
SCWSの基本利用例
SCWSモジュール有効化&辞書設定済みなら、PHPコードで分かち書き関数を呼び出せます。以下、基本的な利用例です:
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);
// 規則ファイルパス設定(品詞タグ付け等/プリセット)
$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();
?>
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のWebディレクトリ(/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形式に変換し、PHPコードでadd_dict()
メソッドで読み込むだけです。
Q: SCWS規則ファイル(rules.utf8.ini
)とは何ですか?
A: 品詞タグ付け等、特殊な分かち書きルールを適用するためのファイルです。ServBayにはデフォルト規則ファイルがプリセットされているので、基本的に変更不要です。
まとめ
ServBayでは、SCWS PHP中国語分かち書きモジュールの有効化・管理が直感的なUIと柔軟な手動設定両方で可能です。SCWSツールやデフォルト辞書も充実しているため、初回導入からすばやく効率よく中国語テキスト処理機能をWebアプリ(検索、コンテンツ分析等)へ追加できます。豊富なServBayパッケージの一環として、SCWS統合はServBayローカル開発環境の多機能性・実用性をさらに高めています。