言語処理100本ノック 2015の挑戦記録です。環境はUbuntu 16.04 LTS + Python 3.5.2 :: Anaconda 4.1.1 (64-bit)です。過去のノックの一覧はこちらからどうぞ。
第10章: ベクトル空間法 (II)
第10章では,前章に引き続き単語ベクトルの学習に取り組む.
###93. アナロジータスクの正解率の計算
92で作ったデータを用い,各モデルのアナロジータスクの正解率を求めよ.
####出来上がったコード:
# coding: utf-8
fname_input = 'family_out.txt'
with open(fname_input, 'rt') as data_file:
# 1行ずつチェック
correct = 0
total = 0
for line in data_file:
cols = line.split(' ')
total += 1
if cols[3] == cols[4]:
correct += 1
# 正解率表示
print('{} ({}/{})'.format(correct / total, correct, total))
####実行結果:
#####問題85の単語ベクトルに対する結果
0.03359683794466403 (17/506)
#####問題90の単語ベクトルに対する結果
0.09090909090909091 (46/506)
###アナロジータスクの正解率
やはりword2vecの方が優秀ですね。2倍以上の正解率です。ただword2vecでも9%なので、かなり低い感じです。単語ベクトルにない単語を不正解扱いしているのは、ちょっと厳しすぎたのかも。あと、使っているコーパスは1/100サンプリングのものなので、1/10サンプリングにするともう少し精度が上がるのかもしれませんね。
94本目のノックは以上です。誤りなどありましたら、ご指摘いただけますと幸いです。
実行結果には、100本ノックで用いるコーパス・データで配布されているデータの一部が含まれます。この第10章で用いているコーパス・データのライセンスはクリエイティブ・コモンズ 表示-継承 3.0 非移植(日本語訳)です。また、単語アナロジーの評価データはApache License 2.0で配布されているword2vecの一部です。