【要約】公約の達成率が見れるアプリを開発しました【POLITIKI】 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者が、選挙公約の達成状況を可視化するアプリを構築する際、データの収集と整形において深刻な課題に直面した。公約と法案という性質の異なるデータを紐付けるための、データ構造の不整合が主な要因である。
- ・公約データの非定型性:政党や年度によって記載形式がバラバラであり、自動収集が困難であった。
- ・法案データの構造的複雑さ:国会回次ごとにテーブルの列数が異なり、DB設計に影響を与えた。
- ・法案の持ち越し問題:審議が次期国会へ持ち越される際、データの重複や修正案の扱いが複雑化した。
// Approach
開発者は、RAG(検索拡張生成)を採用することで、公約と法案の関連性を高精度に抽出する仕組みを構築した。単なるキーワード検索ではなく、意味的な近接性を利用する手法をとっている。
- ・ベクトル化:Geminiのembedding-001を用い、公約と法案を多次元ベクトルに変換した。
- ・ベクトル検索:pgvectorを活用し、意味の近い法案をセマンティック検索で抽出した。
- ・LLMによる最終評価:Gemini APIにより、抽出された法案が公約と真に関連するかを判定した。
// Result
開発者は、AIによる公約評価と、根拠となる法案へのリンク表示を実現した。これにより、ユーザーが情報の妥当性を検証できる基盤を構築した。
- ・可視化の実現:公約の達成度をステータスや円グラフで直感的に表示可能にした。
- ・信頼性の担保:評価に使用した具体的な法案へのリンクを明示し、透明性を確保した。
- ・今後の拡張性:GitHub Actionsによる自動取得や、政治家単位の分析への道筋を立てた。
Senior Engineer Insight
> RAGの実装において、ETL(抽出・変換・格納)の設計がシステムの成否を分けることを示している。法案の持ち越しや修正案といったドメイン特有の複雑な仕様への対応は、実務におけるデータクレンジングの重要性を物語っている。手作業によるデータ収集はスケーラビリティを欠くため、早期の自動化が不可欠だ。本手法は、契約書と法規制の整合性検証など、非定型文書間の照合業務への応用が期待できる。