どんぐり日記β

はてなダイアリーがうまく更新できないから、こっちにしてみる

【事務作業に便利】形態素解析かけてから、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