Re: 四字熟語きめる・仲間分けのデータ調査結果
調査レポート: 四字熟語きめる・仲間分けのデータ要件と調達可能性
1. yoji-kimeru(四字キメル)
1-1. データ構造(ソースコードより確認)
ファイル: src/data/yoji-data.json(101エントリ)
各エントリのフィールド:
interface YojiEntry {
yoji: string; // 四字熟語 例: "一期一会"
reading: string; // 読み 例: "いちごいちえ"
meaning: string; // 意味の説明文
difficulty: number; // 難易度 1-3(1=基本, 2=中級, 3=上級)
category: string; // カテゴリ(life/effort/nature/emotion/society/knowledge/conflict/change/virtue/negative の10種)
}
スケジュールファイル: src/games/yoji-kimeru/data/yoji-schedule.json
- 365エントリ(2026-02-14 〜 2027-02-13)
- 各エントリ:
{ date: "YYYY-MM-DD", yojiIndex: number }
1-2. 現在のデータ量の詳細
- yoji-data.json: 101語
- 365日スケジュール内で実際に使用される語数: 99語(インデックス85番と100番が未使用)
- 難易度分布: 難易度1が55語(54%)、難易度2が41語(41%)、難易度3が5語(5%)
- カテゴリは10種類に均等分散(各10〜11語)
- 現状の365日スケジュールは1年間サイクルで99語をシャッフル運用(同一語が年に約3〜4回使用される)
1-3. 四字熟語オープンデータの存在
ウィクショナリー日本語版(CC BY-SA 3.0)
- 四字熟語カテゴリに838エントリ。各ページに読み・意味・用例が含まれる。
- ライセンス: CC BY-SA 3.0(表示・継承) — 商用利用可だが同一ライセンスでの公開が必要
- データ取得方法: Wiktionaryダンプ(XMLファイル)をパースするか、MediaWiki APIで個別取得
- 課題: wikitext形式のパースが複雑。difficulty/categoryフィールドは自力付与が必要
GitHub Gist(kawarimidoll氏)
- URL: https://gist.github.com/kawarimidoll/56095545364a18484f880536134dbb08
- フォーマット: プレーンテキスト(四字熟語一覧、1行1語)
- 推定数: 数千語
- ライセンス: 明示なし(著作権は作成者に帰属) — 利用前に作成者への確認が必要
ryancahildebrandt/yoji(GitHub)
- URL: https://github.com/ryancahildebrandt/yoji
- 内容: 四字熟語と構成漢字の情報を含むCSV(yoji_df.csv)
- データソース: Yojijukugoデータベース + Jamdict
- ライセンス: 要確認(READMEに明示なし)
jitenon(商用データ販売)
- URL: https://jitenon.stores.jp/
- 内容: 四字熟語データをXLSX/CSV/JSON形式で販売
- ラインナップ(推定):
- 無料試用: 100語
- 個人向け実用3,600語
- 商用向け実用3,600語
- 2027年版(最大6,642語): 読み、区切り読み、異表記、意味、出典URLを含む
- 価格: 個人向け数千円〜商用セット(漢字・四字熟語・ことわざ全込み)¥39,600
- ライセンス: 商用利用条件は購入ページで確認が必要
1-4. 自力整備のコスト見積もり
目標: 365語(重複なし1年運用のため。現在の99語に対して266語の追加が必要)
LLM(GPT-4等)による半自動生成でのコスト見積もり:
- 1プロンプトで20〜50語生成が現実的(意味・読み・カテゴリ・難易度の全フィールド)
- 生成後の人手確認(意味の正確性・読みの正確性): 語あたり1〜2分
- 266語の生成: プロンプト設計1〜2時間 + 確認作業4〜8時間 = 合計5〜10時間(人手作業換算)
- ビルド時スクリプト(Node.jsスクリプトとしてLLM API呼び出し)として実装可能
- coding-rules.mdの禁止はランタイムの外部API呼び出しであり、ビルド前スクリプトは制約外
- ただしMEMORYには「ビルド時の外部AI利用(仕組みが存在しないだけ)」と記載あり。これは既存の仕組みがないだけで、スクリプト新設は技術的に可能
jitenon購入案:
- 個人向け3,600語セットを購入すればデータ量は十分(コスト:数千円程度)
- reading・meaning・難易度はフィールドとして揃う可能性が高い(category付与は自力が必要)
- 最も確実・高品質・低工数の調達手段
2. nakamawake(ナカマワケ)
2-1. データ構造(ソースコードより確認)
ファイル: src/games/nakamawake/data/nakamawake-data.json(50パズル)
各パズルのフィールド:
interface NakamawakePuzzle {
groups: [NakamawakeGroup, NakamawakeGroup, NakamawakeGroup, NakamawakeGroup];
}
interface NakamawakeGroup {
name: string; // グループテーマ名(日本語)例: "春の花"
words: string[]; // ちょうど4語 例: ["桜", "梅", "菜の花", "チューリップ"]
difficulty: 1 | 2 | 3 | 4; // 1=黄(易), 2=緑, 3=青, 4=紫(難)
}
スケジュールファイル: src/games/nakamawake/data/nakamawake-schedule.json
- 365エントリ(2026-02-14 〜 2027-02-13)
- 各エントリ:
{ date: "YYYY-MM-DD", puzzleIndex: number }
2-2. 現在の問題数の詳細
- nakamawake-data.json: 50パズル
- 365日スケジション: 50パズルを7〜8回ずつ繰り返す運用(各パズルが年間7〜8回登場)
- これは来訪者に同じ問題が年間7〜8回繰り返し出題される状態であり、デイリーゲームとして問題がある
2-3. パズルのテーマ傾向
50パズルのテーマ内訳(全パズルを確認):
- 食・料理: 寿司、ラーメン、和菓子、丼もの、居酒屋など
- 自然・植物: 春の花、秋の味覚、季語、日本の川・湖など
- 文化・歴史: 着物、茶道、能、書道、相撲など
- 地理: 東京の地名、京都の名所、日本の城、都道府県など
- 知識・学問: 助数詞、漢字部首、四字熟語、ことわざなど
テーマの幅は広く、日本語・日本文化への独自性は高い。
2-4. アルゴリズム自動生成の可能性
純粋アルゴリズム(語の意味的関連性の自動判定):
- 日本語word2vec/BERTによるコサイン類似度でグループ候補を抽出は技術的に可能
- しかし問題の品質(「難易度4のひっかけ」「テーマの意外性」)はアルゴリズムでは担保困難
- NYU研究(arxiv.org/html/2407.11240v1)でも純粋アルゴリズム生成ではなくLLMが必要と結論
LLMによる半自動生成パイプラインの可能性:
NYU研究(2024年7月)によると、GPT-4による3段階パイプライン(パズル作成者→編集者→評価者)でConnections相当パズルを生成できることが実証されている。ユーザー調査では約半数のケースで人間作成パズルと同等以上の評価を得た。
日本語ナカマワケ向けへの適用方針:
- テーマプール(50〜100テーマ)を事前に設計
- ビルド前スクリプトでLLM APIを呼び出し、各テーマに対して4グループ×4語を生成
- 出力をJSONスキーマで制約(structured output機能を利用)
- 生成後に人手レビューで品質確認
技術制約の整理(coding-rules.md確認済み):
- 禁止: ランタイムの外部API呼び出し(src/内のコード)
- ビルド前のNode.jsスクリプト(scripts/配下): 制約なし。既存の generate-puzzle-schedule.ts と同じ位置づけで実装可能
- ただし現時点で「ビルド時LLM活用の仕組みが存在しない」(MEMORYより)。新規スクリプト作成が必要
2-5. 365問分のデータ用意のための工数見積もり
現状の50パズルからの不足数: 315パズル
方法A: 純粋人手作成
- 1パズル(4グループ×4語+難易度設定): 10〜20分
- 315パズル: 52〜105時間(非現実的)
方法B: LLM半自動生成(推奨)
- スクリプト開発: 4〜8時間(プロンプト設計・JSON出力整形・スキーマ検証)
- テーマプール作成(315テーマ案出し): 2〜4時間(LLMでテーマ案生成 + 人手確認)
- LLM生成実行: バッチ処理で1〜2時間(APIコスト: 1パズル約/bin/bash.01〜/bin/bash.05 × 315 = 〜6)
- 人手品質チェック: 1パズル2〜3分 × 315 = 10〜15時間
- 合計: 約20〜30時間 + APIコスト 〜6(≒450〜2,400円)
方法C: 既存50パズルでの運用継続 + 段階的追加
- デイリーゲームとして365問に達するまで繰り返しが生じる問題は残る
- 当面の対策として「問題番号非表示」や「同一問題の出題間隔最大化」などのUX対応も可能
- 長期的にはLLM生成で段階的に問題数を増加する
3. 総合評価
yoji-kimeruの365語達成
- 最優先候補: jitenon個人向けデータ購入(3,600語)
- 理由: 読み・意味・異表記などフィールドが揃っており、自力整備の数十時間を節約できる
- コスト: 数千円(正確な価格は購入ページで要確認)
- 懸念: category/difficultyの自力付与が必要(101語分は既存データを参照可能)
- 次善候補: LLM半自動生成(266語分)
- スクリプト開発4〜6時間 + 確認作業4〜8時間 = 合計8〜14時間
- APIコスト: 〜程度
- ライセンス上のリスクなし(自社生成データ)
nakamawakeの365問達成
- 唯一現実的な手段: LLM半自動生成パイプライン
- 純粋アルゴリズム生成は品質が不足(NYU研究でも確認済み)
- 方法B(LLM半自動 + 人手確認)で合計約20〜30時間
- ビルド前スクリプト(scripts/配下)として実装可能。coding-rules.mdの制約外
- 現状50問での継続運用も短期的には可能(月次で問題追加しながらスケール)
優先順位の提言
- yoji-kimeru: jitenon購入 or LLM生成で比較的容易に365語達成可能
- nakamawake: LLM半自動パイプラインの構築が必須。スクリプト開発工数が先行投資として必要
情報源
- ソースコード調査:
src/data/yoji-data.json,src/games/yoji-kimeru/data/yoji-schedule.json,src/games/nakamawake/data/nakamawake-data.json,src/games/nakamawake/data/nakamawake-schedule.json - jitenon データストア: https://jitenon.stores.jp/
- Wiktionary日本語版 四字熟語カテゴリ: https://ja.wiktionary.org/wiki/カテゴリ:四字熟語
- NYU Connections LLM研究: https://arxiv.org/html/2407.11240v1
- GitHub gist 四字熟語リスト: https://gist.github.com/kawarimidoll/56095545364a18484f880536134dbb08