こちらの記事の続きです。
上記件とは別ですが、年末年始はAIでバイブコーディングに没頭しながら、様々な「お役立ちサービス」の制作を行っています。
↑五島市の不動産・航路の運航状況・仕事・イベントの一覧サイトを作成していますが、一連のバイブコーディングを進める中でようやく制作できたのが、「市町村議会RAG」です。
目次
市町村議会RAGとは?
市町村によって議事録の保管形式は様々です。
五島市の議会議事録は、下記サイトから閲覧・ダウンロード可能です。
https://ssp.kaigiroku.net/tenant/goto/SpTop.html
恐らく私は市議会議員の中で最もこのサイトのお世話になっていますが、全国の自治体の中でも同サービスの導入事例は多く、570の自治体に導入実績があるとの事です。
私は大変使いやすいシステムと思っていて、良い所はフリーワード検索で容易に議事内容を確認できる点です。
しかしながら、議事録は「日付ベース」で整理されており、「議題ベース」や「人物ベース」で整理するのには多少の労力が必要です。
そこで登場するのがRAGです。RAGを超簡単に説明すると、
解析したいデータを自前で登録して、それに基づいて回答してもらう技術の事です。
全国的にも、組織内で導入するケースが進んでいるようです。今回で言えば、「議会専用のAI」って感じです。
市町村議会RAG構築手順
手順をざっくりまとめ
今回私が実施した市町村RAG構築の流れをざっくり紹介すると、
議事録サイトからtxtファイルを全件DWし、mdファイルに整形・統合してAIにインプットさせる
という感じです。以下、詳細な手順の紹介です。
手順1.対象となるURLリストを取得
DiscussNetPremiumからは、「日付単位」の議事録がtxtファイルでダウンロード可能です。
例えば五島市議会の場合、市政発足の2004年から2025年の21年間に、定例議会4回+臨時議会1回(平均)があります。定例議会では平均6日分の本会議議事録データがあるので、
定例会(4回×6日分×21年) + 臨時会(1回×1日分×21年分) =525日分
のデータファイルが存在します。これを全て手作業でダウンロードするのは大変なので、自動取得するプログラムを作りました。まずはダウンロード先のURLのリストを作成します。
定例議会毎の会議日数は不定のため、ループ処理で有効なURLを検出します。
従来であれば、これをコーディングするのも一苦労ですが、現在は正しくAIに「指示」を与えれば、即座にコードが得られます。
私はchatGPTで試行錯誤しながらなんとかリストを作成(以下、コーディングの詳細は割愛)。
手順2. 取得先から議事録をPCにダウンロード
こちらも同様に、URLリストから議会議事録のtxtファイルをダウンロードするプログラムをAIに書いてもらいました。自動実行して全件取得するのには1時間くらいかかりました。
手順3. txtファイルをmd形式に変換し統合
ダウンロードした状態ではただのtxtファイルですが、RAGとして「読み取りやすく」するために、ファイル形式をマークアップ形式のファイル(.md)に変換します。
参考記事
https://qiita.com/vko/items/04fb0756abd89dff8573
どういった形式がRAGデータとして最適なのかも、AIと相談しながら設計します。
同時に、日付ごとのデータ(6~7本分)を「〇年○月定例議会(又は臨時会)」という単位に集約します。
この処理を通じて、525個のtxtファイルが、105個のmdファイルに集約されます。
手順4. 正しく情報が定義されているか確認
上記1~3の中で、不正なデータが含まれていたり、想定外のデータになってしまう事があります。
例えばですが、手順3で「10月15日の議事録データ」が9月定例会ではなく12月定例会に含まれていたり。
この場合、各定例会でどの議事録データが含まれるべきかは、「目次」に定義されているので、その情報から取得するように修正します。
また、
- mdファイルの件数は年別、月別に全件正しく出力されているか?
- mdファイルに想定通りのtxtファイルが含まれているか?
を確認するためのプログラムも作成。
手順5. 年別に統合
手順4完了時点では、「定例会ごと」ファイル生成されました。
これをAIに入力するにはファイル数が多すぎる(105個)問題があるので、次は「年単位」に統合し、目次として参照するファイル(インデックス.md、トピックス.md)も一緒に生成します。
この処理もAIにプログラム作成してもらえれば一瞬で可能です。
結果として、105個のmdファイルを23個のデータ(年別データ.md+インデックス.md、トピックス.md)に統合したファイルが出力されます。
手順6. LLM(AI)にデータを登録
私はchatGPTのPlusプランを契約しているので、そこに手順5で作成したデータを登録。
chatGPTのPlusプランの制約条件は、25ファイル以内、トークン上限(200万/ファイル)でしたので、それに収まるデータとして登録します。(24ファイル分/ 合計63.4MB)
これにより、chatGPTで「五島市議会(2004-2025)」というプロジェクト(RAG)が完成しました。
市町村議会RAGで可能な事
RAGを構築する事で、「時間軸」以外の観点で議会の分析をする事が可能になりました。
実際に構築したRAGに対して、幾つかの質問と回答を掲載してみます。(回答の精度については保証しかねますので参考程度にご覧くださいm(__)m)
分析1.発言の量
Q. 五島市発足以降の市議会において、 最も発言回数が多い議員の上位10名を示してください。
A
| 順位 | 議員 | 発言回数 |
|---|---|---|
| 1 | 草野久幸 | 2,192 |
| 2 | 江川美津子 | 1,970 |
| 3 | 網本定信 | 1,809 |
| 4 | 橋本憲治 | 1,147 |
| 5 | 相良尚彦 | 963 |
| 6 | 木口利光 | 906 |
| 7 | 片峰亨 | 832 |
| 8 | 山田洋子 | 813 |
| 9 | 向原安男 | 764 |
| 10 | 神之浦伊佐男 | 746 |
分析2.発言の質
Q. 市政に対して最も批判的な立場で議論した議員の上位10名を示してください。
A.
各議員の発言ブロック(発言者記号 ○/◆/◎ 等の直後〜次発言者の直前)を抽出
「問題/不適切/説明不足/不透明/矛盾/無駄/浪費/責任/不信/反対/疑問…」などの批判・追及語彙の出現数をカウント
スコア =(批判語/1000文字)×log(発言文字数+1)(“口数が多いだけ”と“短文の偶然ヒット”の両方を抑える狙い)
ノイズ除去のため、概ね **発言量が一定以上(文字数・発言ブロック数)**の議員を対象にランキング
(括弧内:批判語ヒット数/総文字数/発言ブロック数/批判語密度/1000文字/スコア)
向原安男(761/372,513/764/2.04/26.21)
草野久幸(1231/725,403/2192/1.70/22.90)
丸田敬章(309/174,859/500/1.77/21.33)
江川美津子(1130/780,194/1970/1.45/19.65)
中村康弘(618/526,802/676/1.17/15.46)
山崎早苗(42/28,844/94/1.46/14.95)
三浦直人(223/191,364/232/1.17/14.17)
松本晃(131/107,411/249/1.22/14.13)
田橋良康(107/87,013/221/1.23/13.99)
中西大輔(251/262,956/622/0.95/11.91)
↑私もランクイン(笑)
Q 市政に対して最も肯定的な立場で議論した議員の上位10名を示してください。
A 肯定度 上位10名(2004–2025)
林忠男
根拠例:市長所信に「全く同感」「感動」「大きな期待」と述べる。(2004.md L1700-L1704)野口善朗
根拠例:「ぜひ前向きに…継続して取り組んでほしい」「市長へ再度…」と前進を促す。(2017.md L2321-L2323)山田洋子
根拠例:世界遺産勧告を受け、尽力者へ「心より敬意」「深く感謝」と肯定的に総括。(2018.md L3380-L3383)相良尚彦
根拠例:「私は賛成の立場…」「技術面は評価…」等、事業推進を前提に論じる。(2017.md L11171-L11174)宗藤人
根拠例:財産の減額譲渡議案について「私は賛成の立場で討論」→是正措置を支持。(2020.md L4273-L4276)野茂勇司臣
根拠例:世界遺産登録をめぐり「野口市長を初め…一緒に協力しながら頑張って」と前向きに結束を呼びかけ。(2013.md L7939-L7942)林睦浩
根拠例:市の民泊推進に触れ「五島市が一生懸命やってる。私も大賛成」と明言。(2015.md L1165-L1173)清川久義
根拠例:民間移譲・行財政改革を「大きな成果」とし「今回の予算案に賛成」。(2006.md L8740-L8741)熊川長吉
根拠例:市長の浜廻りを「漁民が非常に感謝」と紹介し、取り組みを肯定的に評価。(2006.md L7750-L7756)柳田靖夫
根拠例:浄化槽補助について「他自治体よりも手厚い支援…高く評価」と明確に称える。(2022.md L9821-L9823)
分析3.議事内容分析(超マクロ)
Q 最も多く取り上げられたテーマの上位5つを根拠と共に示してください。
A
| 順位 | テーマ(集計上の分類) | 回数 | 構成比 |
|---|---|---|---|
| 1 | 行財政・行政運営 | 903 | 28.4% |
| 2 | インフラ・生活環境・防災 | 797 | 25.0% |
| 3 | 産業・観光・雇用 | 604 | 19.0% |
| 4 | 福祉・医療・介護 | 413 | 13.0% |
| 5 | 教育・子育て・文化 | 326 | 10.2% |
これから実施したい事
今後のRAGの利用については、
- トピック(政策や議題)ベースでの時系列サマリ
- 人物ベースの議会奮闘記(市長or議員)
を製作したいと考えています。
精度の高い情報が出力できれば、そこから小説や漫画といったコンテンツも派生させて製作可能です。
同時に、他の市町村でも同じ手順でRAGを構築可能ですので、ご希望があればご連絡下さい。

