Daily programming #0038

言語処理100本ノック 2015の#36をやっていく。

第4章: 形態素解析の前提

夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をMeCabを使って形態素解析し,その結果をneko.txt.mecabというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.

なお,問題37, 38, 39はmatplotlibもしくはGnuplotを用いるとよい.

このあたりの記述を参考にMeCab、およびmecab-ipadic-NEologdをインストールし、neko.txt.mecabを作成する。

neko.txt.mecabのサイズが大きいためglot.ioではそのまま実行できないため、第4章は実行結果を記載する方針とする。

36. 単語の出現頻度[Golang]

Question

文章中に出現する単語とその出現頻度を求め,出現頻度の高い順に並べよ.

Code

100knock #36

Output

$ ./main ../neko.txt.mecab
9107 の
7484 。
6772 、
6698 て
6384 は
6159 に
6068 を
5476 と
5259 が
3916 た
3775 で

出力結果は大量に出力されるため、例として最初から10個分を出力した。

Comment

単語をすべて1つのスライスに格納し、#19とほぼ同様の手順で重複要素をカウントして、出現頻度と文字列をスライスに格納。

あとはそれをsort.SliceStableでソートして出力した。