入力した文章から学習意図を解釈し、Wikipedia と Google Trends を使って候補を集め、gemma4 でオーダーメイドの学習ナレッジグラフを生成するアプリです。
- 自然文の入力から「何を調べるべきか」を AI が整理する
- Wikipedia から関連候補を広く収集する
- Google Trends で候補の検索傾向を補助情報として扱う
- gemma4 が最終的なナレッジグラフ JSON を生成する
- Web 画面で生成済み JSON を選択して閲覧する
- ノード、エッジ、Layer 別の構成を可視化する
src/collector/web_app.py- ローカル Web UI
- 出力済み JSON の一覧表示と切り替え
- 新しいトピックの生成実行
src/collector/pipeline.py- 文章入力を受け取り、調査計画と候補収集を実行
- 最終 JSON を
output/graphs/に保存
src/collector/gemma_graph_builder.py- gemma4 へのプロンプト生成
- JSON 解析
KnowledgeGraphへの変換
src/collector/wikipedia_collector.py- Wikipedia 候補の取得とフィルタリング
src/collector/trends_collector.py- Google Trends の検索ボリューム取得
src/models/graph_models.py- ナレッジグラフのデータモデル
- Python 3.11 以上を推奨
- Ollama
- gemma4 系モデル
- インターネット接続
- Wikipedia と Google Trends を参照するため
仮想環境を作成して依存関係を入れます。
python3 -m venv myenv
source myenv/bin/activate
pip install -r requirements.txtOllama 側では gemma4 を用意してください。(gemma4以外でも、OLLAMA_MODELの値を変えれば利用可能ですが、軽量かつ、精度もいいのでgemma4はおすすめです。)
ollama pull gemma4必要に応じて、モデル名や接続先を環境変数で変更できます。
OLLAMA_BASE_URL- 既定値:
http://localhost:11434
- 既定値:
OLLAMA_MODEL- 既定値:
gemma4:latest
- 既定値:
python src/collector/web_app.pyブラウザで次を開きます。
http://127.0.0.1:8000
python src/collector/main.py "Pythonでデータ分析を学びたい。前提から応用まで知りたい"Web 画面では、検索欄に単語だけでなく自然文を入力できます。
例:
Pythonでデータ分析を学びたい。pandas の使い方だけでなく、前提となる統計も含めたい暗号通信の仕組みを理解したい。公開鍵暗号、証明書、TLS を含めて知りたい機械学習の全体像を知りたい。基礎から実践まで段階的に学びたい
入力された文章をもとに、AI が調査計画を作成し、Wikipedia 候補を複数の観点から集めて、最終的な学習グラフを生成します。
生成結果は以下に保存されます。
output/graphs/{トピック}_{タイムスタンプ}.json- 互換用として
output/knowledge_graph.json
Web 画面では、output/graphs/ にある JSON をプルダウンで選んで表示できます。
保存されるグラフには、主に次の情報が入ります。
graph_idtopicnodesedgesmetaresearch_plan
各ノードには以下のような情報が入ります。
node_idlabeltypelayerdescriptionprerequisitesmasteryhesitation_scorecognitive_load_historynext_reviewreview_count
各エッジには以下のような情報が入ります。
edge_idsource_idtarget_idrelationshipweightdescription
src/
collector/
main.py
pipeline.py
gemma_graph_builder.py
wikipedia_collector.py
trends_collector.py
web_app.py
models/
graph_models.py
output/
graphs/
docs/
scripts/
- Wikipedia の候補収集はラベル中心です
- 最終的なナレッジグラフは gemma4 の出力を基準にしています
- ノード数が多すぎる場合は、再度 gemma4 に絞り込みを依頼します
- Web 画面のリアルタイム生成表示は安定性を優先して簡略化しています
- Ollama が起動しているか確認してください
OLLAMA_BASE_URLが正しいか確認してください- モデル名が
OLLAMA_MODELに存在するか確認してください
- 短時間に大量の取得をしている可能性があります
- アプリ側で再試行はしますが、しばらく待ってから再実行してください
- 入力文を少し具体的にしてください
- 必要な学習範囲を明示すると、より絞りやすくなります