2015/01/18(日)Python勉強メモ#5「homura と madoka で形態素の頻度を数えよ」
あらかじめ「pip」とかで「homura」と「madoka」を入れておきましょう。
まずはダウンローダーの「homura」で形態素解析済みの青空文庫のデータをダウンロード。
my-mbp% ipython
Python 3.4.2 (default, Jan 12 2015, 11:46:28)
Type "copyright", "credits" or "license" for more information.
IPython 2.3.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: from homura import download
In [2]: download('http://aozora-word.hahasoha.net/utf8/newnew.csv.gz')
100% 615.8 MiB 11.1 MiB/s 0:00:00 ETA
適当に解凍したら「madoka」(Pythonの辞書より省メモリかもしれないデータ構造を提供するライブラリ)で形態素をカウントです。(Madokaの詳細: http://s-yata.github.io/madoka/index.ja.html)
#!/usr/bin/env python
import madoka
sketch = madoka.Sketch()
with open('newnew.csv', 'r') as f:
for line in f:
morpheme = line.split(',')[3]
sketch[morpheme] += 1
print(morpheme)
print(sketch['人'])
print(sketch['面倒'])
print(sketch['蕩尽'])
出力された頻度(推定値)は以下のようになりました。
1418808
57427
1910
実際の頻度は以下の通り。
#!/usr/bin/env python
from collections import Counter
cnt_of = Counter()
with open('newnew.csv', 'r') as f:
for line in f:
morpheme = line.split(',')[3]
cnt_of[morpheme] += 1
print(morpheme)
print(cnt_of['人'])
print(cnt_of['面倒'])
print(cnt_of['蕩尽'])
217837
1738
23