政党・会派データ

対象: 国会 / 地方議会

👀 ざっくり言うと

政党は全国的な政治団体、会派は議会内で投票行動を共にする議員グループです(多くの場合政党と重なりますが、必ずしも一致しません)。 sage-baseでは、政党データを公式サイトから、会派データを議会公式サイトの名簿やLLMによる会議録からの抽出で収集しています。 政治家ごとの「いつからいつまでどの政党・会派に所属していたか」も履歴として記録します。

🔄 データの流れ

graph TD
    A["政党公式サイト
所属議員一覧"]:::source B["議会公式サイト
会派名簿ページ"]:::source C["議会会議録
会派情報の追加ソース"]:::source M["管理画面からの手動入力
Streamlit 政党・会派管理"]:::source P1["議員一覧取得
Playwrightで各党の所属一覧を取得"]:::process P2["会派メンバー抽出
BAMLで名簿から議員名・役職を構造化抽出"]:::process P3["政党-会派マッピング
対応表に登録"]:::process P4["議員 ↔ 会派 紐付け
選挙当選者を政党ルールで会派に登録"]:::process P5["所属履歴の時系列記録
開始日・終了日つきで履歴化"]:::process P6["政党・会派の手動登録・編集
抽出メンバーのレビューと所属の手動追加"]:::process T_PP["political_parties
テーブル(政党)"]:::table T_PG["parliamentary_groups
テーブル(会派)"]:::table T_PGP["parliamentary_group_parties
テーブル(会派×政党 対応)"]:::table T_PGM["parliamentary_group_memberships
テーブル(会派所属)"]:::table T_PMH["party_membership_history
テーブル(政党所属履歴)"]:::table V["dbt Data Vault層
hub / sat / link モデル"]:::process H["BigQuery公開
sagebase スキーマ"]:::public A --> P1 B --> P2 C --> P2 P1 --> T_PP P2 --> T_PG P2 --> T_PGM P2 --> P3 P3 --> T_PGP P3 --> P4 P4 --> T_PGM P4 --> P5 P5 --> T_PGM P5 --> T_PMH M --> P6 P6 --> T_PP P6 --> T_PG P6 --> T_PGM P6 --> T_PMH T_PP --> V T_PG --> V T_PGP --> V T_PGM --> V T_PMH --> V V --> H classDef source fill:#ffffff,stroke:#1a1a1a,stroke-width:2.5px,color:#1a1a1a classDef process fill:#ffffff,stroke:#737373,stroke-width:1px,color:#1a1a1a classDef table fill:#ffffff,stroke:#1a1a1a,stroke-width:1.5px,stroke-dasharray: 6 3,color:#1a1a1a classDef public fill:#1a1a1a,stroke:#1a1a1a,stroke-width:2.5px,color:#ffffff
元データ 加工 DB 公開
📂 技術的な詳細(開発者向け)

スクレイパー・インポーター

データソーススクリプト主要ロジック
各政党公式サイトsrc/infrastructure/external/web_scraper_service.pyPlaywrightで政党サイトの議員一覧を取得し、BAMLで氏名・選挙区・所属情報を構造化抽出
議会公式サイト(会派名簿)src/interfaces/cli/commands/parliamentary_group_commands.py名簿テキストに対しBAML(会派メンバー抽出エージェント)で議員名・役職を抽出。信頼度0.9以上はルールで自動採用
政党 ↔ 会派 の対応表メンテナンスscripts/link_parliamentary_groups.py / link_parliamentary_groups_bulk.pyparliamentary_group_partiesの対応表に基づき、国政選挙の政党所属議員を会派memberships に一括登録
管理画面からの手動入力(Streamlit)src/interfaces/web/streamlit/views/political_parties_view.py / parliamentary_groups/tabs/{new_tab, edit_delete_tab, member_extraction_tab, member_review_tab}.py + subtabs/create_memberships_subtab.py政党・会派の新規登録・編集、会派メンバー抽出の起動とレビュー、所属レコードの手動追加・訂正を提供

DBテーブル(PostgreSQL)

テーブル説明
political_parties政党マスタ
parliamentary_groups議会内会派(chamber・有効期間つき)
parliamentary_group_parties会派と政党の対応(M:N)
parliamentary_group_memberships政治家の会派所属履歴
party_membership_history政治家の政党所属履歴

dbtモデル(Data Vault層)

モデル役割
hub_political_party政党のハブ
sat_political_party政党の属性サテライト
hub_parliamentary_group会派のハブ
sat_parliamentary_group会派の属性サテライト
link_pg_party会派 ↔ 政党 のリンク
link_pg_membership政治家 ↔ 会派 の所属履歴リンク
sat_pg_membership所属履歴の属性サテライト

BigQuery公開テーブル

テーブルデータセット
political_partiessagebase
parliamentary_groupssagebase
parliamentary_group_membershipssagebase
parliamentary_group_partiessagebase