12K Views
October 27, 23
スライド概要
PyCon APAC 2023 の発表資料です。
https://2023-apac.pycon.jp/timetable?id=XRLR98
GIS Engineering
2023-10-28 Python ✖️法学 日本の法のテキスト分析と 地図可視化への試み Slides in English PyCon APAC 2023 並木 亮 (Ryo Namiki) Mail : [email protected]
Slides in English Python は社会のしくみを 理解、改善することに役立つ 応用 最初に学ぶこと Web サービス・アプリ開発 データ分析、コンサル 機械学習 ... 数学 情報科学 プログラミング ... 技術を別ドメインに Python が橋渡し役 法学 : リーガルテック 地理学 : 防災テック 経済学 : フィンテック ...
データの分析・可視化が専門です 2023 年 2021 並木 亮 Ryo Namiki Slides in English 2015 2011 社会人 Pythonや地図データを業務や趣味でよく触る Pythonをデータ分析・可視化に活用 趣味で法律の勉強 国家資格(宅地建物取引士やFP)に合格 不動産 お金 大学・大学院 地震学の研究、数値計算やフィールドワーク Fortranに苦しみつつPythonに触れ始める 地形図や地質図とも触れ合う 少年時代 C++を10回学び10回挫折 中学生のとき東日本大震災を経験
この発表で伝えたいこと Python は社会のしくみを理解、改善することに役立つ 民間・行政でデータに基づいた意思決定が重んじられつつある EBPM (Evidence Based Policy Making) など Pythonには多種なデータを 処理するライブラリがある Pythonではデータ取得・分 析・可視化が一気通貫に テキスト(法令の名称など) 自然言語処理系ライブラリ 地図データ用の pandas = Geopandas 地図データ(市区町村の位置情報など) 実装の具体的説明は最小限。最後にライブラリ一覧を紹介する
本発表のモチベーション 法といえば難解そうだが... Python で構造を紐解いて可視化したら面白いのでは!? 六法全書 🥱😴😪 テキスト分析を可視化 地図に可視化 宅地建物取引業法、民法、 電気通信事業法... ※本発表は特定の政治的な主義、思想や集団への支持を示すものではない
発表で目指したいオーディエンスのゴール Python 初学者へ 「Pythonでこんなこともできるのか...!」 勉強のモチベーションをあげてほしい 中〜上級者へ ご自身の高い技術は社会の幅広な分野 で有効活用できるのだと伝えたい
日本の法令、抑えたい要点2つ 日本の法令を知る Python で 一 気 通 貫 データを取得する テキスト分析 地理データとは 地図で可視化する
法令には階層構造がある 上位の法令が下位に優先。本発表ではすべてのレイヤのデータを扱う 法 令 憲法 国の最高法規。これに反する法律や国家の行 為は無効。日本国憲法 法律 国民全体のルール。国会の承認を経て制定 政令 法律を具体的に運用するルール。内閣が制定 省令 など 法律を具体的に運用するルール。大臣らが制定 告示 など 公的機関が決めたルールの公示 ※条約や内閣府令、条例、規則などは略
国 会 の 召 集 ・ 衆 議 院 の 解 散 な ど 法令は三権分立の中で運用される 国会 内内 閣閣 総不 理信 大任 臣決 の議 指 名 内閣 (行政) (立法) 国民 選挙 世論 命令などの適法性審査 最高裁判所長官の指名など 最高裁判所裁判官の 国民審査 弾 劾 裁 判 違 憲 立 法 審 査 裁判所 (司法) 出典:衆議院ホームページをもとに作成
計量法学(ジュリメトリックス)の事例紹介 米国などの法典をテキスト分析、可視化。点が一つの法の文章。 法の数やつながりが複雑化していることを示す 1994年 2018年 Katz et al.(2020)の 図4 を一部和訳・修正
異分野のつながりが新しい研究・ビジネスに 法学や経済学 の知識 研究分野 計量法学 計量経済学 計算社会科学 ... 情報科学・統計学 の知識 ビジネス リーガルテック 位置情報ソリューション 不動産、金融DX ...
分野越境の成果はノーベル賞にも 年のノーベル経済学賞は経済学 ✖︎統計学 2021 「最低賃金」をテーマに労働経済学で因果推論を活用した研究 労働経済学への実証的貢献 因果関係の分析への方法論的貢献 デヴィッド・カード ヨシュア・アングリスト グイド・インベンス 出典: 日本語版 wikipedia
データはどこにあるのか? 日本の法令を知る Python で 一 気 通 貫 データを取得する テキスト分析 地理データとは 地図で可視化する 法令の階層構造、三権分立 異分野のコラボレーション
データ公開の取り組みは日本で増えている % 法のデータ オープンデータに取り組む 地方自治体の割合 日本法令索引 - 国立国会図書館 法令 XML - デジタル庁, e-Gov 地図のデータ(地理空間情報) 出典:デジタル庁資料をもとに作成 年 国土数値情報 - 国土交通省 標高データ - 国土地理院 点群データ - 静岡県、東京都など 課題:データ全体の取得に工数がかかる・機械判読性が低いケースも
日本法令索引はどのようなサービス? 国立国会図書館が運営する法令のデータベース 収録データが多い(明治以降、のべ約18万件の法令) 検索機能はある。ダウンロード機能はない ※廃止法令・法律案 を含む
(再掲)分析・可視化のモチベーション ユニークな名称の法令が ある 地図可視化できる法令も 多いだろう Python で法令名を テキスト分析・地図可視化 したら面白いのでは!?
データ取得の主要な道筋 手動ダウンロード 全体データが公開されているときは最速 WebAPI スクリプトに組み込みやすい。定期更新にも適する →これらの機能がない場合、Webスクレイピングなどの機械 的な取得手法が有効な手段となる可能性もある ⚠️いずれでもデータ取得・利用時には注意点がある⚠️ 利用規約や契約内容 ライセンス
Web スクレイピングとは? HTML 等の Web ページの構造を解析しデータを(構造的に)抽出すること 例 Webページ(HTML) <html> <body> <table> <tr> <th>年/都道府県</th> <th>東京</th> <th>京都</th> </tr> <tr> <th>1980</th> <td>50</td> <td>30</td> </tr> <tr> <th>2020</th> <td>100</td> <td>200</td> </tr> </table> </body> </html> 構造化データ(CSV) 年, 都道府県, 値 1980, 東京, 50 1980, 京都, 30 2020, 東京, 100 2020, 京都, 200
利用規約をよく確認しよう スクレイピングを禁止しているサービスもある 短時間の大量アクセスも不適切 X (旧Twitter)サービス利用規約(抜粋) 楽天ショッピングサービスご利用規約(抜粋) 当社から提供される(かつ該当する利用条件に従う場 合にのみ提供される)、当社の現在利用可能な公開イ ンターフェース以外の方法(自動プログラムか否かを 問わない)での、本サービスへのアクセスもしくはそ の探索またはアクセスもしくは探索の試み(ただし、 当社との個別契約で特に許可されている場合は除く) (注記: 本サービスへのクローリングまたはスクレイ ピングを、当社による事前の書面での同意がないまま 行うことは明示的に禁止されています) 第7条(禁止事項) 出典: https://twitter.com/ja/tos 出典: https://www.rakuten.co.jp/doc/info/rule/ichiba_shopping.html お客様は、本サービスの利用において以下の各号に定める行 為をしてはならないものとします。 (7)当社の事前の許可を得ることなく、自動化された手段 (自動購入ツール・ロボットなどこれらに準ずる手段)を用 いて商品を購入すること(商品ページ上の情報取得等を含 む) (16)当社、当社のグループ会社、ショップ、他のお客様 のサーバー、コンピュータ等に過度の負担をかけること
ライセンスをよく確認しよう 成果物などを公にするときに重要 クリエイティブ・コモンズ・ライセンスでは 4条件の組み合わせで6種類を構成 表示 作品のクレジットを表示すること 非営利 営利目的での利用をしないこと 改変禁止 元の作品を改変しないこと 継承 元の作品と同じ組み合わせのCCライセンスで公開すること 出典:クリエイティブ・コモンズ・ジャパン
国会図書館の法令データベースでは? お問い合わせ
二次利用は可能 出典の明示が必要 法令データベースは一定条件下で二次利用が可能 出典の明記 加工する場合は加工の明記 など 機械的なアクセスを行うとき 多重リクエストは避ける 数秒程度の間隔を空けて 日本法令索引では法令名称等のデータに著作権が 存在しない 出典:国立国会図書館ウェブサイト利用規約 著作権法 第十三条より引用 次の各号のいずれかに該当する著作物は、この章の 規定による権利の目的となることができない。 一 憲法その他の法令 ※編集著作権が認められる場合はその限りではない 本発表手法でのデータ利用が問題ない旨は、国会図書館の担当部署にも確認済
Chromeでサイトの構造を分析する 拡張機能(デベロッパーモード)の「ネットワーク」タブで、裏側のデータのやり取りをみる
エンドポイントをもとに機械的なデータ取得が可能 エンドポイント パラメタ
レスポンスは JSON 形式 Python の Requests ライブラリを使って機械的にレスポンスを取得する
pandas で取得したデータの中身を確認 分析のメインターゲット ID クロス分析できそう 公布日 法令名 カテゴリ ... ... ※以降の図表は日本法令索引(国立国会図書館)を基に作成
テキスト分析って何か難しそう...? Python で 一 気 通 貫 日本の法令を知る 法令の階層構造、三権分立 異分野のコラボレーション データを取得する オープンデータ Webスクレイピング、規約に注意⚠️ テキスト分析 地理データとは 地図で可視化する
テキスト分析の第一歩は「シンプルに」 データ整形 キーワード部分一致検索 日付テキストを datetime 型に変換 都道府県名を含む法令を取り出す 昭和21年5月10日 → 1946-05-10 平成24年5月30日 → 2012-05-30
47個の折れ線グラフができた それぞれの都道府県名を含む法令が毎年どれだけ公布されたかを可視化 150 都 道 府 県 名 100 を 名 称 に 50 含 む 法 令 の 0 数 一つの色が一つの都道府県に対応 1895年 1920年 1945年 1970年 法令の公布年 1995年 2020年 日本法令索引(国立国会図書館)を基に作成
沖縄返還(1972年) 出典: 日本語版 wikipedia
沖縄返還に合わせて100以上の法令が公布 150 都 道 府 県 名 100 を 名 称 に 含 50 む 法 令 の 数 0 沖縄 沖縄の復帰に伴う特別措置に関する法律 沖縄の復帰に伴う厚生省関係政令の改廃に関する政令 沖縄の復帰に伴う国税関係法令の適用の特別措置等に関する省令 沖縄の復帰に伴う工業用水道事業法の適用の特別措置等に関する省令 ... 北海道 1895年 1920年 1945年 1970年 法令の公布年 1995年 2020年 日本法令索引(国立国会図書館)を基に作成
キーワード一致手法の問題点:地名の曖昧さ 「京都」をキーワードにすると 「東京都」も抽出してしまう 「国立」は くにたち or こくりつ? 自然言語処理が必要だ
自然言語処理の出番だ 自然言語 (ex. 日本語) 人間が意思疎通に使う 基礎技術 形態素解析 構文解析 関係抽出 .... 形式言語 (ex. Python) 文法や意味が形式的 応用タスク 文章の カテゴリ分類 要約 生成 .... ※生成AI(LLMs)がすごいのは、一つのモデルで幅広なタスクをこなせること おすすめ:「NLP2023 緊急パネル ChatGPTで自然言語処理は終わるのか」
形態素解析で2つのタスクをこなす 例 解析エンジン MeCab とその Python-binding を使用 1400万人が東京都に住んでいます 1. 自然言語を最小の意味単位(単語)に分解する 1400万人 が 東京都 に 住ん で い ます 2.単語の品詞などを判別する 1400万人 が 東京都 に 住ん で い ます 固有名詞 助詞 固有名詞-地域 助詞 動詞 助詞 動詞 助動詞
法令データを形態素解析してみた 例 のべ約18万件の法令データ全てを解析すると 約330万個の単語に分解された 東京都の議会の解散に関する特別法案 東京都 の 固有名詞-地域 議会 の 解散 助詞 一般名詞 助詞 接続名詞 に関する 助詞 特別 形容動詞語幹 名詞 どうやって可視化しようか? わくわく...! 法案 一般名詞
=単語の雲 ☁️ ワードクラウドを作ってみる 分解した単語の集合を出現頻度にしたがって文字が大きくなるよう可視化 WordCloud ライブラリを使用 2000年以降の法令から組織名(固有名詞)を抽出・可視化 2000年 金融庁が発足 1999年 橋本内閣の行政 改革で制定され た法人形態
地理データってなんだろう? Python で 一 気 通 貫 日本の法令を知る 法令の階層構造、三権分立 異分野のコラボレーション データを取得する オープンデータ Webスクレイピング、規約に注意⚠️ テキスト分析 地理データとは 地図で可視化する Simple is best 形態素解析、ワードクラウド
地理データは普通のデータと何が違う? 端的には、普通のデータ + ジオメトリ(位置情報)→ 地理データ 普通のデータ 整数型 1984 文字列型 PyConはいいぞ 日付型 2023-10-28 ... float型 2.71828 地理データ(地理空間情報) ジオメトリ型 位置情報が 付加された点、線、面など POINT (139.69178 35.68963) 経度 緯度 地理情報のためのOSSアプリ群(FOSS4G)もある など
地理データ用のPandas が GeoPandas 普通のデータ 地理データ データ集計 by pandas 空間分析 by Geopandas データ可視化 by pandas 地図可視化 by Geopandas
地理データでは空間分析ができる 有明周辺で駅近にある学校は? 空間分析 : GeoPandas 可視化 : Folium 緑の範囲:駅から半径500m以内 🔴 🔵 学校の位置 駅から500m 圏内 駅から500m 圏外 有明周辺 出典 : 鉄道データ、学校データ(国土数値情報)
地理データ特有の可視化も多い Pythonでは地図可視化ライブラリが豊富 GeoPandas バブルチャート 地理的領域ごとに円の大きさや色 で属性の値を示す Plotly PyDeck Folium コロプレスマップ 数値の階級を一定区域で色 分けして示す Plotlyを使用 米国の失業率 アークの可視化 アーク(円弧)で場所から 場所への値の大きさを示す Pydeckを使用 Plotlyを使用 米国の市人口ランキング順位 サンフランシスコの通勤人口
なぜ地理データの適切な可視化が重要なのか? データ・情報の適切な可視化は社会を理解、改善することにつながる 2023年のイスラエル・ハマスの衝突を主題にしたニュースメディアの地図可視化例 ガザ地区とロンドンの人口密度の3D地図可視化 出典:Financial Times - Steven Bernard https://twitter.com/sdbernard/status/1713876128769638538 ガザ地区の人口密度と避難範囲 出典:Bloomberg Graphics https://twitter.com/sdbernard/status/1713876128769638538
テキスト分析に地理データを組み合わせたい 国立情報学研究所などが開発する (Py)GeoNLPは、位置情報付きの形態素解析を行う 例 1400万人が東京都に住んでいます PyGeoNLP ※内部で MeCab が動いている 1400万人 が 東京都 に 住ん で い ます 固有名詞 助詞 固有名詞-地域 助詞 動詞 助詞 動詞 助動詞 代表点の緯度経度などを単語に紐付けて出力 POINT (139.69178 35.68963)
PyGeoNLP で法令名に位置情報を付加した 法令名 地名 位置情報 (代表点) ... 都道府県名以外の地名も抽出できている で集計・可視化 円の大きさが法令数に対応する バブルチャート 日本法令索引(国立国会図書館)を基に作成
せっかくなら地図に可視化したい Python で 一 気 通 貫 日本の法令を知る 法令の階層構造、三権分立 異分野のコラボレーション データを取得する オープンデータ Webスクレイピング、規約に注意⚠️ テキスト分析 地理データとは 地図で可視化する Simple is best 形態素解析、ワードクラウド ジオメトリ型、GeoPandas 空間演算、バブルチャート
地理データ特有の可視化も多い 地図作成をカルトグラフィー(Cartography)という エンジニアリング + デザイン バブルチャート 地理的領域ごとに円の大きさや色 で属性の値を示す コロプレスマップ 数値の階級を一定区域で色 分けして示す アークの可視化 米国の失業率 アーク(円弧)で場所から 場所への値の大きさを示す 米国の市人口ランキング順位 サンフランシスコの通勤人口
GeoPandas ではインタラクティブも簡単 GeoDataFrame.plot() では 画像として静的な可視化が出力できる GeoDataFrame.explore() では Jupyter上などで動的な可視化ができる
時系列のバブルチャートを見る 1945-1965年 ※小笠原諸島を除く 1965-1985年 沖縄返還に伴う法令 1985-2005年 阪神・淡路大震災に伴う法令 ※正確な位置抽出には失敗 (大阪市東淀川区淡路を示している) 2005年- 福島第一原子力発電所事故に伴う法令 日本法令索引(国立国会図書館)を基に作成
JavaScript では高度な可視化ができる 強力な地図可視化には Maplibre や Deck.gl などの OSS ライブラリが有用 ©︎Maptiles by MIERUNE under CC BY. Data by OpenStreetMap contributors, under ODbL.
Python と JavaScript の使い分けが大事 Python Python でダッシュボードを 極めようとする動きもある Streamlit leafmap geemap を活用 一気通貫のデータ処理・分析・可視化 少工数、PDCAサイクルの回しやすさ JavaScript 可視化の質や自由度の高さ 表示の最適化・速度の軽快さ 出典:Streamlit-geospatial - Qiusheng Wu https://giswqs-streamlit.hf.space/
結論、Python は面白いし便利だ! Python で 一 気 通 貫 日本の法令を知る 法令の階層構造、三権分立 異分野のコラボレーション データを取得する オープンデータ Webスクレイピング、規約に注意⚠️ テキスト分析 地理データとは 地図で可視化する Simple is best 形態素解析、ワードクラウド ジオメトリ型、GeoPandas 空間演算、バブルチャート カルトグラフィー、情報可視化 JavaScript
まとめ Python は社会のしくみを理解、改善することに役立つ 応用 最初に学ぶこと Web サービス・アプリ開発 データ分析、コンサル 機械学習 ... 数学 情報科学 プログラミング ... 技術を別ドメインに Python が橋渡し役 それらを 法学 + 活かした 地理学 経済学... ビジネス
まとめ Python は社会のしくみを理解、改善することに役立つ 民間・行政でデータに基づいた意思決定が重んじられつつある Pythonには多種なデータを 処理するライブラリがある Pythonではデータ取得・分 析・可視化が一気通貫に 本発表では法令への テキスト分析・地図可視化 を例に取り上げた 日本法令索引(国立国会図書館)を基に作成
法令データに興味を持ったあなたへ https://www.digital.go.jp/policies/legal-practice/hackathon
参考文献・ホームページ 文献 法の構造と計量分析 - 飯田高 Katz, Daniel M., Corinna Coupette, Janis Beckedorf, and Dirk Hartung(2020)“Complex Societies and the Growth of the Law,” Scientifi c Reports 10: 18737, https://doi.org/10.1038/s41598-020-73623-x久本 空海,西尾悟,井口奏大,古川泰人,大友寛之,東山翔平,大内啓樹 (2023). 場所参照表現と位置情報を紐付けるジ オコーディングの概観と発展に向けての考察. 言語処理学会第29回年次大会発表論文集, pp. 2645–2650. [S. Hisamoto et al. (2023). サイト 日本法令索引 - 国立国会図書館 https://hourei.ndl.go.jp/#/ 衆議院 https://www.shugiin.go.jp/internet/itdb_annai.nsf/html/statics/kokkai/kokkai_sankenbunritsu.htm デジタル庁 https://www.digital.go.jp/councils/administrative-research-wg-legal-practice-team 国土数値情報 -国土交通省 https://nlftp.mlit.go.jp/ksj/
登場したライブラリまとめ Python で 一 気 通 貫 データを取得する テキスト分析 地理データとは 地図で可視化する Requests, pandas MeCab, WordCloud Geopandas, PyGeoNLP Plotly, PyDeck, Folium, Streamlit, leafmap ,geemap (Maplibre.js, Deck.gl) Thank you for listening! Ryo Namiki Mail : [email protected]