人気ブログランキング | 話題のタグを見る
TF-IDFによる各政党のホームページの解析 その1
測定の概要
各政党のホームページより全てのリンクをたどり、そのHTMLからテキストとして抜き出して単語を抽出する。
この単語の出現頻度をtf-idfにより取得する。
この単語のスコアを元に書く文章の類似度の比較と考察を行なう。

処理の手順
前回の1党、1つのPDFとことなり、データ数が多いので、一端、SQLITEに格納してから解析を行なう。
以下がコードとなる。
http://needtec.sakura.ne.jp/election/analyze_hp.zip

このプログラムを実行するにはPython2.7とMecab(UTF-8)が必要である。

1.トップページよりリンクをたどり、特定のドメインにリンクしているHTMLを全てぬきだす。
 この際、PDFやExcelなどは無視をする。
 下記のコマンドを実行することにより、analyze_hp.sqliteのcategorysテーブルとpagesテーブルにデータを挿入する

 create_partys_db.py


2. DBに格納したページの情報からテキストを抜き出して、これをMeCabにより単語に分割して、その出現頻度をもとめ結果をDBに書き込む。
 下記のコマンドを実行することにより、analyze_hp.sqliteのpagesテーブルからページのデータを取得して、これをMeCabで分割して、その結果をtokensテーブルに格納する。その後、tokensのカテゴリと単語別に出現数を集計した結果をcounting_tokensテーブルに格納する。

 create_tokens.py


3. DBに格納してある単語の出現頻度からtf-idfを計算して、コサイン類似度にて政党間の距離をもとめる。
 下記のコマンドを実行することで、計算結果のreport_tf_idf_result.txtと政党間の距離をグラフであらわしたreport_tf_idf_result.pngが作られる。

 report_tf_idf_to_blog.py > report_tf_idf_result.txt





解析対象のページ

検索開始URL:
 このページからリンクをたどる。再帰も行なう。ただし、ここのドメインと「有効なドメイン」で指定したドメイン中のページのみ調査対象とする
検有効なドメイン:
 複数のドメインをもつ政党用に検査を開始したURLのドメイン以外で検査が必要なドメインを記述する。

  • 党名
  • 検索開始URL
  • 有効なドメイン
  • ページ数



最多ページ数について:
 以外にもネットでは人気のない民主党が2位に2倍以上の差をつけてトップである。
 民主党はhttp://www.dpj.or.jp/s/というURLに携帯サイトがあり、これは12342件ある。これがページ数を多くしている一因である。
 しかし、それをのぞいても、11670件は存在しており、これは依然としてトップである。
 つまり民主党はネットにたいする発信に相当量の力をそそいでいることがわかる。

英語のページ:
 民主党、自由民主党、公明党、日本共産党などの5000件以上のページを持つ政党は英語版のページが用意してあった。
 以外だったのがTPP推進でグローバリゼーションを推進する傾向のある、「みんなの党」「維新の会」には英語用のページが存在しない、もしくは簡単に見つけられる場所にはないようである。
 TPPはP4の内容そのままだと、公共入札などで外国も参加できるように英語で行なう必要が出てきたりすると思う。必然的に日本の企業は外国と競争しなければならなくなるが、国民にはそういう外国勢との競争を推進しておきながら、自分の政党の広報は例外にしているのに大きな疑問を感じる。

文字コードの関係:
 基本的にUTF-8で作られているようである。
 しかし、共産党の古いページの一部にShift-JISなどが混ざっているようだ。
 http://www.jcp.or.jp/akahata/keyword/084_inc.html

2038年問題によるリンクの循環:
 自民党のホームページを純粋にURLでたどると、無限にリンクをたどり続ける問題が出てくる。
 以下のページを参照してみる。
 https://www.jimin.jp/activity/conference/weekly.html?wk=1278
 本来であれば、2038年01月18日~2038年01月25日になるはずだ。
 これが、「~1970年01月01日」になっているのが確認できると思う。
 このページから次のページを選択しても不正な日付が出てくるだけである。
 これは日付を1970年1月1日からのミリ秒単位で32bitの領域で管理しているために、2013年1月19日でオーバーフローを起こして負の値になってしまうために発生する。
 そのために、"wk="のクエリーに与える値は±100件に限るようにした。

みどりの風のページ数の少なさの原因:
 みどりの風のページ数の異様な少なさについては、HTTPで取得するさいに"HTTP Error Service Temporarily Unavailable"が発生している。これはサーバーが処理しきれない負荷が掛かったときに一時的にアクセスできない旨を通知するものであり、リトライをすれば取得できることもある。
 しかし、リトライをすると、さらに負荷をかけてしまい、選挙妨害にもなりかねないので、取得はあきらめた。
 みどりの風のサイトをブラウザで訪ねても同様のエラーが発生することが確認できた。

 なお、この政党以外では同様のエラーが発生していないので、アクセス数とサーバーの性能のバランスが取れていないと考えられる。

タイムアウトエラー:
民主党のページを取得しているとたまにタイムアウトが発生する。
私が確認したのは下記のページであるが、今現在、リクエストをすると成功する。

・http://www.dpj.or.jp/member/104
・http://www.dpj.or.jp/s/tag/791
・http://www.dpj.or.jp/s/news/page/457
・http://www.dpj.or.jp/s/member/4124
・http://www.dpj.or.jp/s/member/4005
・http://www.dpj.or.jp/article/101042/%E3%80%90%E3%83%93%E3%83%87%E3%82%AA%E9%85%8D%E4%BF%A1%E3%80%91%EF%BC%92%EF%BC%91%E6%97%A5%E3%80%81%E8%BC%BF%E7%9F%B3%E5%B9%B9%E4%BA%8B%E9%95%B7%E5%AE%9A%E4%BE%8B%E4%BC%9A%E8%A6%8B%E3%80%80
・http://www.dpj.or.jp/tag/海江田万里

タイムアウトのタイミングは不定で、原因を把握することはできなかった。

デッドリンク:
いくつかのURLはアクセスをおこなってもNot Foundとなる。このデッドリンクのページ数とそれが全体に占める割合を求めた。
  • 党名
  • ページ数
  • デッドリンク数
  • デッドリンクの割合
  • 生活の党
  • 415
  • 20
  • 4.82%
  • 社民党
  • 1,003
  • 16
  • 1.60%
  • 民主党
  • 24,012
  • 313
  • 1.30%
  • 新党大地
  • 226
  • 2
  • 0.88%
  • 日本共産党
  • 5,272
  • 20
  • 0.38%
  • 日本維新の会
  • 545
  • 2
  • 0.37%
  • 自由民主党
  • 6,569
  • 4
  • 0.06%
  • 公明党
  • 5,807
  • 2
  • 0.03%
  • みんなの党
  • 3,897
  • 0
  • 0.00%
  • 緑の党
  • 679
  • 0
  • 0.00%
  • みどりの風
  • 36
  • 0
  • 0.00%
  • 幸福実現党
  • 20
  • 0
  • 0.00%


デッドリンクの率で圧倒的な生活の党のデッドリンクの多くは下記のようなものだ。
http://www.seikatsu1.jp/member/member0001.html
おそらくこのページは元議員の紹介ページだ。
離党するなり、選挙に落ちるなりで、メンバーを辞めた人のページを消したがリンク元を修正するのを忘れているのだと思われる。

同様にデッドリンク数で圧倒する民主党も下記のようなメンバーの紹介ページがデッドリンクしている場合が多い。
http://www.dpj.or.jp/member/?detail_14=1

このことより、ホームページの更新がおいつかないくらいの離党者、落選者を出したという事実が見えてくる。
おそらく、7/21の参院選挙の結果、この結果より多くのデッドリンクを生み出すことが予想される。


各政党間のコサイン類似度の距離の比較
TF-IDFによる各政党のホームページの解析 その1_b0232065_821232.png


公明党 -> 社民党 : 0.731928
公明党 -> 新党大地 : 0.857919
公明党 -> 日本共産党 : 0.738020
公明党 -> みんなの党 : 0.681428
公明党 -> 民主党 : 0.638287
公明党 -> 自由民主党 : 0.737310
公明党 -> みどりの風 : 0.849121
公明党 -> 生活の党 : 0.655711
公明党 -> 緑の党 : 0.815483
公明党 -> 日本維新の会 : 0.783212
公明党 -> 幸福実現党 : 0.873400
....... max:幸福実現党(0.873400) min:民主党(0.638287)
社民党 -> 公明党 : 0.731928
社民党 -> 新党大地 : 0.701226
社民党 -> 日本共産党 : 0.583070
社民党 -> みんなの党 : 0.609722
社民党 -> 民主党 : 0.395126
社民党 -> 自由民主党 : 0.585487
社民党 -> みどりの風 : 0.686491
社民党 -> 生活の党 : 0.414220
社民党 -> 緑の党 : 0.686187
社民党 -> 日本維新の会 : 0.802258
社民党 -> 幸福実現党 : 0.667003
....... max:日本維新の会(0.802258) min:民主党(0.395126)
新党大地 -> 公明党 : 0.857919
新党大地 -> 社民党 : 0.701226
新党大地 -> 日本共産党 : 0.693700
新党大地 -> みんなの党 : 0.733263
新党大地 -> 民主党 : 0.688256
新党大地 -> 自由民主党 : 0.780878
新党大地 -> みどりの風 : 0.817711
新党大地 -> 生活の党 : 0.681593
新党大地 -> 緑の党 : 0.818427
新党大地 -> 日本維新の会 : 0.842807
新党大地 -> 幸福実現党 : 0.874037
....... max:幸福実現党(0.874037) min:生活の党(0.681593)
日本共産党 -> 公明党 : 0.738020
日本共産党 -> 社民党 : 0.583070
日本共産党 -> 新党大地 : 0.693700
日本共産党 -> みんなの党 : 0.589351
日本共産党 -> 民主党 : 0.541578
日本共産党 -> 自由民主党 : 0.657948
日本共産党 -> みどりの風 : 0.699870
日本共産党 -> 生活の党 : 0.586468
日本共産党 -> 緑の党 : 0.668951
日本共産党 -> 日本維新の会 : 0.703166
日本共産党 -> 幸福実現党 : 0.797108
....... max:幸福実現党(0.797108) min:民主党(0.541578)
みんなの党 -> 公明党 : 0.681428
みんなの党 -> 社民党 : 0.609722
みんなの党 -> 新党大地 : 0.733263
みんなの党 -> 日本共産党 : 0.589351
みんなの党 -> 日本維新の会 : 0.730536
みんなの党 -> 民主党 : 0.445813
みんなの党 -> 自由民主党 : 0.605552
みんなの党 -> みどりの風 : 0.757906
みんなの党 -> 生活の党 : 0.245014
みんなの党 -> 緑の党 : 0.744886
みんなの党 -> 幸福実現党 : 0.821752
....... max:幸福実現党(0.821752) min:生活の党(0.245014)
民主党 -> 公明党 : 0.638287
民主党 -> 社民党 : 0.395126
民主党 -> 日本共産党 : 0.541578
民主党 -> みんなの党 : 0.445813
民主党 -> 新党大地 : 0.688256
民主党 -> 自由民主党 : 0.485674
民主党 -> みどりの風 : 0.673311
民主党 -> 生活の党 : 0.339329
民主党 -> 緑の党 : 0.671926
民主党 -> 日本維新の会 : 0.681216
民主党 -> 幸福実現党 : 0.704851
....... max:幸福実現党(0.704851) min:生活の党(0.339329)
自由民主党 -> 公明党 : 0.737310
自由民主党 -> 社民党 : 0.585487
自由民主党 -> 新党大地 : 0.780878
自由民主党 -> 日本共産党 : 0.657948
自由民主党 -> みんなの党 : 0.605552
自由民主党 -> 民主党 : 0.485674
自由民主党 -> みどりの風 : 0.709040
自由民主党 -> 生活の党 : 0.500105
自由民主党 -> 緑の党 : 0.714813
自由民主党 -> 日本維新の会 : 0.631767
自由民主党 -> 幸福実現党 : 0.720751
....... max:新党大地(0.780878) min:民主党(0.485674)
みどりの風 -> 公明党 : 0.849121
みどりの風 -> 社民党 : 0.686491
みどりの風 -> 新党大地 : 0.817711
みどりの風 -> 日本共産党 : 0.699870
みどりの風 -> みんなの党 : 0.757906
みどりの風 -> 民主党 : 0.673311
みどりの風 -> 自由民主党 : 0.709040
みどりの風 -> 生活の党 : 0.707437
みどりの風 -> 緑の党 : 0.639000
みどりの風 -> 日本維新の会 : 0.731312
みどりの風 -> 幸福実現党 : 0.806779
....... max:公明党(0.849121) min:緑の党(0.639000)
生活の党 -> 公明党 : 0.655711
生活の党 -> 社民党 : 0.414220
生活の党 -> 日本共産党 : 0.586468
生活の党 -> みんなの党 : 0.245014
生活の党 -> 民主党 : 0.339329
生活の党 -> 自由民主党 : 0.500105
生活の党 -> みどりの風 : 0.707437
生活の党 -> 新党大地 : 0.681593
生活の党 -> 緑の党 : 0.718295
生活の党 -> 日本維新の会 : 0.760308
生活の党 -> 幸福実現党 : 0.726544
....... max:日本維新の会(0.760308) min:みんなの党(0.245014)
緑の党 -> 公明党 : 0.815483
緑の党 -> 社民党 : 0.686187
緑の党 -> 新党大地 : 0.818427
緑の党 -> みんなの党 : 0.744886
緑の党 -> 民主党 : 0.671926
緑の党 -> 自由民主党 : 0.714813
緑の党 -> みどりの風 : 0.639000
緑の党 -> 生活の党 : 0.718295
緑の党 -> 日本共産党 : 0.668951
緑の党 -> 日本維新の会 : 0.742498
緑の党 -> 幸福実現党 : 0.798622
....... max:新党大地(0.818427) min:みどりの風(0.639000)
日本維新の会 -> 公明党 : 0.783212
日本維新の会 -> 社民党 : 0.802258
日本維新の会 -> 新党大地 : 0.842807
日本維新の会 -> 日本共産党 : 0.703166
日本維新の会 -> みんなの党 : 0.730536
日本維新の会 -> 民主党 : 0.681216
日本維新の会 -> 自由民主党 : 0.631767
日本維新の会 -> みどりの風 : 0.731312
日本維新の会 -> 生活の党 : 0.760308
日本維新の会 -> 緑の党 : 0.742498
日本維新の会 -> 幸福実現党 : 0.846989
....... max:幸福実現党(0.846989) min:自由民主党(0.631767)
幸福実現党 -> 公明党 : 0.873400
幸福実現党 -> 社民党 : 0.667003
幸福実現党 -> 新党大地 : 0.874037
幸福実現党 -> 日本共産党 : 0.797108
幸福実現党 -> みんなの党 : 0.821752
幸福実現党 -> 民主党 : 0.704851
幸福実現党 -> 自由民主党 : 0.720751
幸福実現党 -> みどりの風 : 0.806779
幸福実現党 -> 生活の党 : 0.726544
幸福実現党 -> 緑の党 : 0.798622
幸福実現党 -> 日本維新の会 : 0.846989
....... max:新党大地(0.874037) min:社民党(0.667003)


TF-IDFによる各政党のホームページの解析 その2 へつづく
by mima_ita | 2013-07-22 05:50 | 実験
<< TF-IDFによる各政党のホー... TF-IDFによる2013年参... >>



実験ですお

by mima_ita
検索
カテゴリ
最新の記事
.NET4.5におけるasy..
at 2014-07-02 00:46
.NETでTwitterを検..
at 2014-06-29 00:49
Redmineのプラグインで..
at 2014-06-28 03:29
IO.popenのwrite..
at 2014-06-28 03:25
RedmineのWikiでU..
at 2014-06-28 03:16
以前の記事
最新のトラックバック
その他のジャンル
ブログパーツ