RANDOM NOTES
ush
ush
ush

master of universe

卒業研究の成果を自分のブログに組み込んでみた


一年位前にハマってた曲を聞くと、そのハマってた頃の記憶とか感情を思い出すのってありますよね。

僕の場合、曲には特に感情がよく染み付くみたいで、染み込みが強いと匂いを思い出すこともあります。 曲を聞くと一瞬だけあの頃の悩んでた辛さとか緊張とか興奮が記憶とともにフワッと意識を掠めて、この時ほど過去を強く思い出すことはないです。

こんにちは。最近大学を卒業したの人です。 今回は GW で自分の卒業研究で行った内容を自分のブログに応用してみたので、その紹介をしようと思います。

実装したもの

今回実装したのはこのブログの検索機能です。 卒業研究では情報検索の研究をしていました。 ブログのサイドメニューにある、検索ボックスから記事の検索ができるようになったのですが、この検索の裏側で自分の研究が使われています。

機能の動作の様子

どんな研究?

卒業研究のテーマは「質問生成と機械読解モデルに基づく情報検索アルゴリズム」です。

一言でいうと、情報検索のアルゴリズムに機械読解という別分野の技術を使った研究です。

今回扱う情報検索は端的に言って Google 検索のイメージ近いものです。何かしらのキーワード(クエリ)を入力して、それに関連するような文書だったりウェブサイトを返します。

それに対して、機械読解は情報検索とは異なる技術で、「質問と文章」を入力として、質問に対する「答え」を文章中から抜き出します。 例えば、「人間失格の著者は?」という質問と「太宰治は日本の小説家です。代表作に人間失格や走れメロスがあります」という文章が与えられた時に、質問に対する答えとして、文章から「太宰治」という文字列を抜き出すことが期待されます。

ちょっと説明が疲れてしまったので一言で言割れて欲しいんですが、この機械読解の技術をそのまま情報検索に使ってみようというのが自分の研究なので、 やったこととしては検索 API を実装して、そこで機械読解を使って検索を実現したよってことですね。

システム構成(に使った技術たち)

  • ブログ

    • Gatsby
  • 検索サーバ

    • Elasticsearch
    • fastapi

      • pytorch
    • nginx
    • lightsail
    • Docker

今回は諸事情あり、lightsail をプロキシサーバーとして使い、gpu サーバーを別に用意しています。

Elasticsearch を使っていることから一部の人は察しているかもしれませんが、今回は機械読解の出番はリランキングです。 専門的な話ですが、いわゆる first-stage retireval を Elasticsearch で行い、リランキングを機械読解モデルで行なっています。 機械読解モデルには、Laboro.AI さんの ddqa データセットで fine-tuning したものを拝借して利用しています(link)。

ブログが静的サイトな点でもやりづらく、しばらく楽しんだら普通のものに戻そうと思います。Gatsby にもちょっと詳しくなりました…

検索してみる

試しに「Go ライブラリ」と検索してみます。

検索結果

「answer: ホットリロード」

と検索結果に表示されているのが見えるでしょうか。

これが機械読解モデルから得られたクエリに対する記事から得られた「答え」です。

ここでこのホットリロードという答えは、実はこの記事の中で「ホットリロードを実現してくれるライブラリ」を使っているんですが、そこから抜き出されたモノです。

他にこれはどうでしょう

雑草茶

まさに、雑草のお茶について書いた部分が答えとして取り出されています。 (雑草からお茶を作った話はこちら

どうでしょう、なんとなく面白くないですか?

だからなんだと言われればアレですが、機械学習っぽさを感じます(小並感)。

感想

ここの記事には書いていないですが、ここの実装自体はそこまで重くなかったのですが、それ以外のサーバーの用意でめちゃくちゃ詰まっていてもうダメかと思いました。

GW 期間中に終わってよかったぜ!!! (なお記事を書いたのは夏休み)