HSPELLに基づいたヘブライ語テキストの全文検索辞書テンプレートを提供するシンプルで単純なpostgreSQL拡張機能。
ヘブライ語は、伝統的にドキュメント取得タスクを実行するのが難しいと考えられています。その豊富な形態は、言葉が一方で非常に多くの変曲を持っていることを意味し、ホモグラフの広範な存在は曖昧さにつながります。それはすべて、ヘブライ語のテキストを扱うとき、全文検索システムが箱から出してリコール不良に苦しむ傾向があることを意味します。
pg_hspell 、データベースの組み込みフルテキスト検索サブシステムを使用するときにそのようなタスクを支援しようとするPostgreSQL拡張機能です。 HSPELLプロジェクトが提供する辞書および言語情報を使用して、構成パイプラインの一部としてヘブライ語を滑符化するPostgres辞書テンプレートを提供します。
ヘブライ語のトークンのみが対処されています。ヘブライ文字が含まれていないトークンは認識されず、構成内の次の辞書に転送されます。
設定可能な停止単語リストに表示されるヘブライ語トークンは削除されます。
Hspellの辞書の有効なエントリであるトークンの場合、すべての可能な補題は異なるバリアントとして放出されます。
他のすべてのトークンは、そのまま放出されます。
GNU/Linuxシステム
postgreSQL 9.6+ - 以前のバージョンも機能する可能性がありますが、とにかく正式にサポートされていません
libhspell、 --enable-linginfo configureフラグ(通常はone)でコンパイルされています
現在、 pg_hspellソースコードから構築する必要があります。 PostgreSQLおよびHSPELL用の開発サポートファイル(ヘッダーなど)が利用可能であることを確認してください。
構築してインストールするには、実行してください。
$ make install
これにより、現在のパスで見つかったpg_configの最初のインスタンスによって決定されたPostgreSQLインストールに対して構築され、インストールされます。特定のインストール(またはパスにないもの)をターゲットにするには:
$ make install PG_CONFIG=/path/to/pg_config
拡張機能をデータベースにロードするには、適切に許可されたユーザーとして次のSQLコマンドを実行します。
CREATE EXTENSION pg_hspell;これにより、現在のスキーマには、一般的なヘブライ語の停止単語のバンドルリストで構成されたhspellと呼ばれる全文辞書が配置されます。別のストップワードリストを持つ辞書を作成するには(またはまったくありません)、次のSQLコマンドのようなことを行います。
CREATE TEXT SEARCH DICTIONARY my_hspell_dict (
TEMPLATE = hspell,
[ STOPWORDS = my_stop_words_file ]
);他のすべてのテキスト検索辞書テンプレートと同様に、停止ワードリストは、データベースサーバーの$SHAREDIR/tsearch_dataディレクトリに保存され、 .stop拡張機能を備えている必要があります。上記の例では$SHAREDIR/tsearch_data/my_stop_words_file.stopを探します
辞書は、PostgreSQLマニュアルで説明されているように、テキスト検索構成に統合する必要があります。この拡張機能は、事前定義された構成を提供しません。
hspellディレクトリテンプレートはヘブライ文字を含むトークンのみを認識するため、 word 、 hword 、 hword-partタイプのトークン(デフォルトのパーサーを仮定)のマッピングに基づいて辞書を設定することのみが理にかなっています。
上記のように、トークンがhspellの辞書によって認識される場合、それはすべて放出される可能性のあるすべての補題を放出します(例えば、 הרכבת 、、 רכבת 、およびהרכיב הרכבהすべて放出されます)。これはリコールにとって有益ですが、もちろん精度を傷つける可能性があります。現時点では、この拡張機能は形態学的除去を実行しません - とにかく、これは文のコンテキストを必要とします。
停止ワードフィルタリングは、入力トークン自体に適用されます。ヘブライ語では、ストップワードのあいまいさは特に問題があります(例については、このブログ投稿を参照)ので、ストップワードリストを作成するときはそれを考慮したり、使用したいかどうかを検討してください。
Hspellは点線のテキストを利用することはできません。実際、そのようなテキストは、ISO-8859-8エンコーディングでも表現することはできません。現在、NIQQUDを含むトークンは、この辞書テンプレートでは認識されません!
ドット付きテキストの処理が必要な場合、 pg_hspell辞書にテキストを渡す前に、NIQQUDを剥がす必要があります。これは、アクセントモジュールに適したルールセットを作成することで実現できます。将来、 pg_hspellこれを直接実行する可能性があります。
PostgreSQLに含まれるデフォルトのテキスト検索パーサーは、通常、句読点(つまりアポストロフィと引用符のマーク)と見なされるヘブライ語に固有のコーナーケースを正しく処理しないことに注意してください。このような場合は、頭字語と略語のヘブライ語のコンピューターテキストでは一般的であり、予想どおりトークン化されない場合があります。
例えば:
postgres=# select * from ts_parse('default', $$ נתב"ג $$);
tokid | token
-------+-------
2 | נתב
12 | "
2 | ג
これは、 pg_hspellに固有のものではなく、対処する範囲内ではありません。特に厄介な特定のインスタンスがある場合、それらはシソーラス辞書を回避することができます。また、これを正しく処理するPG_ICU_PARSER拡張機能によって提供されるパーサーを考慮することもできます。
pg_hspell自体は、Mozilla Public License 2.0に基づいてライセンスされています。付属の停止ワードリストは、Guy Saarによって作成され、MITライセンスの下でリリースされたhttps://github.com/fergiemcdowall/stopwordから抽出されたものに基づいています。