Coder Social home page Coder Social logo

codeforjapan / codeforelection Goto Github PK

View Code? Open in Web Editor NEW
32.0 32.0 6.0 1.14 MB

衆院選2017候補者データベース作成プロジェクト This repo will be archived 🗄️ in the future

License: MIT License

Shell 2.53% JavaScript 78.70% HTML 2.81% Python 15.96%

codeforelection's People

Contributors

ayuki-joto avatar halsk avatar hkwi avatar koujikozaki avatar nyampire avatar tetsuyas1 avatar yokinist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codeforelection's Issues

【郵便番号-小選挙区照合データ】複数の小選挙区に分割される基礎自治体について、町字から選挙区を割り出せる仕組みを作る

想定されている手順

  • 入力された郵便番号から、基礎自治体コードを引く
  • city2senkyoku.jsonを使って、当該基礎自治体コードが複数小選挙区自治体かどうか確認
  • 複数小選挙区自治体でない場合は、選挙区を返す
  • 複数小選挙区自治体の場合は、町字から選挙区を推定する <=このイシューではこれを作成する。

[Question] 郵便番号CSVの仕様について

01101,"060  ","0600000","ホッカイドウ","サッポロシチュウオウク","イカニケイサイガナイバアイ","北海道","札幌市**区","以下に掲載がない場合",0,0,0,0,0,0
01101,"064  ","0640941","ホッカイドウ","サッポロシチュウオウク","アサヒガオカ","北海道","札幌市**区","旭ケ丘",0,0,1,0,0,0
01101,"060  ","0600042","ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(1-19チョウメ)","北海道","札幌市**区","大通西(1〜19丁目)",1,0,1,0,0,0

最後の方の6カラムの0/1 (or Number)の意味を忘れました。
ご存知の方教えてください。

データ作成の作業フローを検討

9日のもくもく会くらいまでの、データ作成フローを決めましょう。

現在存在しているデータについては、
#14 (comment) の分類を延長しています。
(10日公示日が過ぎたらスレッド再作成して整理する予定)

参考になりそうなウィキデータ利用事例を集める

お題に対するインフルエンサーの賛否一覧「AgreeList」。データ収集は利用者参加型。
http://www.agreelist.org/
インフルエンサーの職業や出身校をWikidataより取得しているそう。名前だけでなくこうした背景情報があることでどんな人かがわかりやすい。職業や出身校別の集計グラフも傾向をとらえるのに効果的。
オープンソースで公開されているので、もしかしたらさくっと立ち上げてしまえるかも。
https://github.com/hectorperez/agreelist

Wikidata上の立候補者に対して紐付けを行う

以下の作業を行います

GrayDBのQ番号が揃ったようなので、各政治家のwikidata項目に下記を追記して頂いてもよろしいでしょうか。
立候補選挙(P3602)-第48回衆議院選挙(Q20983100)
そこまでできたらwikidataの一括操作はいったん一区切りで、以後はこの条件でwikidataから今回の立候補者一覧を随時抜くことができるようになります。

Wikidata:Notability

About all the items about politician, if you don't add reference I will delete all that don't fall under Wikidata:Notability. Can you add the source on this item?

と言われたのですが、どういうふうにreferenceを追加すればいいんでしょうか?

GrayDB: 公認政党に複数書かれている人がいる

GrayDBの候補者シートで、公認政党に複数の政党が書かれているレコードが3つありました。

  • Q18817877:仲里利信
    自民
    新進
    自民
    無所属

  • Q7678543:山本拓
    自民
    自由党
    自由改革連合
    新進
    無所属
    自民

  • Q11598974:竹内譲
    公明
    新進
    公明

それぞれ一番下のものが正しいようです(山本さん竹内さんは党の候補者リストに載ってましたが仲里さんは自民のリストになく、twitter https://twitter.com/nakasatookinawa を見る限りでも無所属のようでした)

プロジェクトの紹介ページを作成

外部の方に本プロジェクトについて紹介するためのシンプルなサイトを作る。
github pagesを想定(かな?)。

その場合
codeforjapan/ 以下にgithubpage用のレポジトリを作るのかと思います。
権限のある方お願いします。

報道データとの確認作業

  • GrayDBのAZ列以降に作業の結果を掲載

作業内容

  • "ひらがなのよみがな"(性と名の間に半角スペースを含む)をキーとしてマッチング
  • BB列には、小選挙区の立候補情報を掲載
  • BC列は小選挙区候補の重複
  • BD列は比例(のみ)立候補の情報
  • BEはこれらの整理状況
  • すべてソート済み

3_該当なし について

GrayDBには存在したが、報道データでは確認できなかったものが該当

GrayDataになく、報道データで新たに把握した部分

  • 立候補者シートのQ列に"把握漏れ"とある行は、GrayDbにひらがなふりがなの登録が見つからなかったデータである。
  • 作業上の都合で、把握漏れのみを抽出したシート 立候補者(把握漏れ を作成した
  • 300件ほど存在。
    (ふりがなのマッチングがとれずに、上記3_該当なしに含まれている恐れもあるので要確認)

ふりがなについて

  • wikipediaの表記と政党公式で濁音などはことなるケースも有り、
  • キーとして若干弱い。また、同姓同名も存在しているので要注意
  • ふりがなの姓名との間を半角スペースで分割するポリシーは改善したほうが良いかも。
    • 作業が少しやりにくい
    • 全角スペースが入っているケースが有る
    • (ただし、GSSでは全半角を区別していない模様ではある。)

Facebook/Twitterアカウントの継続的メンテのための仕組みについて

Facebook,Twitterアカウントの自動メンテを目指す

やり方

  1. Bing Search APIで、"安倍晋三  あべしんぞう Facebook" , "安倍晋三  あべしんぞう Twitter" といったクエリで検索する。
  • 今のところ有料っぽい(数千円 )
  1. 存在すれば、FacebookPageか、Twitterのアカウントページが取れるので、そのページを記録
  2. 発言内容の取得
  • Facebook Graph APIから、当該Pageの発言内容を取得する
  • TwitterAPIから、当該Tweetの発言内容を取得する
  1. 当該内容を政治家の発言っぽいかどうか判定する分類器で判定する
  2. 政治家だと判定したら当該政治家のアカウントとして認定する。
  3. その上で余裕があったら、人手で確認する。

政治家の発言を判定する分類機の作成(Facebookの場合・Twitterもほぼ同様)

  • 100人程度の政治家のFacebookPageの発言を取得する
  • それ以外のFacebookPageの発言を取得する(政治家っぽくないって、どうすればいいのかな?)
  • 単語ベクトル化して、分類器を構築する

その他

  • 地方政治家などへも拡張すると良さそう
  • 政治家以外にも使えるのではなかろうか。。。

GrayDB: 候補者データの重複

現在GrayDBの候補者データで名前が重複しているレコードが4件あります。

  • 伊藤達也
  • 金子恵美
  • 池内沙織
  • 梅村早江子

このうち、前者2件は別人(伊藤達也氏は自民と共産、金子恵美氏は「かねこえみ」無所属と「かねこめぐみ」自民)なのでこのままにしておきます。
後者2件は、どちらも共産で小選挙区と比例で別々にレコードができてしまったもののようです。情報はマージして、GrayDBIdの番号の若い方を残して大きい方を削除しておきます。

mySocietyへの提供データ作成

フォーマットに沿ったシートをGrayDbのforMSシートに作成した。
このシートはGrayDB候補者シート、選挙区マスタ、政党マスタを合成して作られている。
直接修正せず、それぞれの元データを修正するようにしてください。

  • 諸派、無所属について、政党マスター対応がなさそう
  • wikipediaURLには何を入れるのか??
  • area_name_idはあれでよいか?

Wikidata data model

現在大まかに次のプロパティが設定されています。

[] 分類 ヒト;
   職業 政治家;
   立候補選挙 第48回衆議院議員総選挙 .

これから設定していくプロパティについて、まとめるチケット。もろもろ意識合わせしたく。

次のプロパティは、比較的ストレートに人物に結びつくので、良いと思います。

  • P19 出生地
  • P21 性別
  • P39 公職
  • P69 学歴
  • P106 職歴
  • P569 誕生日
  • P968 メールアドレス
  • P2002 twitter
  • P2013 フェイスブックID

次のプロパティは配慮時刻 に注意して入れます。

  • P22 父親
  • P26 配偶者

事務所がやっていることも多いですが、今のところだいたい次の項目もそのまま入れて大丈夫でしょう。

  • P553-P554 LINEアカウント
  • P553-P554 Instagram
  • P856 公式サイト
  • P1581 公式ブログ
  • P2397 youtube channel
  • P4003 公式Facebookページ

P768 選挙区

wikidata にあるを見ると、人物に直接選挙区を紐づけているようです。衆議院議員総選挙の現在の制度では、この選挙区は人物には固定ではなく、選挙ごとに変わりえますので、そのまま入れると明らかに問題が出ます。

コンテキストとして設定する必要があるので、修飾子の出番ですが、今回はどのように設定しましょうか。

同様に「公認政党」や「党推薦」などもコンテキストとして入れるべきかと思います。

P726 立候補者

二度手間にはなりますが「第48回衆議院議員総選挙」(Q20983100)からのバックリファレンスもあると、便利だなと思いました。ところでこれは一般的に owl:inverseOf で wikidata 的に wdt:P1696 に相当しそうです。「立候補者」(P726)と「立候補選挙」(P3602)がこの関係にありそうですが、プロパティとしての制約は定義はされていませんでした。

その「立候補者」(P726)ですが、議論 にはプロパティステートメントに移行せよ、とあります。

また「candidate」Q618536 という、「政治家」(Q82955)のサブクラスもあります。今回はこっちを使ったほうがよかったかも。

会期 ≠ 総選挙

衆議院のシステムでは、総選挙は会期とは直接紐づかず、どちらかというと任期に紐づく。Q41654707 "47th House of Representatives" は昭和39年11月 9日開催の「第47回(臨時会)」と紛らわしい。

会期のエントリを先に作ってしまったほうがいいのかも。

GrayDB: ウィキペディアの写真を検索して画像URLを登録する

ウィキペディア(Wikimedia commons)から写真を探してGrayDBにそのURLを記入してくれる方を絶賛募集します。作業手順は以下の通りです。生年月日の検索に飽きた方はぜひよろしくお願いします :)

1.GrayDBの107行目以下で、AR列「Wikipadia URL」欄に何も書いていないものがあったら、その行の政治家名でウィキペディアを検索。
2.ウィキペディアに記事があればそのURLをAR列「Wikipadia URL」欄に転記し、さらにウィキペディア記事にその政治家の写真が掲載されていれば、その画像URLをコピペしてX列の「写真」欄に記入。
3.ウィキペディアに記事が無ければAR列に「-」を記入して次の行へ。
「-」を記入しておくとデータ(記事)が無いことが明示的にわかるため他の方が同じ検索をしなくてすみますのでよろしくお願いします。

READMEをちゃんと書く

frontのほうにあわせて内容を書く。(パット見で見間違えないように注意するw)

振り返りの日時・ロジ決定

目的

  • 今回のデータ作成についての振り返り、改善点などを話し合うミーティングを持つ

スケジュール

  • 選挙終了後?かな?

議題

  • 今後政治家データを収集、蓄積していく際にどのような方法論がそもそも望ましいか
  • 政治家のユニークなIDをどのように定義できるか
    • wikidataとの連携を視野に
  • 機械化・半自動化できる部分とのその有効性について
    • CIによる処理についてやり方の共有
    • Travis,circleCIの長所短所?
  • 人力メンテナンスの効果的なやり方
  • 必要に応じてExcel(GoogleSpreadSheet)教室

メンバー

  • 希望者・今後継続的に集めていきたい人

GrayDB: 比例区の表記ゆれ

GrayDBの候補者シートで、比例区(P列)の表記ゆれがすごいです…。
sortしてuniq -cした結果は以下のようになります。
(右が表記で左が件数です。一番上の814件は空欄のものです。)

 814 
   8 **
   6 九州
   7 四国
  10 東京
  11 東北
  15 東海
  21 近畿
   4 北信越
   8 北海道
  13 北関東
  12 南関東
   2 東京都
   1 比例区
   6 北陸信越
   2 九州・沖縄
   1 東北ブロック
  16 北信越ブロック
   5 北海道ブロック
   2 東京都ブロック
   7 比例**ブロック
  20 比例九州ブロック
   4 比例四国ブロック
  11 比例東京ブロック
   8 比例東北ブロック
  16 比例東海ブロック
  19 比例近畿ブロック
   4 比例北海道ブロック
  12 比例北関東ブロック
  13 比例南関東ブロック
  12 比例北陸信越ブロック

あまり長くする必要はないと思うので、「比例」と「ブロック」を削って、以下で統一するのでどうでしょうか。

北海道
東北
北関東
南関東
東京
北陸信越
東海
近畿
**
四国
九州

mySociety 側に質問したいこと

みなさん、mySociety 側に確認したいことがあればこちらに書き込んでください。まとめて先方に聞きます。
現在、まずは今回彼らが考えていることの技術的な詳細を送ってもらう予定ですので、それを待ってからでも良いかもですが。(おそらく返答は週明け)

データとサイトとコードの利用規約を設定する

サイトの内容が、3つの階層(データ・サイトの文言と表現・コード)に分かれているので、それぞれに対してライセンスを設定する。

また、権利保持主体はCode for Japanが代表する形でよいか?

以下、決めることとその内容の案。

  • コードのライセンス設定:MITライセンス?

  • データのライセンス設定:CC0でよい?

  • サイトの文言と表現のライセンス設定:CC-BY?こちらもCC0?

  • コードのライセンスを明示する

  • データのライセンスを明示する

  • サイトの文言と表現のライセンスを明示する

Wikidata 閻魔帳

うーんこれ困ったぞ、というエントリを書きつけておく

wikidataへのデータ登録再開に向けた方針検討

  • 下記は @higa4 さんの書込みをコピーしたものです

=====

しばらく止めていたwikidataへのデータ登録を再開するために、GrayDBにあるものをできるだけ活かしつつ、二重登録や不整合を極力抑えるために作戦を立てたいと思います。案を考えてみましたのでご意見お願いします。

1 GrayDBから転記するもの

1.1 wikidataにほぼ未登録で、問題が少なさそうなもの
→そのままQS2などで一括登録
・選挙区
・公認政党
・47th House of Representativesなど(命名をどうするか検討中)

1.2 wikidataにある程度登録済みでかつGrayDBの文字列をそのまま登録するもの
→GrayDBの登録内容のうち、wikidataに入っていない差分を取ってから未登録分を一括登録
・選挙用表記名
・かな
・誕生日
・写真
・twitter
・facebook
・LINE
・youtube channel
・instagram
・公式サイト
・メールアドレス
・公式ブログ
・詳細情報URL

1.3 wikidataにある程度登録済みでかつGrayDBの文字列をQ番号に置き換えて登録するもの(置き換え数の少ないもの)
→GrayDBの登録内容のうち、wikidataに入っていない差分を取ってから未登録分を一括登録
・性別

1.4 wikidataにある程度登録済みでかつGrayDBの文字列をQ番号に置き換えて登録するもの(置き換え数の多いもの)
→手作業で登録
・出生地
・立候補歴
・当選歴
・学歴
・職歴
・公職
・父親
・配偶者

2 GrayDB以外のネット上から収集して手作業で登録
→広く作業支援を呼びかける

3 データのupdate
・botを仕込む?

4 当選後に向けた準備
・何をしましょうかね?

Popolo と Wikidata の対応調査

古崎さんsays:

PersonやOrganizationを見た感じでは,対応するプロパティはありそうですが,細かいチェックは後ほど
データ入力は,Wikidataには手入力になる(一括インポートは不可.ぼっとは申請したら作れるそうですが...)なので,
1.候補者一覧のデータをSPARQLでWikidataと照合してIDや現状のデータを取得
2.足りないデータをWikidataで手分けして入力
3.SPARQLでPolopoの形式に変換
という感じがいいかな...と思います.

月末までのデータの整備についてのタスク整理

@nyampire  

タスクを整理していきたいです。
Excelレベルでデータメンテナンスに協力してくれる人がいるので
タスク化しておいてもらえると一日数時間でもちょいちょい人手で整備をすることができます。
SNSアカウントの取得の自動化/省力化も合わせて検討していきます。

エンドユーザー向けのサイトのタイトル再考

プロジェクト名としては Code for 選挙でも良いと思うのですが、エンドユーザーが使うサイトについては、もう少しわかりやすい名前の方が良いかもと思いました。
とはいえ、「2017衆院選候補者データベース」とかだと硬すぎるし、何かいいサービス名ないですかね。
TheyWorkForYou ってのは個人的には好きなんだけども。
「候補者ナビ」だと、dotjp の政治naviと被るか。なんかいいアイデアないですかねー

郵便番号JSONの軽量化

現在のJSONは、KEN_ALL.CSVに存在するすべての郵便番号について、対応する行政コードと選挙区番号を持たせておりますが、ほとんどの郵便番号については冒頭三桁で、集配局を意味しているはずで、そこだけ見れば大体の確度で、選挙区は特定されます。
つまり、

1234567 ⇒ 自治体01123 選挙区2
1235678  ⇒ 自治体01123 選挙区2
1236789 ⇒ 自治体01123 選挙区2

がある時に

1230000 =>自治体01123 選挙区2

と集約書き直してもらうだけでサイズは10分の一程度になると見込まれます。

告示当日の作業を整理する

1.立候補者確定情報をGrayDBに更新->佐藤さん
2.公開して問題の無い情報かできるだけチェックする->東(例:fbやtwitterがリンク切れしていないか、別の人にリンクしていないか等)
3.Front UI ができていたら、それを使って常識の範囲でチェックする。->松原さん、佐藤さん

漏れ、過不足などありましたら足してください。

GrayDB から Wikidata へのインポートを実施

How to use import tool of Wikidata

mySociety から教えて貰った、インポートツールの使い方です。

The main tool you can use to create Wikidata items is QuickStatements.

There are two versions of this. The old one is largely deprecated now, so you'll want to use the one at https://tools.wmflabs.org/quickstatements/

However, the instructions for it are still only on the old one! —
https://tools.wmflabs.org/wikidata-todo/quick_statements.php
Once you've created the statements for it, you select the "Import Commands" > "Version 1 format" from the header bar in the new version (it's quite well hidden!)

For creating new items, or adding basic statements to existing items, everything should work smoothly, but you should beware that if you use it for adding P39 (position held) records to existing items, it doesn't work if someone has held the same position more than once. Unfortunately that's very common with political data, where it's very likely that there will be a large number of people elected as a Q17506823 (member of the House of Representatives of Japan) in the 48th Term, who already have a P39: Q17506823 record for the 47th Term.

To help with that, we've developed a bot called PositionStatements that takes input in exactly the same format as QuickStatements, but adds an entirely new P39 record each time, rather than combining them all into one as QS does. There's no web interface to that yet, but you can either try to get the bot running yourselves locally (it's a Python script, linked from
https://www.wikidata.org/wiki/Wikidata:Requests_for_permissions/Bot/PositionStatements_Bot),
or you can send us a TSV file of commands, and we can run it on behalf of a Wikidata account of your choosing.

If you have any questions about either QuickStatements or PositionStatements, feel free to ask. It can be a bit confusing at first, but once you get the hang of it, it's incredibly powerful.

Do you think you'll be able to use these tools to add all the information we need directly into Wikidata?

http://tinyurl.com/yabzpkde is an example of a SPARQL query to get a list of members of the outgoing (47th) House of Representatives. That data is still quite far from complete, but it should be enough to give you the basic idea (and perhaps to practice with the tools), and it can easily be adjusted to find the members of the 48th after the election: http://tinyurl.com/ybvdcw66

Similarly, Wikidata's current understanding of who the governors of each prefecture is: http://tinyurl.com/ya57emlx — again, it would be ideal for us if you could correct any errors or omissions directly there.

GrayDBの公認政党の表記ゆれ(無所属|無所)

GrayDBの候補者シートで、「公認政党」が無所属になっている方と無所になっている方がいます。

$ sort party.txt |uniq -c|sort -n
   2 こころ
   2 新党大地
   4 支持政党なし
  19 無所
  21 社民
  41 幸福
  44 諸派
  52 維新
  53 公明
  54 無所属
  78 立民
 235 希望
 243 共産
 332 自民

立候補者の顔写真(オープンなライセンス)を集める

popoloでいう「head shot」は、Wikidataでは「画像(image)」プロパティに対応していますが、これはWikimedia Commonsの画像URLにリンクしています。
<例>小池百合子
https://commons.wikimedia.org/wiki/File:Koike_Yuriko_1-2.jpg

下記いずれかのライセンスで使えるものを
CC0 1.0
CC BY 4.0
CC BY-SA 4.0
ウィキメディア・コモンズにアップロード
https://commons.wikimedia.org/wiki/Special:UploadWizard
してくれる人がいると嬉しいです。どっかに立候補者一覧を作って画像アップ済みかどうかチェックすると良さそうです。
怪しいライセンスの画像は使わず、上記いずれかのオープンなライセンスが設定できるものだけを使ってください。見つからない場合は本人かその事務所に問合せて上記いずれかのライセンスで使って良い画像をもらう必要があります。依頼の趣旨を説明したり、ライセンスについて分かりやすく説明するテンプレも要りそう。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.