新型コロナウイルスに関する論文検索システムを開発・無償提供

この記事を書いた人
北爪 聖也

株式会社pipon代表取締役。 キャリアはADK(広告代理店)でテレビ広告運用をして残業120時間するが、ネット広告では自分の業務がAIで自動化されていることに驚愕する。そこで、機械学習受託会社に転職し、技術力を身につけた後、piponを創業。現在、製薬業界、大手監査法人、EC業界、様々な業界でAI受託開発事業を運営。

概要

 2019年12月に中国武漢で発見されたCOVID-19(新型コロナウイルス)は瞬く間に世界中をパンデミックに陥れました。COVID-19は、短期間のうちに感染が広がったため、情報が錯綜している状況です。その中で、重要となってくることは、 信頼のおけるジャーナルに投稿された最新の論文を読み情報を収集することです。しかし、論文は各ジャーナルごとに管理されており、またCOVID-19に関しては数多くの論文が提出されています。そのような状況の中で、自分が求めている情報を検索することは非常に難しいというのが現状です。

 今回、紹介するCOVID-19論文検索システムは、COVID-19に関するリスク要因(肥満、性別、食事など)、雑誌名、論文の公開日などを指定することで、自分が求める論文を効率よく検索することのできるシステムになります。リスク要因を指定すると、そのリスク要因との関連度が高い順に論文が表示されるようになっており、COVID-19関連の論文を検索する上で役に立つと考えられます。

論文検索サイトはこちら

 以下では、そのシステムがどのように構築されているのかを解説していきます。まずでは今回のサービスを作成する上で使用したデータセットの解説を行います。次にどのようにして指定したリスク要因と論文の関連度を計算しているのかを解説します。そして、それを元にどのようにしてWebアプリケーション化するのかを解説していきます。

使用したデータセット

 今回のサービスを作成する上で使用したデータセットはKaggleのCOVID-19 Open Research Datasetです。データセットの中には、COVID-19以外の論文や本文が1000文字に満たない論文などがあるので、それらは除きました。最終的に使用するデータセットのカラムは、論文の公開日、タイトル、要約、その論文へのURL、著者、ジャーナル名です。要約の存在しない論文もあったため、そのような論文に対しては、BERTを使った要約抽出用のモデルbert-extractive-summarizerを用いて要約を作成しました。KaggleのAPIを使うとコマンドラインからデータをダウンロードすることができるので、APIを使い、定期的に最新のデータセットをダウンロードするようにしました。

リスク要因との関連度測定

 指定したリスク要因と論文の関連度を計算し、検索システムに組み込みました。関連度の計算方法の大まかな流れは以下のようになっています。

Step1: Query Expansion

ユーザーの調べたいクエリ(e.g.性別)を受け取ると、Gloveと呼ばれるsemantic modelを使い、そのクエリと意味的に似た単語を抽出し、それをクエリに付け加えます。ここで使われているGloveとはスタンフォード大学により作成された単語分散表現です。有名なWord2vecは各単語から周辺単語を予測するというタスクを解くことによって単語ベクトルを得ているので局所的な統計に依存していますが、Gloveはコーパス全体から得られる単語間の共起行列を持ち込んだ重み付き最小二乗法で学習して単語ベクトルを得ているので、Word2vecより精度は高いと言われています。

Step2: TF-IDF-based search engine

次に、論文内の要約の各単語とStep1で得たクエリのTF-IDFを測ります。それらを行列として扱うことで、コサイン類似度を用いて文書間の類似度を計算しています。TF-IDFとはTFという概念とIDFという概念を組み合わせたものになります。TFとは各文書においてその単語がどのくらい出現したかを意味し(つまり文章中に出現する頻度が多いほど重要)、IDFはある単語が出てくる文書頻度の逆数(多くの文章中に出現する単語はあまり重要ではない)です。そのTFとIDFを掛け合わせた値がTF-IDFとなります。結果として、その文章を特徴付ける単語には大きな値が、そうでない単語には小さな値が付与されます。

 このような二つのステップを踏むことで、クエリを与えると、そのクエリと各論文の要約との間の類似度をスコアとして出力してくれます。このスコアが高ければ高いほど、その論文は与えられたクエリと関連性が高いということになります。この情報検索技術を用いて今回のCOVID-19論文検索システムは構築されています。

Webアプリケーション化

 Flaskを用いてWebアプリケーション化しました。特徴としてはFlaskにDashを組み込んで開発を行いました。DashはPloty社が開発しているPython用のWebアプリを作成するためのフレームワークであり、手軽にインタラクティブなグラフやテーブルを表示させることができます。

 今回のサービスはリスク要因、雑誌名、公開日を指定することで論文を選択できるように設計しました。特に、即応性を高くするため、事前に考えうるリスク要因に関して、各論文との関連度合いをTF-IDFを用いて事前に計算しておきます。こうすることで指定したリスク要因と関連度の高い論文を、その計算しておいた類似度スコアに応じて素早く抽出することができるようになります。

 しかし、データセットは随時最新のものに更新されるため、このまま放置しておくと、このサービスで確認できる論文が古くなっていってしまいます。そのため、常に最新のデータを定期的にダウンロードし、リスク要因との関連度を計算するように設計しました。こうすることで、常に最新の論文を検索できます。

終わりに

 今回は手短にですが、論文などの書類の検索システムについて解説しました。今回紹介した検索システムは単純なものですが、研究者の方々の論文検索を少しでもお手伝いできれば幸いです。

参考URL

https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge

https://dev.classmethod.jp/articles/yoshim_2017ad_tfidf_1-2/