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なりなんなりに放り込むというやり方も考えられる。このあたりは引き続きサーベイを行う。

生体医療分野における自然言語処理の10種競技

ACL 2019より以下の論文を紹介。

この論文では、生体医療分野の自然言語処理におけるベンチマークの提案とベンチマークに対する転移学習性能の評価を行っている。最近の自然言語処理ではモデルの総合的な性能を評価するためにGLUEというベンチマークが使われる。GLUEには文類似度や推論といったタスクのデータセットが含まれ、これらを使ってモデルの総合的な性能のスコアを算出する。この論文で提案しているのはその生体医療版とでも言うべきベンチマーク(BLUE)で、5つのタスクと10のデータセットが含まれる。BERTを用いたモデルを使って性能を測定したところ最高性能となった。

作成したベンチマークであるBLUEには5つのタスクと10のデータセットが含まれる。以下の表に全体像を示す。タスクとしては、文類似度(Sentence similarity)、固有表現認識(NER)、関係抽出(Relation extraction)、文書分類(Document classification)、推論(Inference)の5つとなっている。

f:id:Hironsan:20191003060718p:plain
BLUEのタスク

文類似度タスクは、文のペアが与えられたときにその類似度を予測するタスクとなっている。学習用データセットの類似度は人間がラベル付けしており、データセットにもよるが0から5くらいの値が使われている。この数字が高いほど類似性が高いことを示す。この人間が付けた類似度とモデルが予測した類似度の相関によって性能が評価される。イメージを掴むために、以下に例を示した。

類似度 文1 文2
5.0 東京 東京
5.0 太郎と花子は友達だ 太郎と花子は友人だ
0.0 お化け屋敷怖い ラーメンが好き

固有表現認識は、テキスト中で固有表現が出現する位置を特定し、人名や地名などの固有表現タイプを付与するタスクのことを指している。一般的には人名や地名、組織名といったタイプがよく使われているが、生体医療分野の場合は化学物質名や病気名といったタイプが使われることになる。以下に固有表現認識の例を示した。

f:id:Hironsan:20191003082505p:plain
固有表現認識の例

関係抽出はテキスト中に出現する固有表現間にある関係を予測するタスクとなっている。たとえば、「バラク・オバマとミシェル・オバマはXX年に結婚した」というテキストがあったとする。その場合、固有表現として「バラク・オバマ」と「ミシェル・オバマ」、その間の関係としては「夫婦」を予測するといった具合になる。以下に関係抽出の例を示した。

f:id:Hironsan:20191003085942p:plain
関係抽出の例

文書分類についてはご存知だと思うので割愛して、推論について説明する。推論というのは、与えられた前提(Premise)の元で仮説(Hypothesis)が正しい(entailment)か否(contradiction)かを判断するタスクとなっている。イメージを掴むために以下に例を示した。正しいか否か以外にどちらとも言えない(neutral)が含まれることもある。

ラベル 前提 仮説
contradiction ある東アジアの国で、ある男が制服を検査している。 ある男は眠っている。
neutral 年配の男と若い男が笑っている。 二人の男が笑みを浮かべて、床で遊ぶ猫を笑っている。
entailment 男たちがサッカーで遊んでいる。 男たちがスポーツをしている。

実験ではBERTとELMoを使ったモデルを使って、10種類のデータセットに対する性能を測定している。BERTの事前学習は、医学・生物学文献データベースであるPubMedから論文のアブストラクトを抽出したテキストと健康関連のデータベースであるMIMIC-Ⅲを使って行っている。ELMoの方はPubMedを使っている。実験結果は以下の表の通り。

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

結果を見ると、すべてのタスクにおいてBERTを事前学習したモデルが最高性能(SOTA)を出していることがわかる。特にBERTのBASEモデルをPubMedとMIMIC-Ⅲのテキストを使って事前学習させたモデルが好成績を収めている。

感想

医療分野の自然言語処理ってどういうタスクが行われていて、現状どのくらいの性能が出ているのが気になっているときに見つけた論文。ちょうどこの論文ではよく使われるデータセットに対してSOTAを出していたので、ジャストミートな論文であった。多くのタスクで実用できそうな性能を出していることがわかったので、今後はこれらを使ってどのような問題を解決できるかに絞って調査すればよさそうである。

生体医療分野のテキストのためのアノテーションツール

EMNLP 2019より以下の論文を紹介。

この論文では、MedCatTrainerと呼ばれる生体医療分野のテキストに対する固有表現認識とエンティティリンキングを行うためのアノテーションツールを提案している。特徴としては、アクティブラーニングを使うことが可能な点で、モデルによって自動的に認識されたエンティティを人間が修正することになる。

言うよりは見るが早しということで、以下にアノテーション画面を示す。画面の左側にテキストとエンティティが表示されている。サイドバーにはエンティティのメタデータが表示されている。おそらく、サイドバーの右上にあるチェックマークやバツマークからアクティブラーニングで付けた結果を承認する仕組みになっている。

f:id:Hironsan:20191001071746p:plain
アノテーション画面

サイドバーからはコンセプトを追加することができる。

f:id:Hironsan:20191001072923p:plain
コンセプトの追加

別のアノテーション画面。右上のはてなボタンからアノテーションガイドラインを確認できる。「Incomplete」ボタンは後で見直すことを示している。Submitボタンで対象ドキュメントのアノテーションが完了したことを示す。

f:id:Hironsan:20191001071848p:plain
カスタマイズ

感想

自分もアノテーションツールを作っているので、興味があって読んだ論文。以下のリポジトリからコードを確認することができる。この手の論文で作られたプロジェクトには珍しく、現在も開発中であることがわかる。

github.com