第3回 Science of Science研究会に参加した話

こんにちは、リサーチャーの鈴木貴之です。fuku株式会社にて研究活動を行っており、学生時代はバイオインフォマティクスを中心に研究していました。現在は、ライフサイエンス研究(特に論文)を対象とした研究に取り組もうとしているところです。そんな中で代表の山田からのお勧めにより、第3回のScience of Science研究会に参加する機会を得ました。本記事では、その参加報告を兼ねて、感じたことや考えたことをまとめてみます。

Science of Science(SciSci)とは?

SciSciとは、その名の通り科学を研究する学問分野です。Science of Science第2回研究会Webpageによると、「科学を取り巻くメカニズムを明らかにすることに取り組む学際的な学問領域の総称」とされています。似た分野として、科学社会学、計量書誌学、ネットワーク科学などなどがありますが、SciSciの特徴は、「計算的アプローチを用いて科学の裏にある構造に迫る」点にあるようです。とはいえ、実際には今回の研究会でも、「SciSciとは何か」、「どのように収束していくのか」、といった議論が交わされており、まだ定義や輪郭が流動的な分野なのかなと思っています。オープンサイエンスが進む今の時代だからこそ立ち上がってきた新たな分野の学問ともいえるのかと思います。その点に、個人的にはワクワク度が高まりました。

研究会の感想

予想通り、非常に多様な分野の研究者や研究支援者が参加されており、研究領域ごとに異なる科学の構造が存在することを改めて実感しました。科学全体の構造についての議論はもちろんですが、研究分野特有の課題に関する議論の場としても、SciSci研究会は非常に有意義だと感じました。

様々なトピックがある中で、特にピックアップされているなと感じた分野は、「科学と政策」かと思います。基調講演でもこのテーマから始まり、パネルディスカッションでも頻繁に取り上げられていた政策の話は非常に印象的でした。「policy-based evidence making(政策に都合のいいエビデンスを後付けする)」を減らし、少しでも「evidence-based policy making(科学的根拠に基づく政策立案)」が増えるために、SciSciが果たす役割は非常に大きい可能性があるという議論には共感を覚えました。SciSciは社会との関わりが密接な研究分野であるということを、現場で再認識する機会にもなりました。

私が興味を持つSciSciの可能性

ライフサイエンス分野は、SciSciの研究対象としても非常に興味深い領域だと思います。というのも、オープンサイエンスが比較的進んでおり、膨大な量のライフサイエンス関連の文献や研究データが、国境を超えた協力体制により再利用可能な形で整備されつつあるからです。

私自身も、そうしたデータ基盤を活用しながら、データ駆動的にライフサイエンスに関する仮説を導き出す研究を行なってきました。一方で、ライフサイエンスのデータ駆動科学のための基盤にはまだ課題が残されていることもみえてきました。今後の研究では、そうした課題の洗い出しと、その改善の方向性に焦点を当てていきたいと考えています。

このような関心をSciSci的に表現するとすれば、「計算的アプローチを通じて、ライフサイエンス分野におけるオープンサイエンスの促進、その意義や課題解決に迫る」といえるかと思います。こうした研究を進めるうえで、他分野ではどのような知見やアプローチが展開されているのかを知ることが、自身の研究視野を広げる上で重要だと感じています。

他分野の研究者との意見交換を通じ、自分の研究を見つめ直すと同時に、いつかは自分の知見がSciSciコミュニティや他分野にも貢献できるようになりたいという思いが今回芽生えました。今後もできる限り継続的にSciSci研究会に参加していきたいと考えています。

2025年 第39回人工知能学会(JSAI)

こんにちは、fuku株式会社のリサーチャー鈴木貴之です。AIの勉強のため、初めて人工知能学会 (JSAI) に参加しました。これまでは主に生命科学の学会に出ることが多かったため、今回はとても新鮮な体験でした。さまざまな方々のAIに対する考え方や活用事例、開発・応用の研究に触れることができ、大変ながらも充実した4日間となりました。

第39回JSAI at 大阪国際会議場

全体的な感想

学会では最大17のセッションが同時に進行していて、気になる講演も多かったので、どこに行こうか迷う場面が多々あったのですが、JSAIは全ての講演が録画されているため、後日視聴できる点が非常に助かりました。全てを見返すことは流石に難しかったですが、気になっていた講演や、聞き直したい講演を、後から視聴できたことで理解が深まったように思います。

ポスターセッションもとても活気があり、なかなか入り込むのが大変なほど盛り上がっていました。3日間に分かれて展示されていたため、1日あたりのポスター数は多すぎず、歩きながら興味のある発表を選んで話を聞けたことも良かったと思います。コーヒーやオレンジジュース、お菓子が提供されている点もありがたかいポイントでした。

企業ブースについては、やはりAIを活用したシステム開発を行っている企業が多数出展している印象でした。学生向けの懇親会や「人材募集中」といった案内も多く見かけたので、学生の方にとっては特に有意義な場になっているのではないかと思いました。

印象に残ったセッション

今回の学会で個人的に印象に残っているセッションは下記です。

エージェントの性質について

最近はエージェントという言葉をよく耳にするようになりました。人間を介さず、AI同士がやり取りを行うシステム開発が多く進んでいる中で、エージェント同士の対話によってその性質がどう変化するのか、というテーマは非常に興味深く感じました。

相良先生(静岡県立大学)は、きのこの山派とたけのこの里派のLLMに、利己的・協力的・利他的のいずれかのパーソナリティを与え、対話を通じて性質がどう変化するかを数理的に評価されていました。宮澤先生(大阪大学)は、エージェントに職業を割り当てたうえで仮想空間で週末を過ごさせ、その中で趣味や嗜好がどう変化するかを観察した研究成果を紹介されていました。

エージェントによる問題解決タスク性能の評価手法はいくつかみたことがありましたが、性格や嗜好性といった「LLMに付与される人間的な性質」の変化を可視化・評価する仕組みについてはあまり見たことがなかったので、とても印象的でした。こうした研究が進むことで、エージェントの活用範囲もさらに広がるかもしれないと感じました。

ナラティブと人工知能について

タイトルに惹かれてふらっと入ってみたセッションでしたが、哲学・文学・歴史学などさまざまな分野の先生方が、「ナラティブ」という一見抽象的なテーマをAIと結びつけた講演およびパネルディスカッションがされていました。普段あまり人文学に触れることがない自分にとって、かなり刺激的な講演でした。

総研大の前山先生は、「過去と歴史と私たちとAI」という幅広いテーマについて、コンピュータの歴史研究者として発表されていました。生成AIが大量の情報を生み出している今、歴史学にどう活用できるのか、どのような影響を与えるか、という視点は興味深かったです。

特に印象に残った点は、「これまでの歴史学は、限られた記録資料しかない時代を扱ってきたが、現代は誰もが情報の生産者となっている。これは人類史上初めての状況であり、生成AIはそれらを可視化することで歴史研究の広がりに寄与する可能性がある」という議論です。AIに加えて人間による情報量も多い中で、AIが学問へ与える影響という観点から示唆に富んでいると感じました。

AIサイエンティスト

こちらは個人的にも、会社としても、そして社会全体としてもホットなテーマかと思います。弊社代表の山田がパネルディスカッションの一員として参壇していました。

過去の知見に基づく仮説構築、再現性ある検証、論文執筆など、研究における様々なタスクは、AIが比較的得意な領域なのではないかと考えられはじめています。このセッションでは、今のAI駆動科学がどの段階にあるのか、AI生成の論文と人間が書く論文の違いや今後の共存のかたち、AI時代に求められるスキルとは何か、といった議論が行われていました。

中でも印象に残った、「本当にその研究成果を必要としている人にとっては、それがAIによって書かれたか人間によるものかは重要ではなく、情報の質が最も大事」という指摘です。まさにその通りだと共感しました。また、今後人間に求められる重要なスキルとして「課題を理解する能力」と「その課題を言語で表現する力」が挙げられていた点も、とても納得感がありました。

最後に

初参加でしたが、とても学びの多い4日間となりました。これまであまり接点のない分野にも多く触れることができて、大きな刺激になったと感じています。来年以降ももしタイミングがあればぜひ参加したいと思っています。

※本記事は、鈴木貴之個人の学会参加に基づいた感想・意見です。記載された講演内容や見解は、発表者ご本人および学会公式の見解とは異なる可能性があります。

bolt.newを使ってみた話

fuku株式会社でインターンをしております、松澤と申します。普段は博士課程学生として、「LLMを用いたバイオインフォマティクス解析環境の自動構築」というテーマで研究を行っています。

今回は、AIを用いたWebアプリケーション開発サービスのbolt.newを利用した感想を記したいと思います。

背景

ある業務において、ワークフローの実行ログを管理するWebアプリケーションを実装することになりました。このアプリケーションには、主に以下のページを実装することが求められました。

  1. 今までの実行記録を一覧として閲覧するページ
  2. 各実行記録の詳細を閲覧するページ
    1. 実行したワークフローを構成するプロセス間の依存関係(プロセスAが終わったあとでなければプロセスBは開始できない、など)がグラフ構造で表示される
    2. 前述のグラフのノードをクリックすると、ノードに対応したプロセスの実行ログ(実行ステータス、開始・終了時刻など)が表示される

当初は既存のOSSをカスタマイズして使用する計画でしたが、条件を十分に満たすソフトウェアが見つからなかったため、フロントエンドをフルスクラッチで実装する必要が生じました。しかし筆者はフロントエンド開発の経験が浅く、OSSのカスタマイズと比較して工数がかかりすぎることが予想されました。そこで、AIを用いたWebアプリケーション開発サービスのbolt.newを利用したフロントエンド開発を試してみることにしました。

bolt.newを使ってみる

早速、実装したいフロントエンドのイメージを、日本語のプロンプトで与えてみました。与えたプロンプトのイメージは以下のとおりです:

"列A", "列B", "列C"を列として持つ表を作ってください。各列はソートと検索ができるようにしてください。
ページの右上にユーザーアイコンとユーザー名、ヘルプボタン、ログアウトボタンをつけてください

bolt.newの開発画面。左側のチャットに指示を入力すると、右側のエディター部分でコードが生成される。エディターには"code"タブと"preview"タブがあり、"code"タブでは生成されたフロントエンドのコードが表示され、"preview"タブでは実際の見た目を確認することができる。

かなりふんわりとした指示でしたが、1回目の生成の時点で、ほぼ筆者のイメージ通りのコンポーネント構成を持つページが出力されました。また、見栄えに関する指示が何もない状態でもtailwindcss*1を使用したリッチな見た目のページとなっており、見た目に関しては全く手を加える必要がない状態でした。

実行ログの一覧画面。各行が1回の実行に対応している。表形式になっており、列ごとに並び替え、検索が可能。各行のidをクリックすると詳細画面に遷移する。

実行ログの詳細画面。ワークフローを構成するプロセスの依存関係がグラフ構造で表されており、各ノードの色はプロセスの実行ステータスを反映している。このノードをクリックすると、右側にプロセスのログ情報が表示される。

仕様変更により苦戦

しかし、このあとで思わぬ苦戦を強いられました。表示するデータの構造に大きな変更が生じたため、それに合わせてフロントエンドを改修する必要が生じたのです。当初、bolt.newに修正を指示するプロンプトを与えて複数回修正を試みました。しかし、その都度新たなバグが生じてしまい、動作するコードを生成させることができませんでした。そのため手動で修正することにしましたが、その結果「他人が書いた(しかも自分の守備範囲外の)コードを読み解いて修正する」というヘビーな作業が発生し、かなりの工数を割くことになってしまいました。

今思えば、大幅な仕様変更が生じた時点で始めから作り直す方が工数を削減できたのではないかと思います。

使ってみた感想

生成されるフロントエンドのデザインは申し分なく、このクオリティのWebページを30秒程で生成できることに驚きました。一方で、大幅な仕様変更はうまくいかない場合があるため、あらかじめ仕様を十分に固めておき、やむを得ず大幅な仕様変更を加える場合はゼロベースで作り直すことを視野にいれるべきだと感じました。特に開発者がフロントエンド開発に習熟していない場合、無理に手動で修正しようとすると、bolt.newによって得られる利点(短時間で見栄えの良いフロントエンドが生成される)を打ち消すほどの手間と時間がかかる可能性が高いです。

落穂拾い

生成したコードのバージョン管理

StackBlitzを使用することで、GitHubと連携させる事ができるようです。私はローカルでも動作確認をしていたので、bolt.new上で変更されたファイルを都度ローカルにコピー&ペーストし、ローカルのGitで管理していました。bolt.newでは「どのファイルが追加・削除・変更されたか」を表示してくれるので、変更の追跡は十分可能です。

メッセージの言語

日本語でプロンプトを書いた場合でも問題なくコードを生成してくれますが、返ってくるメッセージは英語でした。

*1:ここは好みが分かれるかもしれません。tailwindcssを使ってほしくない場合は、プロンプトにその旨を記載したほうが良さそうです。

Nature誌の論文はbioRxivにPreprint版があるか?

背景

基盤モデルの発達により論文を扱ってさまざまなことができるようになりました。 しかし、ライフサイエンス領域において未だオープンアクセスが世の主流とは言えません。

そのため論文テキストの解析を行う場合、以下のいずれかの選択をする必要があります。

  1. オープンアクセス論文に限って全文を解析
  2. 有料ジャーナルも含めてTitle, Abstractのみを解析

そして、どちらのアプローチを取っても片手落ち感が出てしまいます。 論文を対象とした解析の話題になると、結局いつも「有料ジャーナルの全文読めないとね...」となるのが定番でした。

きっかけ

先日、文献をLLMで解析されている方とディスカッションをしました。 いつもの如く話題はpaywallに行き着きましたが、有望な情報をいただきました。

「NatureのウェブサイトでOpen Accessと表記がないものでも、bioRxivでタイトルを検索するとPreprintがヒットすることがある」と耳寄り情報。

実際にZoomで画面共有しながらいくつか論文を検索してみたところ、以下の論文はnature.com上ではOpen Accessの表記がありませんが、

https://www.nature.com/articles/s41586-024-07772-8

bioRxivに似たようなタイトルのPreprintがありました。

https://www.biorxiv.org/content/10.1101/2024.01.02.573835v1.full

タイトルと著者、投稿時期からbioRxivにPreprintを投稿したのちに、Natureに投稿したと思われます。

Abstractを比較すると若干の違いがありますが、

左:Nature、右:bioRxiv

Figureはぱっと見、大きな変更はないようです。

NatureのFigure
bioRxivのFigure

これにより、有料ジャーナルの論文はbioRxivにてほぼ同じ内容のPreprintを取得することで代替することができるのではないか、という仮説が立ちました。 あとは、具体的にどれくらいの比率でPreprintが手に入るかが気になります。

方針

  • Step1. 2023年に発行されたNature誌(Volume 613-624)のタイトル、著者を取得
  • Step2. タイトル、著者を元にbioRxivにて検索し、同一の論文を探す

Step1. 2023年に発行されたNature誌(Volume 613-624)のタイトル、著者を取得

nature.com上で検索し、取得しました。合わせてOpen Accessの表記があるかもチェックします。

1159件中、47%の550件がOpen Accessでした。 これは予想よりも多かったです。すでにNature誌に投稿された論文のうち約半数はOpen Accessになっているようです。

分類 件数 割合
Open Access 550 47.5%
not Open Access 609 52.5%
合計 1,159 100%

ちなみに過去20年分も同様に調べたところ、2020年ごろから急に増えていることがわかりました。 転換契約が進んでいるのでしょうか。

Step2. タイトル、著者を元にbioRxivにて検索し、同一の論文を探す

ともあれ、2023年の1,159件についてbioRxivに該当する論文があるかチェックします。

単にタイトルだけで検索すると数百件ヒットすることもあるので、advanced searchでファーストオーサーも検索条件に加えます。 取りこぼしもありそうですが、ノイズを減らすことを優先しました。

検索結果に表示されるタイトル、著者名とnature.comの表記を比較し、一致していると判断すればbioRxivの個別ページのURLを取得します。

ただし、微妙な表記揺れをどこまで許容し、どの程度タイトルおよび著者が一致していれば論文とPreprintが関連性があると判断するか、自前で実装するのはなかなか面倒です。

ここの判断はLLMに任せることとしました。プロンプトはこんな感じです。 ちなみにこのプロンプト自体はClaudeに粗方書いてもらい、多少アウトプットを整形するなどしただけです。

system_prompt = """
You will be given an HTML search result from bioRxiv. This HTML may contain zero or more paper entries. 
Your task is to determine if a specific target paper is included in these search results and, if found, extract its title, authors, and url.

You will be provided with the following information about the target paper:
1. Title
2. Authors (limited to the first, second, and last author)

Follow these guidelines carefully:

1. Title Matching:
   - The title of the target paper may not exactly match the title in the HTML results.
   - Allow for minor variations in formatting or wording.
   - Use your judgment to determine if the titles are sufficiently similar.

2. Author Matching:
   - The provided author list for the target paper is incomplete, containing only the first, second, and last authors.
   - The HTML results will contain the full list of authors for each paper.
   - Check if the provided authors (first, second, and last) are present in the HTML author list, in that order.
   - Do not require an exact match of all authors, as the HTML will contain additional names.

3. URL Extraction:
   - If you find a match based on the title and authors, extract the URL for that paper from the HTML.

4. Output:
   - If a match is found, return the title, authors and url of the matching paper (you have to extract these values from html).
   - If no match is found, indicate that the target paper was not found in the search results.

Analyze the HTML carefully, considering potential variations in formatting and presentation. 
Be thorough in your search to ensure you don't miss a potential match.

You should return the results of the search in the following json format if a match is found:
e.g.
{
    "title": "Pre-T cell receptor self-MHC sampling restricts thymocyte dedifferentiation",
    "authors": "Jonathan S. Duke-Cohan, Aoi Akitsu, Robert J. Mallis, Cameron M. Messier, Patrick H. Lizotte, Wonmuk Hwang, Matthew J. Lang, Ellis L. Reinherz",
    "url": "https://www.biorxiv.org/content/10.1101/2020.07.27.222166v1"
}

If math is not found, return the following json:
{
    "title": "",
    "authors": "",
    "url": ""
}
"""

そしてnot Open Accessの609件を処理した結果、5.9%の36件はbioRxivにてPreprintを確認できました。

分類 件数 割合
Preprint 36 5.9%
no Preprint 573 94.1%
合計 609 100%

モデルはgpt-4o-miniを使い、費用はトータルで$2程度でした。

感想

  • 有料ジャーナルに掲載された論文のPreprint版をbioRxivで探すというアイディアはワクワクしたが、まだまだ頼りにするほど多くはなかった
  • NatureのOpen Accessの割合がほぼ半分まで増えていて驚いた
  • もう数年待てばNature誌で、10年くらい待てばライフサイエンス全体で、論文はOpen Accessが主流になるかもしれない。長い目で期待しましょう
  • 微妙な表記揺れをどこまで許容するかなどはかなり設定が面倒なタスク。荒く解析したい時にはLLMに丸投げすることで圧倒的に工数を削減しつつ、ある程度のクオリティの結果を得られる

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月に何件かの学会の講演情報を試しにスクレイピングしてみましたが、以下の理由で頓挫しました。

続きを読む