zhparser使用ガイド
zhparser
は、PostgreSQL向けのサードパーティ拡張モジュールで、中国語テキストの処理に特化しています。効率的なトークン分割と検索機能を提供し、さまざまな中国語テキストの処理シナリオに適しています。ServBayにはscws
(Simple Chinese Word Segmentation)が付属しており、zhparser
はscws
を使用してカスタム辞書を作成できます。この記事では、ServBayにおけるzhparser
のインストールと使用方法を詳しく紹介します。
zhparserのインストール
ServBayにはzhparser
拡張モジュールが既に付属しているため、データベースで有効にするだけで使用できます。以下はzhparser
を有効にする手順です:
PostgreSQLデータベースに接続する:
bashpsql -U your_username -d your_database
1拡張機能を作成する:
sqlCREATE EXTENSION zhparser;
1インストールを検証する:
sql\dx
1
zhparserの設定
zhparser
を有効にした後、中国語のトークン分割と全文検索を正しく行うためにいくつかの設定が必要です。
テキスト検索構成(Text Search Configuration)の設定
テキスト検索構成を作成する:
sqlCREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
1辞書を追加する:
sqlALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple;
1
zhparserを使用した全文検索
以下に、zhparser
を使用して全文検索を行う例を示します。
サンプルテーブルとデータの作成
テーブルを作成する:
sqlCREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT );
1
2
3
4サンプルデータを挿入する:
sqlINSERT INTO documents (content) VALUES ('我爱自然语言处理'), ('中文分词是文本处理的重要步骤'), ('zhparser是一个很好的中文分词工具');
1
2
3
4
全文検索インデックスの作成
- GINインデックスを作成する:sql
CREATE INDEX idx_gin_content ON documents USING gin (to_tsvector('chinese', content));
1
全文検索の実行
検索クエリを実行する:
sqlSELECT * FROM documents WHERE to_tsvector('chinese', content) @@ to_tsquery('chinese', '中文 & 分词');
1
2このクエリは、「中文」と「分词」の両方を含む文書を返します。
カスタム辞書
ServBayにはscws
が付属しており、特定のアプリケーション要件を満たすために、scws
を使用してカスタム辞書を作成できます。
カスタム単語の追加
カスタム辞書ファイルを作成する:
plaintext/Applications/ServBay/etc/scws/custom_dict.txt
1ファイルに単語を1行ずつ追加する:
plaintext自然语言处理 中文分词
1
2zhparser
をカスタム辞書を使用するように設定する:sqlSET zhparser.dict_path = '/Applications/ServBay/etc/scws/custom_dict.txt';
1
辞書の再読み込み
- 辞書を再読み込む:sql
SELECT zhprs_reload_dict();
1
トークン分割モードの調整
zhparser
は複数のトークン分割モードをサポートしており、必要に応じて調整できます。
トークン分割モードの設定
最細粒度のトークン分割モードに設定する:
sqlSET zhparser.seg_with_duality = true;
1最大粒度のトークン分割モードに設定する:
sqlSET zhparser.seg_with_duality = false;
1
まとめ
zhparser
は強力な中国語トークン分割ツールで、簡単な設定と使用によって、PostgreSQLで効率的な中国語全文検索を実現できます。ServBayにはzhparser
拡張モジュールが付属しており、さらにscws
が付属しているため、カスタム辞書を作成して使用できます。カスタム辞書とトークン分割モードの調整により、特定のアプリケーション要件に合わせてトークン分割効果を最適化することが可能です。