こちらでダウンロードできる単語感情極性対応表。
標準だとcsvでもなくjsonでもないのでちょっと扱いずらい。
ので、jsonに変換してみる。
元データ
優れる:すぐれる:動詞:1
http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic
良い:よい:形容詞:0.999995
喜ぶ:よろこぶ:動詞:0.999979
褒める:ほめる:動詞:0.999979
めでたい:めでたい:形容詞:0.999645
賢い:かしこい:形容詞:0.999486
ワード:読み:品詞:スコア
スコアが大きければポジティブ、少なければネガティブなワード。
この辺は上記のサイトに書いてあるので省略。
JSONフォーマットへ変換
キー
jsonにおいて一番重要であるキー。
これを何にするかだが、とりあえず「 ワード 」と「読み」にすることにした。
つまり、
{
"優れる": {
"word": "優れる",
"org": "すぐれる",
"noun": "動詞",
"score": 1.0
},
"すぐれる": {
"word": "優れる",
"org": "すぐれる",
"noun": "動詞",
"score": 1.0
}...
みたいなフォーマットにする。
多分これが一番使いやすいと思う・・・。
コード
# coding:utf-8
import json
dic = {}
path = 'pn_ja.dic'
output = 'pn_ja.json'
with open(path) as f:
for line in f:
key = line.split(':')[0]
org = line.split(':')[1]
noun = line.split(':')[2]
score = float(line.split(':')[3].replace('\n',''))
#score = line.split(':')[3].replace('\n','')
if key == org:
dic[key] = {'word': key, 'org': org, 'noun': noun, 'score': score}
else:
dic[key] = {'word': key, 'org': org, 'noun': noun, 'score': score}
dic[org] = {'word': key, 'org': org, 'noun': noun, 'score': score}
fw = open(output,'w')
json.dump(dic,fw,indent = 2, ensure_ascii=False)
多分説明するまでもないと思う。
簡単に動作説明すると、1行ずつ読み込んで辞書型配列に格納。
最後にjsonモジュールのdumpでファイルに書き出す、という感じ。
正直関数化することもないと思ったのでべた書き。
ワードと読みが全く同じ場合は重複してしまうので1つしか書かないように除外。
ちなみに、これだと同音異義語が後に出たもので上書きしてしまう。
まあそこはしょうがないと妥協。
コメント