ABOUT
ロンウイットについて

情報検索のための自然言語処理と機械学習

自然言語処理・機械学習ロンウイットでは、お客様によりよい検索システムをご提供するためにこれらの技術を随所に導入しています。

よりよい検索システムとは?

それではロンウイットが考える「よりよい検索システム」とは何でしょうか。我々は、ユーザーが欲しいと思っている情報を素早く提供できるシステム、が「よりよい検索システム」であると考えています。非常にシンプルですね。しかしこれが意外に難しいのです。

なぜ難しいのでしょうか。それは、相反する2つの利益を同時に追い求める必要があるためです。

1つめの利益は、「ユーザーの欲しい情報を漏れなく返す」ということ。もし「検索漏れ」があると、ユーザーはキーワードを変えながら何度も検索しなければならず、欲しい情報にたどり着くために余計な時間がかかってしまいます。

2つめの利益は、「ユーザーの欲しい情報だけを返す」ということ。もしユーザーの欲しくない余分な情報(「検索誤り」と呼びます)が検索結果に含まれると、ユーザーは検索結果一覧の中からいちいち文書をクリックして中身を確認しなければならず、これも大変な時間がかかる要因となります。

これら2つの利益の追求は、トレードオフの関係にあることが知られています。つまり、1つめの利益を追求するために、「検索漏れ」が小さくなるように検索システムをチューニングすると、検索結果一覧が大きくなり、「検索誤り」が多く含まれるようになります。逆に、2つめの利益を追求するために、「検索誤り」が小さくなるように検索システムをチューニングすると、検索結果一覧が小さくなり、「検索漏れ」が多く発生するようになります。

しかしロンウイットが考える「よりよい検索システム」をお客様にご提供するためには、これらの利益を同時に追求する必要があります。ではどうするのか?そこでこの問題を解決するために、自然言語処理と機械学習の技術を導入しています。以下、この方法を簡単にご紹介します。

漏れなく検索するには?

「検索漏れ」を低減するには、一般的には次のような方法があります。

  • 文字N-gramの利用
  • 文字の正規化
  • 類義語辞書の適用

そしてこれらはすべてApache Lucene/Solrで機能が提供されています。「文字N-gramの利用」は、適切なAnalyzerを設定することに対応します。「文字の正規化」と「類義語辞書の適用」はそれぞれの辞書を設定することに対応します。「文字の正規化」では半角全角/新旧漢字/・・・などの表記揺れを辞書によって吸収します。「類義語辞書の適用」では「首相」と「内閣総理大臣」などのキーワードを同一のものとして辞書に定義し、どちらのキーワードで検索しても文書がヒットするようにします。

Apache Lucene/Solrではこれらの表記揺れ辞書を設定できますので、辞書さえ用意すれば「検索漏れ」を低減できます。文字は有限であるため、「文字の正規化」については何とか人手で辞書を整備することができます。しかし、「類義語辞書の適用」についてはそうもいきません。言葉(キーワード)は日々生み出されていくため、類義語辞書は人手によるメンテナンスでは限界があります。

では辞書ベンダーから辞書を購入すれば問題は解決するでしょうか。それも一つの方法です。しかし、そのような辞書は一般用語が多く含まれ、お客様の業務ドメインには必ずしもマッチしないため、非常に高価なものとなってしまいます。そこで我々は、お客様が業務を通じて日々生産し保有する「テキストデータ」(「コーパス」と呼びます)から自動的に類義語辞書を出力して、足りない部分を人手でメンテナンスする方法をご提案しています。このために、自然言語処理と機械学習を活用しています。

以上述べた方法で、「検索漏れ」は低減できます。しかし一方で、トレードオフの関係にある「検索誤り」は大きくなってしまいます。では次に、大きくなってしまった「検索誤り」を低減する方法について見ていきましょう。

必要なものだけ検索するには?

一般に、「検索誤り」を低減するには、前述の「文字N-gramの利用」に対して「形態素解析器の利用」があげられます。しかしここでは、「検索漏れ」を低減した上で大きくなってしまった「検索誤り」を小さくする方法を見つけなければなりません。同時に解決することはできないので、我々は次の方法で「検索誤り」の低減、つまり検索精度を向上することをご提案しています。

  • Apache Solrのファセットと絞り込み検索を活用
  • ランキングチューニング

最初の方法は、Apache Solrの機能である、「ファセット」機能を活用し、ユーザーの条件に合った検索結果に徐々に絞り込んでいく、というものです。ただこのためには、検索対象文書が構造化されている必要があります。しかし世の中には構造化されていない文書が多数存在し、せっかくのSolrのファセット機能が使えません。そこでロンウイットでは、そのような非構造化文書も自然言語処理や機械学習を適用することで、構造化文書に変換します。具体的には、お客様のテキストデータからキーワード抽出や固有表現抽出を行い検索のインデクシング時に構造化することで、Solrの機能を有効活用できるようにしています。

2番目の方法は、ランキング(検索結果の表示順のこと)を適切にチューニングすることで、見かけ上の検索精度を高めよう、というものです。Solrにはフィールドの重みを調整することでランキングを静的に調節する機能がありますが、これには限界があります。そこでランキングの推定に機械学習の枠組みを応用した「ランキング学習(Learning-to-Rank)」を使います。ランキング学習は正解ラベルのついた教師データを用いる教師あり学習となります。一般的に教師データの収集は高コストとなりますが、ロンウイットのサブスクリプション・パッケージはランキング学習の教師データの収集に必要なインプレッションログ出力と、クリックモデルによる教師データ生成機能を提供していますので、低コストでランキング学習モデルを作成することができます。お客様の手を煩わすことはありません。

まとめ〜よりよい検索システムのためのビッグデータの活用

まとめると、ロンウイットではお客様によりよい検索システムをご提供するため、お客様のビッグデータを活用します。そのための手段として自然言語処理や機械学習を用いています。

目的機能やツール活用するお客様データ
検索漏れの低減類義語辞書の自動生成お客様業務のテキストデータ。通常検索対象文書と等しいため、特別にご用意いただく必要はございません。
検索誤りの低減キーワード抽出、固有表現抽出
ランキング学習、クリックモデルインプレッションログ

関連リンク

トレーニングコース

ロンウイットのトレーニングは、Lucene/Solrの経験豊富なコミッターの
監修のもと開発されたハンズオン(実習)形式のコースです。

セミナー

ロンウイットのApache Software Foundationコミッターが、情報検索の基礎、自然言語処理、そして、ユーザにとっての効果についてご説明させていただきます。