VWork バイブコーディングフレームワーク

広聴AIでは出ない「賛否」と「国会とネットのずれ」——論点AIマップと合意点マップを作った

2026年10月8日

この記事は バイブコーディング的仕事ブログ(VWork Blog)へ移りました。 最新版はこちらです → https://exbridge.jp/vibeblog/2026-10-08-kouchou-ai-ronten-ai-map.html

名古屋でAIシステム開発の会社をやっています。10月8日、Claude Code と、チームみらいのAIインタビュー、Pol.is、広聴AI(デジタル民主主義2030)を見比べていて、どれも同じところで止まることに気づきました。その日のうちに、足りないところを埋める「論点AIマップ」を作って公開するところまで進んだので、その経緯を書きます。

1. 意見を集める道具は、入口が同じ

AIインタビュー、Pol.is、広聴AIは、どれも「意見を書いてもらう」ところから始まります。

答えに来る人が集まらないと、地図が作れません。集まるのは「答えに来るほど関心がある人」なので、偏りもあります。

2. 広聴AIの分析で出るもの、出ないもの

広聴AIのソース(v4系、10月6日時点の analysis-core)を読んで、分析の中身を確かめました。

  1. コメントから、LLM が「意見」を抜き出す
  2. 意見を数値(ベクトル)にして、似たものを階層的にまとめる
  3. まとまりごとに、LLM が名前と説明を付ける。全体の要約も作る
  4. 散布図とツリーマップにする。元のコメントにたどれる。「attribute_」で始まる列(年代・地域など)で絞り込める

「何が話題になっているか」を一覧するには十分です。一方で、ソースに機能が無いものもあります。

出ないもの 中身
賛否 同じ話題に賛成と反対が混ざっても、別々には数えない
人数 画面にも「意見数・コメント数を人数や賛成票数として扱わないでください」とある
時期 日付で見る機能が無い
重複・ボット 同じ文の貼り付けや、1人の大量投稿を見分けない
声の出どころ どこから集めた声かで分けたり重みを変えたりしない
読み違いの率 抜き出しの精度は画面に出ない(当社が#471で実測したところ、ローカルLLMで意味の読み違いが約3%、同じ入力に2回かけて208件中24件で結果が変わった)

広聴AIの開発の中心は、自治体のPCやAzureで確実に動かすことと、使いやすさです。7月以降のIssueとPR54件を見ても、新しいモデルへの対応、失敗の検知、導入手順の整備がほとんどでした。現場に入れていく段階としては、それが正しい優先順位だと思います。そのうえで、政策を考える側が本当に知りたい「どう割れていて、どこなら合意できるか」は、別の道具で出す必要があります。

3. 足りないところを、2つに分けた

道具 やること
論点AIマップ(今回作った) すでにある声から、話題の地図と、話題ごとの「賛成か反対かを問える論点」を作る。国会の質疑・政府の答弁・会派・年・ネットを分けて数える
合意点マップ(9月19日公開) 論点に対する賛否を、ネットの声からの読み取りと人の投票で集め、意見のグループと合意点を出す

広聴AIの「話題の地図」にあたるところを、論点AIマップが「すでにある声」から作り、その先の賛否と合意点を合意点マップが受け持ちます。

4. 作り方

  1. 材料を集める:国会の発言は、当社の国会トラッカー「子どもとSNS」(国会会議録検索システムから収集)。ネットの声は、合意点マップに取り込んだ X の投稿309件と Yahoo!ニュースのコメント23件
  2. 区切る:国会の発言を200字前後に区切り、トラッカーの語の組(「子ども SNS」なら両方)を含む部分だけを使う。102件
  3. 意味の近さを計算する:multilingual-e5-large(手元のCPU)
  4. まとめる:KMeans(乱数の種を固定。同じ材料なら毎回同じまとまり)。434件を12の話題に
  5. 名前・要約・論点を付ける:gemma4:12b(手元のGPU)。まとまり1つにつき1回だけ呼ぶ
  6. 公開する:手元で HTML と JSON まで作り、PHP 1ファイルで配る。AI エージェント向けの MCP も同じ PHP で答える

土台には、Google の Jigsaw が公開している sensemaking-tools(Apache-2.0)の「論点を立てる」考え方を使いました。Gemini 前提なので、gemma4 で作り直しています。広聴AIと Pol.is は AGPL なので、コードは使っていません。

5. 結果:国会とネットで、話題がはっきり分かれた

「子どもとSNS」の地図では、国会の声とネットの声が左右に分かれました。

国会は「環境整備」、ネットは「年齢で禁止するか」。同じテーマでも、話していることが違いました。

6. 論点を合意点マップに渡す

論点AIマップが立てた論点は20本ありました。合意点マップにはすでに14本の論点があるので、同じ主張を2回押させないよう、次の順で絞りました。

  1. 埋め込みで、ほぼ同じ文を落とす
  2. gemma4 に「テーマの政策として賛否を問える文か」「既存の論点と同じ主張か(対象の年齢が違えば別の主張)」を判定させる
  3. 大きな話題の論点から6本まで

渡したのは、「SNSの利用に対する罰則を設けるべきだ」「13歳未満のSNS利用を禁止すべきだ」「15歳未満の個人アカウント開設を禁止すべきだ」「オンラインでの年齢確認にはプライバシー侵害のリスクがある」など6本です。「警察官などの公務員に厳格な規律を」はテーマの政策ではないとして外れました。

途中でつまずいたところ

自社・自治体・議員事務所で使う

パブリックコメント、住民アンケート、議員事務所に届いた声、社内アンケートの自由記述を CSV で入れれば、同じ地図と論点が作れます。自社のサーバーで動くので、声を外部のAIに送りません。

よくある質問

広聴AIとは何が違いますか?

広聴AIは、文章の山を話題ごとにまとめて地図にする道具です。論点AIマップは、それに加えて話題ごとに賛否を問える論点を立て、声の出どころ(国会の質疑・政府の答弁・会派・年・ネット)を分けて数えます。賛否と合意点は合意点マップで出します。

広聴AIの代わりになりますか?

代わりというより、後ろの工程です。広聴AIは自治体のPCやAzureで動かす実績と、導入の現場があります。論点AIマップは、すでにある声から論点を立て、合意点マップにつなぐところを受け持ちます。

AI エージェントから使えますか?

使えます。MCP(https://kurage.exbridge.jp/kronten.php/mcp)で、地図の一覧、話題と論点、代表的な声、論点の検索を引けます。