Upgrade to Pro — share decks privately, control downloads, hide ads and more …

国立国語研究所通時コーパスシンポジウム2025

Avatar for Yasuhiro Kondo Yasuhiro Kondo
March 09, 2025
260

 国立国語研究所通時コーパスシンポジウム2025

2025年3月8日国立国語研究所・オンライン

Avatar for Yasuhiro Kondo

Yasuhiro Kondo

March 09, 2025
Tweet

Transcript

  1. 7 例1: 基本的なデータ取得 日本語命令: 「顧客テーブルから全ての顧客情報を取得してください」 SQL: SELECT * FROM customers;

    例2: 条件付きデータ取得 日本語命令: 「東京に住んでいる顧客の名前と電話番号を表示してください」 SQL: SELECT name, phone_number FROM customers WHERE city = '東京'; 次の日本語をSQLに変換しなさい
  2. 1 源氏物語コーパスの作成 1 CSVデータ ['平安-仮名文学', '20-源氏1010_00001', '10', '20', 'B', '\u3000', '',

    '', '\u3000', '\u3000' '空白', '', '', '6330815488512', '', '10', '10', '20', '記号', '0', '1', '', '', '23', '', '\u3000', '', '', '', '17', '\u3000', '', '', '', '737', '188673', '10', '20-源氏1010_00001', '10', '20'] ['平安-仮名文学', '20-源氏1010_00001', '20', '50', 'I', 'いづれ', 'イズレ', 'イズレ', '何れ', 'いづれ', '代名詞', '', '', '534646253298176', '', '20', '20', '50', '和', '0', '1', 'イズレ', 'イヅ レ', '1945', '', 'いづれ', '', '', '', '17', '何れ', '', '', '', '62241', '15933700', '10', '20- 源氏1010_00001', '20', '50'] ['平安-仮名文学', '20-源氏1010_00001', '50', '60', 'I', 'の', 'ノ', 'ノ', 'の', 'の', '助詞-格助 詞', '', '', '7968444268028416', '', '30', '50', '60', '和', '0', '1', 'ノ', 'ノ', '28989', '', 'の', '', '', '', '17', 'の', '', '', '', '927649', '237478145', '10', '20-源氏1010_00001', '50', '60']
  3. 15 源氏物語SQLDBのカラム構成 id (INTEGER, 主キー) subcorpus_name (TEXT) sample_id (TEXT) char_start

    (INTEGER) char_end (INTEGER) sentence_boundary (TEXT) key (TEXT) pronunciation_form (TEXT) lemma_reading (TEXT) lemma (TEXT) original_text (TEXT) pos (TEXT) conjugation_type (TEXT) conjugation_form (TEXT) lemma_id (TEXT) lemma_subclass (TEXT) serial_number (INTEGER) written_form_start (INTEGER) written_form_end (INTEGER) word_class (TEXT) fixed_length_flag (INTEGER) variable_length_flag (INTEGER) word_form (TEXT) kana_form (TEXT) lemma_id_2 (TEXT)
  4. 16 カラムの新設の工夫 usage (TEXT) written_form (TEXT) text_type (TEXT) speaker (TEXT)

    style (TEXT) page_number (INTEGER) word_form_rep (TEXT) furigana (TEXT) text_type_filter (TEXT) poem_number (INTEGER) word_form_id (INTEGER) written_form_id (INTEGER) sentence_number (INTEGER) p_sample_id (TEXT) p_open (INTEGER) p_close (INTEGER) text_title (TEXT) vol_title (TEXT) p_sampleIDを分割して、後者を vol_titleに置き換え。これによっ て、「桐壺」などでの検索が可能 になる
  5. 18 LLMが生成するSQL文 [{'cid': 0, 'name': 'id', 'type': 'INTEGER', 'notnull': 0,

    'dflt_value': None, 'pk': 1}, {'cid': 1, 'name': 'subcorpus_name', 'type': 'TEXT', 'notnull': 0, 'dflt_value': None, 'pk': 0}, {'cid': 2, 'name': 'sample_id', 'type': 'TEXT', 'notnull': 0, 'dflt_value': None, 'pk': 0}, {'cid': 3, 'name': 'char_start', 'type': 'INTEGER', 'notnull': 0, 'dflt_value': None, 'pk': 0}, {'cid': 4, 'name': 'char_end', 'type': 'INTEGER', 'notnull': 0, 'dflt_value': None, 'pk': 0}, {'cid': 5, 'name': 'sentence_boundary', 'type': 'TEXT', 'notnull': 0, 'dflt_value': None, 'pk': 0}, {'cid': 6, 'name': 'key', 'type': 'TEXT',
  6. 19 LLMが生成する文(続き) corpusテーブルには以下の43個のカラムがあります: id (INTEGER, 主キー) subcorpus_name (TEXT) sample_id (TEXT)

    char_start (INTEGER) char_end (INTEGER) sentence_boundary (TEXT) key (TEXT) 最終的な出力 は、自然な日 本語文として 生成される。
  7. 源氏物語ベクトル検索システム 源氏物語 文単位に分割 (センテンス分割) intfloat/multilingual-m5 各センテンスを ベクトル化 FAISS ベクトルDB (高速検索用)

    検索クエリ 「光る源氏について」 (ユーザーの問い合わせ文) intfloat/multilingual-m5 クエリを ベクトル化 FAISS検索 ベクトル間の 内積で類似度計算 検索結果 最も類似度の高い 源氏物語の文 (内積の値が高いもの) [0.24, -0.13, 0.56, ..., 0.78] cos(θ) = A・B / (|A|×|B|) ①文分割 ②エンコード ④クエリ入力 ⑤検索 ⑥結果取得 ③インデックス構築 27
  8. 源氏物語ベクトル検索サーバーシステム サーバーサイド 源氏物語 文単位に分割 (センテンス分割) multilingual-m5 各センテンスを ベクトル化 FAISS ベクトルDB

    (高速検索用) API サーバー Flask/FastAPI (REST API) クライアントサイド https://genji-search.example.com 源氏の恋愛について教えて 検索 検索結果: 「かくてうち過ぐる程に、いとどしく心を... 「姫君の御心ばへいとらうたげにおはす... JavaScript fetch API (HTTPリクエスト) DOM操作 結果をHTMLに 表示 APIリクエスト JSON レスポンス サーバー技術スタック: - Python (Flask/FastAPI) - FAISS (ベクトル検索エンジン) - Multilingual M5 Embedding model クライアント技術スタック: - HTML5/CSS3 (レスポンシブデザイン) - JavaScript (モダンJS/フレームワーク) - Fetch API (非同期通信) 28
  9. 29