人文系研究者のための「AI対話型」文献分析入門 〜観智院本類聚名義抄を例に〜

人文系研究者のための「AI対話型」文献分析入門 〜観智院本類聚名義抄を例に〜 #

はじめに:そのデータ、眠らせていませんか? #

HDICのリポジトリ から『観智院本類聚名義抄』の全文テキストデータ(krm_manin.tsvなど)をダウンロードしたものの、Excelで開いてみても膨大すぎて、どう使えばいいか分からず困っていませんか?

もし、影印や索引をめくるように、しかしもっと自由に、まるで名義抄に精通した専門家に質問するように、データを分析できたら素晴らしいと思いませんか?

実は、Googleが提供する最新のAINotebookLMと、少しの**おまじない(簡単な準備)**を組み合わせることで、それが可能になります。プログラミングの知識は不要です。このガイドの通りに進めれば、あなただけの強力な研究パートナーが手に入ります。

ステップ1:準備するものリスト #

本格的な作業の前に、必要なものを確認しましょう。ほとんどがお手元のPCと普段お使いのGoogleアカウントで完結します。

  1. 名義抄のデータファイル(JSON形式): GitHubからダウンロードしたもの。今回は、krm_notes.jsonを使います
  2. 魔法のおまじない(Pythonスクリプト): この後お見せするテキストをコピー&ペーストするだけです。
  3. 魔法の杖(Python実行環境): パソコンで「おまじない」を実行するための準備です。一度だけ設定すればOK。無料で簡単にインストールできます。
  4. Googleアカウント: 普段お使いのGmailやGeminiのアカウントです。

ステップ2:パソコンの準備 〜魔法の杖を手に入れよう〜 #

Pythonという言葉に身構える必要はありません。今は、研究者が文章を書くのにWordを使うように、データ分析の道具として多くの人が使っています。以下の手順で一度だけインストール作業を行いましょう。

実は、ここが最大の関門になります。丁寧に説明しますのであきらめずにお付き合いください。

  1. Windowsの場合:

    • スタートメニューのMicrosoft Storeを開き、検索ボックスで"Python"と検索します。
    • 出てきたリストの中から最新のバージョン(例:Python 3.12)を選んで「入手」または「インストール」をクリックします。これだけで完了です。
  2. Macの場合:

    • 公式サイト(python.org)にアクセスし、最新版のインストーラーをダウンロードします。
    • ダウンロードしたファイルをダブルクリックし、画面の指示に従って「続ける」「同意する」などをクリックしていけば、自動的にインストールが完了します。
  3. 【重要】Windowsでの注意点:

    • (もし公式サイトからインストールする場合)インストーラーの最初の画面で、必ず"Add Python.exe to PATH"というチェックボックスにチェックを入れてください。 これが重要なおまじないです。

ステップ3:おまじないの詠唱 〜データをAIが読める形式に変えよう〜 #

ここからは、ダウンロードした名義抄のデータを、AIが理解しやすいように整える作業です。呪文を唱えるようなものだと思って、楽しんで進めてください。今回は、krm_notes.jsonを使います。

  1. 作業場所(フォルダ)の作成:

    • デスクトップなど、分かりやすい場所に**「名義抄研究」**という名前で新しいフォルダを作成します。お好みで「Myogisho」とか「HDIC_KRM」とかしてください。
  2. 材料の配置:

    • その1: GitHubからダウンロードした名義抄のJSONファイル(今回はkrm_notes.json)を、この「名義抄研究」フォルダの中に移動させます。ファイル名は分かりやすく my_data.json に変更しておきましょう。
    • その2: 下の灰色のボックス内のコードを全てコピーし、PCの「メモ帳」(Windows)や「テキストエディット」(Mac)に貼り付けます。そして、convert.py という名前で、先ほどと同じ「名義抄研究」フォルダの中に保存してください。txtではなく.pyで保存します。(Windowsのメモ帳の場合は、保存時に「ファイルの種類」を「すべてのファイル」に、「文字コード」を**「UTF-8」**に指定してください)

以下のコードは一見複雑に見えますが、意味を理解する必要はありません。すべてを正確にコピー&ペーストすることだけが重要です。

# convert_all_in_one.py
#
# 機能:
# 1. JSONファイルを読み込む
# 2. 各注記行に「(「見出し字」の注記タイプ)」という文脈を追加する
# 3. 巻(volume_name)ごとに、別々のテキストファイルとして出力する
#
# 使い方:
# python convert_all_in_one.py [入力JSONファイル名]

import json
import sys
import os
from collections import defaultdict

def simplify_definition_type(type_name):
    """詳細なdefinition_type_nameを5つの大分類に簡略化する関数。"""
    if not type_name: return "その他"
    if '字体注' in type_name: return "字体注"
    if '音注' in type_name: return "音注"
    if '義注' in type_name: return "義注"
    if '和訓' in type_name or '訓注' in type_name or '訓読' in type_name: return "和訓"
    return "その他"

def process_json_to_final_split_files(input_file, output_dir="."):
    """
    JSONを読み込み、文脈付加と巻ごとのファイル分割を一度に行う
    """
    try:
        with open(input_file, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 巻ごとのファイルハンドルを管理する辞書
        file_handles = {}
        
        # JSONデータを読み込み、エントリごとに処理
        for entry in data:
            volume_name = entry.get('volume_name', '不明な巻').strip()

            # この巻のファイルがまだ開かれていなければ、新しく開く
            if volume_name not in file_handles:
                # ファイル名に不正な文字が含まれないようにする(念のため)
                safe_volume_name = volume_name.replace('/', '_').replace('\\', '_')
                output_filename = os.path.join(output_dir, f"krm_final_{safe_volume_name}.txt")
                print(f"'{output_filename}' を作成・書き込み開始...")
                file_handles[volume_name] = open(output_filename, 'w', encoding='utf-8')

            # 書き込むべきファイルを取得
            out_f = file_handles[volume_name]
            
            hanzi_entry = entry.get('hanzi_entry', '')
            out_f.write(f"【見出し字】: {hanzi_entry}\n")
            
            original_entry = entry.get('original_entry', '')
            if original_entry and original_entry != '〇':
                out_f.write(f"【元表記】: {original_entry}\n")
            
            out_f.write(f"【巻名】: {volume_name}\n")
            out_f.write(f"【部首】: {entry.get('radical_name', '')}\n")
            
            definitions = entry.get('definitions', [])
            for definition in definitions:
                def_type_raw = definition.get('definition_type_name', '')
                if def_type_raw == '見出し': continue
                
                simplified_type = simplify_definition_type(def_type_raw)
                def_elements = definition.get('definition_elements', '')
                remarks = definition.get('remarks')
                
                # 各注記行に、どの見出し字のものか文脈を追加
                context_header = f"(「{hanzi_entry}」の{simplified_type}) "
                full_info = context_header + def_elements
                
                if remarks:
                    full_info += f"(備考:{remarks})"
                
                out_f.write(f"【{simplified_type}】: {full_info}\n")

            out_f.write(f"【風間本位置】: {entry.get('kazama_entry_location', '')}\n")
            out_f.write(f"【天理本位置】: {entry.get('tenri_location', '')}\n")
            out_f.write("---\n")
        
        # 開いたすべてのファイルを閉じる
        for f in file_handles.values():
            f.close()

        print("\nすべてのファイルの作成が完了しました。")

    except FileNotFoundError:
        print(f"エラー: ファイル '{input_file}' が見つかりません。", file=sys.stderr)
    except json.JSONDecodeError:
        print(f"エラー: ファイル '{input_file}' は有効なJSON形式ではありません。", file=sys.stderr)
    except Exception as e:
        print(f"エラーが発生しました: {e}", file=sys.stderr)

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print("使い方: python convert_all_in_one.py [入力のJSONファイル名]", file=sys.stderr)
        sys.exit(1)
    
    input_filename = sys.argv[1]
    process_json_to_final_split_files(input_filename)
  1. おまじないの実行(黒い画面の操作):

いよいよおまじないを唱えます。黒い画面を使いますが、決まった文字を打ち込むだけなのでご安心ください。

  • 画面を開く: Windowsなら「スタートメニューでcmdと検索」、Macなら「アプリケーション→ユーティリティの中のターミナル」を起動します。
  • 場所に移動: 黒い画面に cd (cdと半角スペース)と入力します。その後、先ほど作成した「名義抄研究」フォルダを、この黒い画面の上にドラッグ&ドロップし、Enterキーを押します。 これで、作業場所に移動できます。
  • 呪文を詠唱: 以下の呪文をコピーして黒い画面に貼り付け、Enterキーを押します。
python convert.py my_data.json 
  • 成功の確認:「数秒〜数分待つと、黒い画面の点滅が止まります。「名義抄研究」フォルダの中に krm_final_仏上.txt, krm_final_仏中.txt … といった、巻ごとに分割された複数のテキストファイルが できていれば、おまじないは成功です!

ステップ4:NotebookLMとの対話 〜あなただけのAI研究助手の誕生〜 #

お疲れ様でした!これで全ての準備が整いました。いよいよ、AIとの研究対話を始めましょう。

  1. NotebookLMとは?
  • Googleが提供する、あなただけの研究資料に特化したAIです。ChatGPTやGeminiと違い、インターネットの情報ではなく、あなたがアップロードした「名義抄」のデータだけを根拠に答えてくれるので、非常に信頼性が高いのが特徴です。
  1. AIにデータを読み込ませる:
  • NotebookLMの公式サイトにアクセスし、Googleアカウントでログインします。
  • 新しいノートブックを作成し、「ソースを追加」から、先ほど作成したkrm_final_仏上.txt, krm_final_仏中.txtなどのファイルのひとつをアップロードします。
  • ファイルの読み込みに数分かかる場合があります。気長に待ちましょう。
  • すべていっぺんにアップロードしようとするとうまくいかないことがあります。まずひとつをアップロードすることをお勧めします。
  1. さあ、研究を始めよう!(質問例):

読み込みが完了したら、準備万端です。あなたの研究関心に合わせて、自由に質問を投げかけてみてください。例えば…

  • 語彙研究なら:
    • 和訓に「タスク」とある漢字を教えてください。
    • 「訓点語彙集成」にも例がある和訓について、なにか傾向はありませんか。
    • 「ウルハシ」という和訓を持つ字の義注には、どのような共通点がありますか?
    • 「訓点語彙集成」に例のある動詞の和訓の中で、サ行変格活用のもの(例:「〜す」)はありますか?
    • 同じ漢字に対して、名詞の和訓と動詞の和訓の両方が付けられている例はありますか?それはどのような漢字に多いですか?
    • 形容詞の和訓で、特に意味の範囲が広い(多くの異なる漢字に使われている)ものは何ですか?

ここでは、「訓点語彙集成」にも例がある和訓について、なにか傾向はありませんか。に対する回答を見てみましょう。

「訓点語彙集成」に例がある和訓について、以下の傾向が見られます。

  • 動詞の多さ: 多くの和訓が動詞であるという明確な傾向があります。例えば、「シタカフ(従う)」、「タスク(助ける)」、「トル(取る)」、「ヒク(引く)」、「ウツ(打つ)」、「シメス(示す)」、「ノタフ(宣う)」、「アナホル(穴掘る)」、「ヲリ(居り)」、「アナニスム(穴に住む)」、「カナフ(叶う)」、「サトル(悟る)」など、具体的な動作や状態を示す語が多く見られます。
  • 古語の反映: これらの和訓の多くは、現代の日本語ではあまり使われなくなった「古語」や、特定の訓読体系で定着した語彙である可能性が高いです。多くの和訓の備考に「日国未収(日本国語大辞典に未収録)」や「表記に未収」といった記述があることが、その裏付けとなります。
  • 具体的な行為や状態の表現: 漢文の動詞や状態を表す漢字に対して、その内容を直接的に和語で表現しようとした訓が選ばれています。「穴/穴」に「ツチムロ(土室)」という名詞の和訓が見られる例もありますが、これも「土の室にこもる」といった具体的な行動や場所と結びつく傾向を示していると解釈できます。
  • 複数の漢字への適用: 一つの和訓が複数の異なる漢字に適用されている例もあります。例えば「シタカフ」は「修」と「應」の両方に訓点語彙集成からの用例が示されており、これは訓読における柔軟性や、限られた和語で多様な漢語の意味合いを表現しようとする試みを示していると考えられます。

これでうまくいきました。

アップロードに失敗すると、失敗したファイルも表示されますので、後々見づらくなります。

  • 音韻研究なら:

たとえば、

  • 反切の上字が「古」である字のリストを作成してください。
  • 声点が「HL」となる和訓の例を、漢字と語形が分かるように10個挙げてください。

二番目の質問には以下の回答がありました。

提供されたソースの中から、声点が「HL」(高低)となる和訓の例を10個、見出し字とともに以下にリストアップします。

  • : ヲリ(HL)
  • : ヤル(HL)
  • : ユク(HL)
  • : ヤク(HL)
  • : ツク(HL)
  • : ツキヌ(HL_)
  • : クム(HL)
  • : ヘル(HL)
  • : ヒク(HL)
  • : オス(HL)

AIとの付き合い方 #

NotebookLMの取扱説明書:得意なこと、苦手なこと #

NotebookLMは、従来の検索エンジンやデータベースとは全く異なる、新しいタイプの「AI研究助手」です。キーワードで機械的に探すのではなく、人間と対話するように資料を読み解いていきます。その能力を最大限に引き出すには、何が得意で、何が苦手かを知っておくことがとても重要です。

NotebookLMの得意なこと(こんな使い方が効果的です) #

NotebookLMは、資料全体の文脈を理解し、質的な分析や新たな発見の手助けをすることを最も得意とします。

1. 要約と解説(優秀な解説担当者) #

特定の項目について「〜について詳しく教えて」と質問すると、資料に散らばっている関連情報を拾い集め、自然で分かりやすい文章に要約・解説してくれます。

  • 活用例:
    • 特定の漢字を挙げ、「この字の字義、音注、和訓にはどのようなものがありますか?」と聞く。
    • 難解な箇所を抜き出し、「この部分はどういう意味ですか?」と尋ねる。

2. パターン発見と発想支援(思考の触媒) #

資料全体を俯瞰し、「何か傾向はありませんか?」といった曖昧で探索的な質問を投げかけると、人間では気づきにくいパターンや規則性を発見し、提示してくれます。

  • 活用例:
    • 「『訓点語彙集成』にも例がある和訓について、なにか傾向はありませんか?」という質問から「動詞が多い」という重要な指摘を引き出したのが、まさにこの使い方です。
    • 「〇〇という特徴を持つ字に、共通点はありますか?」と、研究の仮説をぶつけてみる。

3. 文脈の深い理解(文脈を読むパートナー) #

単語の一致だけでなく、「この記述とあの記述は関連があるか?」「この時代の背景を考慮すると、この和訓はどう解釈できるか?」といった、文脈に基づいた高度な問いに応えようとします。

  • 活用例:
    • 「『セム』という和訓を持つ字がいくつかあるが、字義の上で関連はありますか?」と尋ねる。

NotebookLMの苦手なこと(こういう使い方は要注意です) #

NotebookLMは、データベースのような網羅性や100%の正確性を保証するツールではありません。

1. 網羅的な検索(全件リストアップ) #

「〇〇を含む項目をすべて挙げてください」というような、全件検索は最も苦手です。AIの判断で検索範囲を狭めたり、見落としたりすることが頻繁にあります。

  • 注意点:
    • 今回「ウルハシ」を検索した際、正解が111件のところを、わずか数件しか提示できなかったのが典型例です。
    • 網羅的なリスト作成や、特定の語句の有無を厳密に調査したい場合は、PythonスクリプトやExcelの検索機能など、従来の確実な方法を使いましょう。

2. 正確な件数のカウント #

上記の理由から、「〇〇という和訓は何件ありますか?」といった定量的な質問に対して、正確な数値を返すことはできません。

  • 注意点:
    • 返ってきた件数は、あくまで「AIが見つけられた範囲での参考値」と捉え、学術的な根拠としてはいけません。

3. 複雑な命令の実行 #

「AかつBの条件で、Cの形式で出力せよ」といった、プログラムのような厳密で複雑な命令は、正しく理解・実行できないことがあります。

  • 注意点:
    • できるだけ自然な、人間に対する質問のような言葉で対話するほうが、良い結果を得やすくなります。

4. 事実に基づかない回答(ハルシネーション) #

AIは混乱すると、学習データに基づかない、全くの嘘(ハルシネーション)を生成することがあります。

  • 注意点:
    • NotebookLMの回答には、必ず引用元へのリンク(数字のアイコン)が表示されます。少しでも疑問に思ったら、必ず引用元をクリックして、元の資料の記述と一致しているかをご自身の目で確認する癖をつけましょう。

まとめ:最適な役割分担 #

用途 NotebookLMの評価 推奨ツール
質的分析・傾向発見 得意 NotebookLM
内容の要約・解説 得意 NotebookLM
発想の壁打ち・仮説検証 ◯ 得意 NotebookLM
網羅的な検索・全件調査 × 苦手 Python / Excel
正確な件数カウント × 苦手 Python / Excel

このように、

  • 「正確な調査はプログラム」
  • 「深い読解と発想は NotebookLM 」

のふたつに役割分担をすることで、それぞれの長所を最大限に活かした、新しい時代の研究スタイルを確立することができます。

まとめ:新しい研究スタイルの幕開け #

これで、あなたも大量のテキストデータを自在に対話し、分析する新しい研究手法を手に入れました。 この方法を応用すれば、今後ご自身で作成する他の文献データも同じように分析できます。AIを賢い助として、あなたの研究をさらに加速させてください。