Daily programming #0041
言語処理100本ノック 2015の#39をやっていく。
第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章は実行結果を記載する方針とする。
39. Zipfの法則[Golang]
Question
単語の出現頻度順位を横軸,その出現頻度を縦軸として,両対数グラフをプロットせよ.
Code
Output
Comment
Zipfの法則とは?
Daily programming #0040
言語処理100本ノック 2015の#38をやっていく。
第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章は実行結果を記載する方針とする。
38. ヒストグラム[Golang]
Question
単語の出現頻度のヒストグラム(横軸に出現頻度,縦軸に出現頻度をとる単語の種類数を棒グラフで表したもの)を描け.
Code
Output
階級幅20で出力しているが単語の出現頻度の大部分が1〜50回あたりなので分かりづらいグラフになっている。
思い切って出現頻度100回以下の単語を除外してみたが少しはヒストグラムらしいグラフになった。
Comment
問題の意図が読み取れなくて難儀した。
日本語は難しい。
形態素解析が細かすぎるのかこれをヒストグラムにする意味はあるのだろうかと思いながらコード書いてました。
Gonum Plot、ヒストグラムにはplotutil.Color
効かないんですかね?
Daily programming #0039
言語処理100本ノック 2015の#37をやっていく。
第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章は実行結果を記載する方針とする。
37. 頻度上位10語[Golang]
Question
出現頻度が高い10語とその出現頻度をグラフ(例えば棒グラフなど)で表示せよ.
Code
Output
Gonum Plotは日本語非対応なので棒グラフのラベルは出力されない。
Comment
しばらくできていなかったが今日から再開する。
Gonum Plotというグラフを描画するパッケージを使用した。
使用方法は公式のドキュメント及び先人のコードを参考にした。
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
Output
$ ./main ../neko.txt.mecab 9107 の 7484 。 6772 、 6698 て 6384 は 6159 に 6068 を 5476 と 5259 が 3916 た 3775 で
出力結果は大量に出力されるため、例として最初から10個分を出力した。
Comment
単語をすべて1つのスライスに格納し、#19とほぼ同様の手順で重複要素をカウントして、出現頻度と文字列をスライスに格納。
あとはそれをsort.SliceStable
でソートして出力した。
Daily programming #0037
言語処理100本ノック 2015の#35をやっていく。
第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章は実行結果を記載する方針とする。
35. 名詞の連接[Golang]
Question
名詞の連接(連続して出現する名詞)を最長一致で抽出せよ.
Code
Output
$ ./main ../neko.txt.mecab [した所 人間中 一番獰悪 時妙 一毛 その後猫 一度 邸内 書生以外 四五遍]
出力結果は大量に出力されるため、例として最初から10個分を出力した。
Comment
名詞が連続している間スライスに格納し、2つ以上連続していれば結合して保存用のスライスに格納していった。
今思えば結合せずにスライスごと格納したほうが後々使いやすい気がした。
Daily programming #0036
言語処理100本ノック 2015の#34をやっていく。
第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章は実行結果を記載する方針とする。
34. 「AのB」[Golang]
Question
2つの名詞が「の」で連結されている名詞句を抽出せよ.
Code
Output
$ ./main ../neko.txt.mecab [彼の掌 掌の上 書生の顔 はずの顔 顔の真中 穴の中 書生の掌 掌の裏 何の事 肝心の母親]
出力結果は大量に出力されるため、例として最初から10個分を出力した。
Comment
「の」を起点にして前後が名詞のものを抽出した。
1文ごとになどの指定はないのですべて1つのスライスに格納した。
Daily programming #0035
言語処理100本ノック 2015の#33をやっていく。
第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章は実行結果を記載する方針とする。
33. サ変名詞[Golang]
Question
サ変接続の名詞をすべて抽出せよ.
Code
Output
$ ./main ../neko.txt.mecab [見当 記憶 そうだ 話 装飾 突起 運転 記憶 ようやく 分別]
出力結果は大量に出力されるため、例として最初から10個分を出力した。
Comment
これも#31とあまりかわらない。
1文ごとになどの指定はないので1つのスライスに格納した。