« コメントデータベースから特定著者の発言抽出 | トップページ | そのような率 »

特定著者コメントのNグラム頻度集計

今回は、前回出した瀬戸氏コメント集をNグラム集計してみました。

まずは数が少ないのですが2005年分(コメント数:31)から。
8グラムのTOP2は以下の通りです。コメントに対して応答を返しているとすると納得行きます。
"8","ありがとう御座い",10
"8","りがとう御座いま",10

2グラムのTOP5は以下の通りです。文尾の形は共通になりやすいという事だと思います
"2","す。",106
"2","ます",77
"2","てい",68
"2","いま",64
"2","。 ",59

漢字2文字の2グラムのTOP5は以下の通りです。極右の政治ブログらしい熟語が並んでいます。
"2","主義",26
"2","日本",23
"2","極右",22
"2","社会",19
"2","国家",16

次は最も年間コメント数が多い2006年分(コメント数:1207)です。
8グラムの上位は以下の通りです。とおるさんと怒る小市民さんへの返答が多かった事が伺えます。
"8","ありがとう御座い",254
"8","りがとう御座いま",254
"8","がとう御座います",217
"8","とう御座います。",211
"8"," とおるさんへ ",124
"8","ではないでしょう",117
"8"," 怒る小市民さん",109
"8","る小市民さんへ ",107
"8","怒る小市民さんへ",107

このほか、特定の人へのコメントと思われるものとしては以下がありました。これはMultiSyncさんへのものでしょう。ハンドルネームが短い人の名前は他の語に紛れてしまうので、8グラムだけで取り上げるのは不公平かもしれません。
"8","iSync さん",42

6グラムの上位は以下の通りです。やはり、文尾の形は共通になりやすいという事でしょうか。
"6","と思います。",467
"6","とう御座いま",258
"6","ないでしょう",257

4グラムの上位は以下の通りです。「さんへ 」という相手への呼びかけを除けば文尾の形ばかりです。
"4","さんへ ",1906
"4","います。",1331
"4","でしょう",950
"4","しょう。",755
"4","ました。",720
"4","ます。 ",638
"4","ています",581
"4","ません。",568
"4","思います",566

漢字2文字の2グラムの上位は以下の通りです。中国・朝鮮・社会・共産といった熟語が上位に登場しており、瀬戸氏の主張と符合する感じです。
"2","日本",1018
"2","問題",372
"2","中国",301
"2","御座",296
"2","主義",276
"2","朝鮮",258
"2","国家",256
"2","社会",237
"2","今後",218
"2","共産",205
"2","韓国",204
"2","新聞",187
"2","本人",187
"2","極右",186
"2","米国",176
"2","市民",171
"2","左翼",168
"2","政治",161

三番目は2007年分(コメント数:375)です。
8グラム上位は以下の通りです。
"8","ありがとう御座い",39
"8","りがとう御座いま",39
"8","ありがとうござい",38

4グラムの上位は以下の通りです。やはり「さんへ 」以外は文尾の形です。
"4","います。",289
"4","さんへ ",262
"4","ました。",228
"4","ます。 ",172
"4","でしょう",166

漢字2文字の2グラムの上位は以下の通りです。「新風」が2位に「支持」が7位に来ており、選挙があった事を反映しているようです。
"2","日本",113
"2","新風",69
"2","問題",65
"2","御座",46
"2","投稿",46
"2","各位",45
"2","支持",42
"2","朝鮮",42
"2","極右",42
"2","主義",40
"2","今後",40
"2","批判",37
"2","政治",37
"2","本人",36
"2","活動",36
"2","出来",34
"2","国家",34
"2","意見",34
"2","政党",32
"2","現在",32

最後に2008年分(コメント数:391)です。
8グラムの上位は以下の通りです。なんとshinok30さんが8位に登場しています。ハンドルネームの短い人が埋もれている可能性はあるのですが、それでも瀬戸氏がshinok30さんに返答を返す頻度は高かったと言えるでしょう。
"8","ありがとう御座い",40
"8","りがとう御座いま",40
"8","ではありません。",32
"8","がとう御座います",26
"8","とう御座います。",26
"8","ありがとうござい",25
"8","りがとうございま",25
"8","shinok30",23

漢字2文字の2グラムの上位は以下の通りです。いきなり「創価」がトップに立った一方、新風・朝鮮・極右といった熟語は軒並み順位を下げています。
"2","創価",79
"2","学会",73
"2","価学",72
"2","日本",70
"2","問題",63
"2","投稿",55
"2","我々",46
"2","各位",45
"2","削除",44
"2","御座",43
"2","関係",43
"2","今後",42
"2","紹介",40
"2","記事",40
"2","出来",37
"2","今回",36
"2","裁判",35
"2","訂正",33
"2","新風",32

以上、ざっと頻度集計の上位を見てみました。直感的に分かりやすいのは固有名詞か漢字熟語ですね。ちなみに、予想はしていたのですが、創価のキーワードが圧倒的に多くなるのは2008年です。
com2gram1.1-2008-sort.txt(1847): "2","創価",79
com2gram1.1-2007-sort.txt(2044): "2","創価",25
com2gram1.1-2006-sort.txt(10307): "2","創価",35

他にも色々な分析ができると思いますし、他者との比較も大事なのですが今日はここまで。楽しかった正月休みも終わるので、記事投稿頻度はぐっと下がると思います。

最後に使用したプログラムをまとめておきます。

以下のようなバッチファイルで一括処理しました。

rem 2008
del com2gram1.1-result.txt com2gram1.1-ana.txt com2gram1.1-select.txt
com2gram1.1.pl cdb2008.txt -skip1
shunanalyze -s analyze.cfg -a anacond.txt < com2gram1.1-result.txt > com2gram1.1-ana.txt
shunselect -s select.cfg -q selectcond.txt < com2gram1.1-ana.txt > com2gram1.1-select.txt
shunsort -a sortcond.txt < com2gram1.1-select.txt > com2gram1.1-2008-sort.txt

rem 2007
del com2gram1.1-result.txt com2gram1.1-ana.txt com2gram1.1-select.txt
com2gram1.1.pl cdb2007.txt -skip1
shunanalyze -s analyze.cfg -a anacond.txt < com2gram1.1-result.txt > com2gram1.1-ana.txt
shunselect -s select.cfg -q selectcond.txt < com2gram1.1-ana.txt > com2gram1.1-select.txt
shunsort -a sortcond.txt < com2gram1.1-select.txt > com2gram1.1-2007-sort.txt

rem 2006
del com2gram1.1-result.txt com2gram1.1-ana.txt com2gram1.1-select.txt
com2gram1.1.pl cdb2006.txt -skip1
shunanalyze -s analyze.cfg -a anacond.txt < com2gram1.1-result.txt > com2gram1.1-ana.txt
shunselect -s select.cfg -q selectcond.txt < com2gram1.1-ana.txt > com2gram1.1-select.txt
shunsort -a sortcond.txt < com2gram1.1-select.txt > com2gram1.1-2006-sort.txt

rem 2005
del com2gram1.1-result.txt com2gram1.1-ana.txt com2gram1.1-select.txt
com2gram1.1.pl cdb2005.txt -skip1
shunanalyze -s analyze.cfg -a anacond.txt < com2gram1.1-result.txt > com2gram1.1-ana.txt
shunselect -s select.cfg -q selectcond.txt < com2gram1.1-ana.txt > com2gram1.1-select.txt
shunsort -a sortcond.txt < com2gram1.1-select.txt > com2gram1.1-2005-sort.txt

com2gram.plには、若干手を加えてcom2gram1.1.plとしました。主な変更点は-skip1オプションの導入で、これを指定すると、(1)最初の行を読み飛ばす、(2)行の最初と最後の引用符を読み飛ばす、という処理をします。

# com2gram1.1.pl [-skip1] file...
# fileのテキストを1~8グラム分割して以下のファイルに出力する
# $resultfilename ("D:\com2gram\com2gram1.1-result.txt")
# 入出力するファイルはUTF8の想定
#
# 引数にテキストファイルを複数指定可能
# -skip1 はオプションとして以下の意味を持つ
# (shunselectの出力を食うためのオプション)
# ・ 最初の1行をスキップ(カラム名のある行と見て)
# ・ 行の最初と最後にあるダブルクオートを削除

use strict;
use utf8;
use Encode;

my @filelist;
my $skip1 = 0; # skip1オプションフラグ
# 結果出力ファイルをフルパスで指定(UTF8の想定)
my $resultfilename = "D:\\com2gram\\com2gram1.1-result.txt";

# 引数を@filelistに読み込む。skip1オプションのみ特殊処理
foreach my $arg (@ARGV) {
  if( $arg eq "-skip1" ) {  $skip1 = 1; }
  else { push @filelist, $arg ; }
}

open(OUT,">:utf8",$resultfilename);
print OUT "num\tstring\n";

foreach my $file (@filelist) {
  open(IN, "<:utf8","$file") || die("cannot open $file\n");
  my @comlist = <IN>;
  close(IN);
  if (@comlist == 0) { next; }  # ファイルが空ならば次へ
  chomp(@comlist);
  if( $skip1 ) {        # -skip1 オプション指定の場合
    shift( @comlist ); # 最初の行を削除
    for(my $i =0; $i <= $#comlist; $i++  ) { # 各行の先頭と最後のダブルクオートを削除
      $comlist[$i] =~ s/^"//;
      $comlist[$i] =~ s/"$//;
    }
  }

  foreach my $com ( @comlist ) {
    # $j はグラム数を表す
    for( my $j = 1; $j <= 8; $j++ ) {
      # 文字列の先頭から1文字ずつずらして区切って行く
      for( my $i = 0; $i < ( length($com) - ($j-1) ); $i++ ) {
        print OUT $j, "\t", substr($com,$i,$j), "\n";
      }
    }
  }
  close OUT;
}

|

« コメントデータベースから特定著者の発言抽出 | トップページ | そのような率 »

文字分析」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1109195/26807100

この記事へのトラックバック一覧です: 特定著者コメントのNグラム頻度集計:

« コメントデータベースから特定著者の発言抽出 | トップページ | そのような率 »