システマティック・レビューやメタ解析は、研究生活の数ヶ月を食いつぶす。たった一つのp値を追い求めるために、30個ものPDFを開く。論文ごとに表現は異なる。「参加者の平均年齢は58歳」であったり、「平均年齢 58.3 (SD 4.1)」であったり、「高齢者コホート」であったりする。ディスカッション(考察)セクションを丸ごと読み飛ばした挙句、主要エンドポイントが有意性に達していなかったことが判明する。これは研究ではない。博士号を持ったデータ入力作業だ。エビデンスの統合、手法の欠陥の特定、フォローアップ研究の設計といった真の知的作業は、数値をスプレッドシートにコピーしている間に放置されている。もっと良い方法がある。論文を「読むための散文」として扱うのをやめよう。論文を「物語を纏ったデータベース」として扱い、事実を直接抽出するのだ。
物語ではなく、スキーマから始める
PDFに触れる前に、何をマイニング(抽出)したいのかを定義する。ストーリーを読むのではなく、構造を読むのだ。臨床および前臨床研究において、大部分の作業は4つのカラム(介入、アウトカム、方法、対象集団)で完結する。すべての試験や観察研究には、これらの要素が含まれている。著者がそれらを段落や表、付録の中に埋もれさせているだけなのだ。このフレームワークに抽出を強制することで、5,000語の記事を、クエリ可能なテーブルの1行へと凝縮できる。「彼らは何をしたのか?」と問う代わりに、具体的かつ機械的な質問を投げかける。「薬剤またはデバイスは何だったのか?」「何人が登録されたのか?」「どのエンドポイントが測定されたのか?」「何が、どれくらい変化したのか?」
この転換は単なる整理術ではない。計算機的なアプローチだ。スキーマが確定すれば、人間が思考している間に、ソフトウェアがスキャンを行うことができる。叙述的なテキストは構造化データへと変わる。すべての行が同じ言語を話すため、PDFを一つも開き直すことなく、20の研究を並べて比較できる。スキーマは、あなたの作業の正確性を担保する。もし論文に明確なアウトカムの定義が欠けていれば、素早く読み飛ばした段落の中に埋もれるのではなく、空白のセルとして即座に露呈する。
SciBERTがいかにして事実を見つけ出すか
ここでSciBERTが威力を発揮する。これは科学文献で学習された言語モデルであり、汎用的なツールが見逃してしまうようなエンティティを、十分な精度で捉えることができる。方法(Methods)セクションを入力すれば、年齢層、薬物投与量、サンプルサイズ、p値を一度のスキャンでフラグ立てできる。「mg/kg」が分子に付随することや、「n=340」が脚注ではなくコホートの規模を指していることを理解している。
例えば、新しい糖尿病薬の治験をレビューしているとする。情報源は、30ページに及ぶ密度の高い全文論文だ。スクロールする代わりに、SciBERTのパイプラインを実行する。パイプラインは、介入の段落から正確な薬剤名を浮き彫りにし、テキスト化されたベースライン特性の表から患者の年齢層を拾い上げ、結果セクションから効果量(effect size)を捉える。次に関係抽出器(relation extractor)がそれらの事実を結びつける。「この薬剤が、この集団において、HbA1cにこの特定の変化をもたらした」という具合に。パイプラインは単に孤立した単語を見つけるのではない。介入とアウトカムを接続するのだ。その構造化されたトリプル(triple)が、エビデンス・テーブルの1行となる。キーワード検索とこの手法の違いは、ページ内のどこかに「metformin」という単語を見つけることと、「metforminがこの特定のコホートにおいてHbA1cを正確な量だけ減少させた」という事実を知ることの違いである。
3ステップのワークフロー
これを実現するには、規律ある実行が必要だ。杜撰なパイプラインからは、杜撰なテーブルが生まれる。以下の3つの実践的なステップに従い、それぞれの詳細に注意を払うこと。
コーパスの準備
ほとんどの情報源はPDFとして提供される。それらをプレーンテキストに変換する。2段組みの学術論文のレイアウトと格闘するまでは、単純に聞こえるだろう。ヘッダーが文章を分断し、脚注が段落に割り込み、表はASCIIのスープ(文字の羅列)として出力される。徹底的にクリーニングを行うこと。ランニングタイトル、ページ番号、著作権表示などは削除する。可能な限り段落の境界は維持すること。それがモデルのコンテキスト維持に役立つからだ。
次に、テキストをチャンクに分割します。サイズが重要です。Transformerにはトークンウィンドウがあり、30ページの論文を一度に収めることはできません。文の途中や節の途中ではなく、文や段落の境界でテキストを区切ります。チャンクはモデルの制限内に収めつつ、意味を保持できる十分な大きさに保ちます。例えば、「有意な改善を示した」という断片は、その前の文で薬剤名が示されていなければ役に立ちません。チャンク間に1〜2文程度の小さなオーバーラップ(重複)を持たせることを検討してください。これにより、境界線上に位置するエンティティが分割されるのを防げます。デジタル作成されたPDFではなくスキャンされた画像を取り扱う場合は、まずOCRを実行しますが、ノイズを想定しておく必要があります。「8」が「B」になったり、「mg」が「mq」になったり、統計記号が完全に消失したりすることもあります。OCRの後は、モデルにどれほどのゴミを入力することになるかを判断するために、必ずランダムに数ページを実際に目視で確認してください。
モデルの実行
クリーニング済みのチャンクをSciBERTパイプラインに投入します。1回目:命名エンティティ認識。モデルは、薬剤名、用量、年齢、p値、サンプルサイズなど、認識したスパンにタグを付けます。2回目:関係抽出。ここでパイプラインはエンティティ同士を紐付けます。薬剤名の後に続く用量がその薬剤に属していることや、結果の文にあるp値が、前述の主要アウトカムに属していることなどを学習します。これをすべてのチャンクに対して実行します。すべての抽出結果を、ソースPDF、セクション、チャンク番号などの座標とともに保存し、すべての発見をその起点まで遡れるようにしておきます。このプロベナンスは、単なる学術的な形式主義ではありません。数値が...のときに、数時間の節約になります。
