スキーマの選定
Luxor Ver.2.0より日本語の検索精度を向上させるために形態素解析型トークナイザJapaneseTokenizer(以下はJPTと表記)を使用するスキーマを追加しました。
従来のドリーム・アーツがカスタマイズ開発したN-gram型トークナイザDATokenizer(以下はDATと表記)を使用するスキーマも提供します。DATとJPTのいずれかを選択する必要があります。
下記の説明を参照しご判断ください。
スキーマの種類
形態素
言語学の用語で、意味を持つ最小の単位のこと。ある言語において、それ以上分解しては意味をなさなくなるところまで分解して抽出された、音素のまとまりです。形態素解析方法を利用するには形態素辞書が必要となります。LuxorではSolrの標準辞書を利用し、定期的に更新します。
N-gram
機械的に、ある文字数(N)単位で、1文字ずつずらしながら単語として分割する方法です。
検索精度の評価指標
検索システムの精度を評価するにあたり、基本的な評価指標が二つあります。
- 再現率:検索結果がどれだけ網羅できているか。
- 適合率:検索結果の紛れがどれだけ少ないか
適合率、再現率共に高い検索システムが理想ですが、両者は通常トレードオフの関係にあり、一方を上げると他方が下がることが多いです。DAT、JPTそれぞれのスキーマを利用する際、それぞれの検索精度が期待されます。
- DAT:再現率の向上
- JPT:適合率の向上
分割差異
適合率を重視する検索ではJPTを使うことを推奨し、再現率を重視する検索では、DATを使うことを推奨します。下記文書のインデクシングを例にし、DATとJPTの分割差異を説明します。
協創・協働・協育はドリーム・アーツが提唱している働き方です。
DAT(再現率の向上)の場合
JPT(適合率の向上)の場合
ストップワードに関して注意
助詞のように情報を持たない単語"が"や"は"などはストップワードと呼ばれ、DAT、JPTスキーマのモードではインデックスが作られません。ストップワードとして扱う言葉の設定については、下記ファイルを参照してください。
ストップワード辞典名称:stopwords.txt
Path例:
/var/luxor/insuite/schedule/conf/stopwords.txt
すべての機能(schedule、library、binderなど)へこのファイルを適用しています。
DATとJPTの特徴は下記の表で比較します。ハイライト表示の欄は利用時のメリットとなります。
表 DATとJPTの特徴対照表
スキーマ方式 | 分ち書き(Index)速度 | 必要ディスク量 | 検索速度 | 分ち書き単語数 | 検索漏れ | 検索ノイズ | 検索可能な最小文字数(日本語)※3 |
---|---|---|---|---|---|---|---|
DAT | 速い | 大 | 遅い | 多い | 無し | 大 | 2文字 |
JPT | 遅い | 中 ※1 | 速い | 少ない | 有り※2 | 小 | 1文字 |
※1に関する説明
Ver.1.3.8からVer.2.0以降のバージョンへバージョンアップ後、JPTスキーマでは、インデックスサイズが小さくなることが確認出来ます。変化傾向は下表で示しています。
検証結果は、記載している検証条件への計測結果ですので、あらゆる環境で同じ結果が得られるわけではありません。
データ前提条件 | |
---|---|
Sm@rtDBデータ | バインダ:2004件 プロセス:5000件 文書:30万件文書があるバインダー(100部品) |
Luxorのバージョン | インデックスサイズ |
---|---|
Luxor Ver.1.3.8 | 9.1GB |
Luxor Ver.2.0(DATモード) | 5.7GB |
Luxor Ver.2.0(JPTモード) | 4.5GB |
※2に関する説明
JPTを利用するとき、形態素解析では文の構造を解析し、意味を持つ最小単位の単語に分割します。
検索語によっては検索漏れが生じる可能性があります。
下記の例で説明します。
「ドリーム・アーツ本社の所在地は恵比寿ガーデンプレイスタワー29Fにあります。」
文書に「恵比寿ガーデンプレイス」という固有名詞情報が含まれる。
文を解析して索引語に分割する。
分割される単語は「ドリーム」、「アーツ」、「本社」、「所在地」、「恵比寿ガーデンプレイス」、「タワー」、「29」、「f」となる。
【検索例】
「恵比寿ガーデンプレイス」で検索 → ヒットされる
「恵比寿ガーデンプレイスタワー」で検索 → ヒットされる
「恵比寿」で検索 → ヒットされない(検索漏れ)
「ガーデンプレイス」で検索 → ヒットされない(検索漏れ)
JPTを利用する時、未知語(中国語が混在される場合、未知語と同様に処理される)を1-gramでインデックスを作成して、未知語の検索漏れを防ぐことが出来ます。例えばドリーム・アーツ独自の単語「協働・協創・協育」は未知語と認識され、1-gramでインデックスを作成します。
ユーザが独自の辞書を定義することで、未知語の問題を回避できます。ユーザ辞書は、機能毎のディレクトリに作成される「userdict_ja.txt」を定義してください。
Path例:/var/luxor/insuite/schedule/conf/userdict_ja.txt
※辞書利用が必要なすべての機能(schedule、library、binderなど)にこのファイルを適用する必要があります。
また、通常の形態素解析では最適と思われるトークンの並びを一つだけ出力します。
例:「営業部長谷川」という文章は2種類の解釈があります。
一つ目は「営業」「部長」「谷川」
2つ目は「営業」「部」「長谷川」
通常の形態素解析を利用すると、前者のようにトークナイズします。しかし、Luxor Ver.2.0から利用するSolrがN-best機能を利用すると、両者ともトークナイズすることが出来、検索漏れが少なくなります。
※3に関する説明
DATを利用するとき、検索対象のテキストを2文字単位で1文字ずつずらして単語に分割し、インデクシングします。検索可能なキーワードを2文字単位の文字列に分けて検索を行います。
JPTを利用するとき、検索対象のテキストを意味を持つ単語まで分割し、インデクシングします。検索可能なキーワードを意味がある最小単位の文字列に分けて検索を行います。
例えば、下記のテキストに対し、「白 車」というキーワード、「すべての語を含む」条件で検索します。
車は世界でも日本でもトップの人気カラーは白です。
結果:
DATスキーマの場合: ヒットしない
JPTスキーマの場合: ヒットされる
JPT/DAT選定時のお勧め
Luxorバージョンアップする時、あるいは他の検索エンジンからLuxorへ切り替える時、検索仕様の統一性を保持したい場合は、
- 従来のLuxor Ver.1.Xの環境では、N-gramベースになるため、DATを指定する
- Sm@rtDBのLuceneの環境では、N-gramベースの文字列抽出方法であるため、DATを指定する
Ver.2.2以降のインストーラーでは、スキーマのデフォルト設定をDATにしています。
環境構築時、DATに変更してください。setup.confの「schemaISEVer」と「schemaSDBVer」にDATを指定してください。
完全一致検索
完全一致検索とは、キーワードと完全に一致する文字列を検索して、より精度の高い情報を探し出せる方法です。
Luxor では完全一致検索を対応していませんが、DATスキーマ(N-gram)は論理的に完全一致による検索結果が保証できます。
以下の例で説明します。
① ボールペンの性能を左右する先端の加工は特に重要で高度な技術力が要求される。
② 水性ボールペンの内部構造には、インクの貯留方式によって中綿式と直液式がある。
③ 油性ボールペンは1930-1940年代にビーロー・ラースローによって開発された。
④ ボールペンは様々な種類があり、水性、油性、ゲルインクやエマルジョンなどに分類されるようだ。
4つの例文に対し、「水性ボールペン」で検索する場合、
DATスキーマの場合、 ②がヒットされる
JPTスキーマの場合、 ②と④がヒットされる
上記検索結果のロジックを説明します。
検索ロジック
DAT: N-gramの方式で、分割された単語のAND検索となる
JPT: 形態素解析の方式で、分割された単語のAND検索となる
「水性ボールペン」というキーワードで検索する際に、DATとJPTの単語分割結果は下記となります。
DAT: 「水性」AND「性ボ」AND「ボル」AND「ルベ」AND「ペン」
JPT: 「水性」AND「ボールペン」
DATの場合はキーワードが機械的に2文字ずつ分割されるため、検索条件が多くなることでより完全一致検索の結果に近くなります。
なお、完全一致検索の対応はDAT、JPTモード共に今後のバージョンにて対応予定です。