LangChainを使ったSPARQLクエリ生成

はじめに

fuku株式会社にてインターンをしています、鈴木です。本業は広島大学のゲノム情報科学研究室にて大学院生をしております。研究を進める中で「文献からの情報抽出」や「LLMの活用」に興味を持ち、関連の深いfuku株式会社で働かせていただいています。

本記事では、LLMを活用することで、自然言語を入力とし、適切なSPARQL(グラフデータベースへのクエリ文)を出力できるかどうかを試した過程を公開します。

背景・課題

グラフデータベース(RDF)にデータを問い合わせる際には、SPARQLと呼ばれるRDF専用の問い合わせ言語を使い、クエリを作る必要があります。

例えば、日本版DBpedia(wikipediaの一部)に対して、ラグビー日本代表選手一覧を取得するためのSPARQLクエリは下記のようになります。

PREFIX category: <http://ja.dbpedia.org/resource/Category:>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT  ?rugger_man
WHERE
{
  ?rugger_man  dcterms:subject  category:ラグビー日本代表選手 .  
}
続きを読む

【学会データベース構築 第1回】LangChainとPydanticによる構造化

はじめに

初めまして、fuku株式会社 代表取締役の山田です。本連載は学会の講演情報を自動で収集し、データベース化する過程の試行錯誤を公開するものです。

身近なニーズがある、個人的に関心があるなどの理由で学会の講演情報を対象としていますが、本企画の真の目的は多様かつ非構造的なテキスト情報を統一的なフォーマットに整形することができるか可能性を探ることにあります。本記事に辿り着いた方の中には論文、実験ノート、社内文書などの多様なテキストを取り扱いたいと考えている方がいらっしゃるかと思います。本企画の内容が、皆様の参考になれば幸いです。

背景・課題

発端は製薬企業の方とお話をしていた時に「学会の講演情報を調べるのが大変」と伺ったことになります。事情を深堀りしてみると以下のことが判明しました。

  • 担当する疾患領域において誰が発信力を持っているか、先生同士のパワーバランス・勢力図を知りたい
  • どの先生が該当疾患領域のどのような点に強みを持っているのか知りたい(e.g. 消化器症状に詳しい、患者さんとのつながりが強い、海外への発信力がある)
  • これらの情報を得るために学会、論文、科研費ガイドライン、研究班を調査する必要がある
    • 論文、科研費PubMed、KAKENで網羅的に検索可能
    • ガイドライン、研究班は調べればすぐに情報を取得可能
    • 学会は網羅的な調査が困難
      • 多くの疾患は複数の領域・学会にまたがる
      • 領域・学会を横断的に検索できる手段がない(一部サービスはあるがカバー範囲や更新頻度が不十分)
      • 以上の理由により、個別の学会ページでキーワード検索をする必要があり調査に時間がかかる

そこで2022年5月に何件かの学会の講演情報を試しにスクレイピングしてみましたが、以下の理由で頓挫しました。

続きを読む