【事務作業に便利】形態素解析かけてから、macのターミナルでコマンド打って、重複した単語(キーワード)を抜きだして重複してる数字と共に表示する方法
<自分メモ>
例えば、こういう状況の時に役立ちます。
とある文章の中で、もっともよく使われている単語(キーワード)は何か、どれくらい重複しているかという数字と共に知りたい。
そんな時は、こちらの方法で重複した単語を抜き出して、数字と共に表示することができます。
・生の文章(テキスト)を、このサイトで形態素解析かける
http://www.oasob.com/tools/mecab/
・結果が表示されたら、ページのソースの中から該当する部分をひとつのファイルにコピペ
・そのファイルをデスクトップへ置く
・ターミナル開く
・コマンド打ってデスクトップへ cd Desktop/
・下記の「filename」のとこに対象のファイル名を書いて、ターミナルにコピペ。Enter押す。
cat filename |perl -e 'my %pat;while(<>){next if m/^\s/;my @split=split;$pat{$split[0]}++;}foreach my $x(sort{$pat{$a}<=>$pat{$b}} keys %pat){print "$pat{$x} $x\n";}'
・でた!!
・おわり
追伸:Perlに詳しい方、もっと短くする方法あったら教えて下さいっ
<9/29 16:30追記>
Twitterで教えていただきました!!
ありがとうございます!!
@sugyanさん「perl -E '/^\s/||$p{(split)[0]}++while<>;say"$p{$_} $_"for sort{$p{$a}<=>$p{$b}}keys%p' filename でどうでしょう」
http://twitter.com/sugyan/status/119306510688980992
@fujiwaraさん「sort | uniq -c | sort -n じゃないのか」
http://twitter.com/fujiwara/status/119306938466050048
※書き方は、cat filename | sort | uniq -c | sort -n もしくは sort filename | uniq -c | sort -n だそうです。
@kazuhoさん「sort < filename | uniq -c | sort -n | grep -v ' 1 ' とか hacky だけど短そう」
http://twitter.com/kazuho/status/119310832604680192
<9/30 1:56am追記>
さらにTwitterで教えていただきました!!
ありがとうございます!!
@niwさん Rubyはどうかということで教えていただきました!
「例えば、$ pbpaste|ruby -e 'STDIN.read.inject(Hash.new(0)){|h,a|h[a.split.first]+=1;h}.sort_by{|k,v|-v}.each{|a| puts a*"\t")}'」
http://twitter.com/niw/status/119327038950748160
「ファイル経由する必要なくて、クリップボードから直接読み取るよ。pbpasteってのがクリップボードから読み取るっていう意味。そこを cat /path/to/file に変えればファイルからもでもいける。」
http://twitter.com/niw/status/119339710383529984
@riywoさん「だったら結果をcat filename | awk '{print $1}' | sort | uniq -c | sort -n でいいような気がするなぁ。」
http://twitter.com/#!/riywo/status/119453004129763329
「ターミナルから形態素解析してみる」
ファイルに形態素解析の結果を保存する手間がなくなるそうです!すごい!!
http://makeitsmartjp.com/2011/09/mecab-terminal.html
<9/30 10:37am追記>
さらに教えていただきました!!
ありがとうございます!!
@riywoさん(gistにあげてくださいましたー!)
形態素解析した結果を数えるとか
https://gist.github.com/1251364