Ahogrammer

Deep Dive Into NLP, ML and Cloud

検索エンジンにBERTを組み合わせて検索性能を向上させる手法

SIGIR 2019より以下の論文を紹介。NLP2019でも発表されており、わかりやすいスライド付き。

この論文では、行政サイトにあるFAQの検索を検索エンジンとBERTを組み合わせて検索性能を向上させる手法を提案している。今までの課題として、通常の検索エンジンを使った場合、クエリとQAの間に表現のズレがあると上手く検索できない点を挙げている。たとえば、以下の画像の場合、ユーザのクエリに対して単純な記号マッチで検索すると「チューリップ運動」がヒットしてしまう。そこでこの論文では、通常の検索エンジンとBERTを組み合わせることでより柔軟な検索を実現している。実験の結果、提案手法が効果的であることを示した。

f:id:Hironsan:20191004072928p:plain
クエリとQAのマッチング(画像はスライドより引用)

手法としては、TSUBAKIとBERTを統合したモデルを提案している。TSUBAKIは同義表現や係り受けを考慮できる検索エンジン基盤であり、わかりやすく言えばElasticsearchのようなものだと考えればいい。手法をより具体的に説明すると、TSUBAKIで計算したクエリと質問間の類似度(q-Q類似度)とBERTで計算したクエリと回答間の類似度(q-A類似度)を統合してランク付けをしている。BERTに関して言えば、実際に集めたQAのペアを使って2値分類のモデルを学習させることで、質問と回答の関連を捉えている。

f:id:Hironsan:20191004074354p:plain
提案手法(画像はスライドより引用)

TSUBAKIとBERTの統合では単純統合とTSUBAKI優先統合の2種類を提案している。単純統合ではTSUBAKIとBERTのスコアを加算しランキングする方法となっている。一方、TSUBAKI優先統合はTSUBAKIのスコアがしきい値以上の場合には優先的にランキングする手法となっている。これは、TSUBAKIのスコアが高い場合は、クエリと質問間で重複した単語が多く使われていることから、正解である可能性が高いという仮説に基づいている。

実験結果は以下の通り。実験では尼崎市のFAQを対象に実験を行っている。SIGIRではそれに加えてStackExchangeも対象としている。結果を見るとTSUBAKIとBERTを組み合わせた手法はTSUBAKIやBERT単体の手法と比べて性能が大きく向上していることを確認できる。

f:id:Hironsan:20191004080908p:plain
実験結果

感想

以前にElasticsearchとBERTを組み合わせて類似文書検索という記事を書いた。この記事では簡単に試すことに主眼を置いていたので、性能面は気にしていなかったのだが、試した方はわかるように性能は良くない。そういうわけで、なにか良い手法がないかと思ってSIGIRを調べた結果、この論文に出会った。社内の問い合わせシステムの高度化なんかにも使えそう。

検索分野には詳しくないのでなんとも言えないが、前の記事でやったような固定長のベクトルだけを使って検索性能を出すというのはなかなか厳しいのではないかと思う。それよりは、今回の論文のような記号マッチングと組み合わせる手法の方が可能性があるように感じた。

BERTでテキストを固定長に変換するような手法が、対象テキストの長さによって性能がどのように変化するのは知りたいところ。GLUEを見るとBERT系のモデルが文類似度タスクが得意なのは確かであるが、その対象テキストは比較的短いものが多い。STS-Bでざっくりと見た場合、15語程度のテキストが多いという結果になっている。そうであるなら、文書全体を一つのベクトルにするのではなく、文に分割した後、各文をベクトルに変換してElasticsearchなりなんなりに放り込むというやり方も考えられる。このあたりは引き続きサーベイを行う。