!zishで辞書をつくろう
!!問題
今見てるアニメのハッシュタグがわからん!
!!ソリューション
- IMEでアニメの番組名を変換したら候補にハッシュタグを出せるようにする
!!材料
- zish
-- http://zish.jp/
-- 番組ID - 番組名 - ハッシュタグ
- しょぼいカレンダー
-- http://cal.syoboi.jp/
-- 番組ID - 読み - (ほかにもいろいろ)
zishの番組IDがしょぼいカレンダー互換であることを聞いたので材料は揃った
!!武器
- python2.7
-- 古いバージョンだと json -> simplejsonとかにすると動くかも
!!データ収集
zishからXMLを落としてきてます。これをパースしながら、しょぼいカレンダーをスクレイピング。とりあえず必要なデータをjsonにシリアライズしてとっておく。
- hashtag.xml zishから落としてきたXML
- yomi_hash.json 出力されるjsonファイル
>> code python
# -*- coding: utf-8 -*-
from xml.etree.ElementTree import ElementTree
import urllib2
import re;
import json
ryomi = re.compile("<tr><th>よみ</th><td>([^<>]*)");
def getYomi(tid):
print 'http://cal.syoboi.jp/tid/' + str(tid)
f = urllib2.urlopen('http://cal.syoboi.jp/tid/' + str(tid));
s = f.read();
m = ryomi.search(s);
if m:
return m.group(1);
return None;
# ファイルから取得
xml = ElementTree(file=open('hashtag.xml'))
root = xml.getroot();
elm = xml.findall('program');
out = {"data":[]};
for x in elm:
title = x.find("title");
hashtag = x.find("hashtag");
tid = x.find('tid');
print tid.text + "," + title.text + "," + hashtag.text;
yomi = getYomi(tid.text);
out["data"].append({"yomi":yomi, "hashtag": hashtag.text});
f = open("yomi_hash.json","w");
f.write(json.dumps(out));
<<
!!データ出力
IMEに食べさせるためのデータを作る。
- yomi_hash.json さっきのあれ
- 出力は画面に出るので リダイレクトして受け止める
>> code python
# -*- coding: utf-8 -*-
import json
import codecs,sys
sys.stdout = codecs.getwriter('sjis')(sys.stdout)
f = open("yomi_hash.json","r");
o = json.load(f);
data = o["data"];
print """!Microsoft IME Dictionary Tool 98
!Version:61
!Format:WORDLIST"""
for x in data:
if len(x['yomi'])==0:
# 読み引きに失敗
#print "!!!!!!!!" + x["hashtag"]
pass
else:
print (x['yomi'] + "\t" + x["hashtag"] + "\t" + u"名詞");
<<
!!mozcに食べさせる
僕のメインPCはLinuxでmozc使ってる。 MS-IME形式でデータをインポートして終了。
mozcじゃなくても出来るIMEは多いはず。
!!できたっ
ちゃんと変換候補にハッシュタグが出たね!
{{twitpic 9cp1vc}}
!あもうすぐGWか
4/23 月
4/24 火
4/25 水
4/26 木
4/27 金
4/28 土 !
4/29 日
4/30 月
5/1 火
5/2 水 !
5/3 木 !
5/4 金 !
5/5 土 !
5/6 日 !
5/7 月 !
5/8 火 !
5/9 水
!週末までにやらなきゃ
-画面をそれっぽく
-ログイン?
-バリデーション?
5643382
wiki
1371358546