Friday, June 5, 2009
YahooWebAPI"日本語形態素解析"を使って日本語文をひらがなに変換、索引用語のソートに利用
Adobe FrameMakerでの索引作成をしているのだが、 索引用語のソートをしなければならない。 しかし、索引用語は漢字混じりなので、よみ情報を付加しないと、ソートは できないどうすればいいのか(よみ情報を追加するのはとても面倒なので...なんとか楽できないか) という話。
このエントリはPythonを使っていますが...
Javaを使う場合は こちらのエントリ(Yahoo Web API 日本語形態素解析サービスをJavaから使う)をご覧ください。
groovyの場合は Yahoo Web API 日本語形態素解析 を groovy で使う
Yahoo WebAPI 日本語形態素解析があった
日本語形態素分析WebAPI 日本語文を形態素に分割し、品詞、読みがなの付与、統計情報を取得できる機能を提供します。
形態素分析は、GoogleAppEngineの開発で検索機能を実装するときに 利用したことがあったのですが、 このAPIは、形態素分割するだけでなく、よみ情報も返してくれるので、 これを使えば、 日本語文をひらがなに変換できるのではないかと。
実際にやってみると簡単にできました。
コード yomi.py
from urllib import urlopen, quote_plus, urlencode
from BeautifulSoup import BeautifulSoup
import urllib
import codecs
#pageurl='http://api.jlp.yahoo.co.jp/MAService/V1/parse'
pageurl='http://jlp.yahooapis.jp/MAService/V1/parse'
appid='set your appid'
def reading(text,appid=appid,results='ma',filter=''):
text=text.encode('utf-8')
postdata= {
'appid': appid,
'sentence' : text,
'results' : results,
'response' : 'surface,reading',
'filter' : filter}
params=urllib.urlencode(postdata)
f = urllib.urlopen(pageurl, params)
#print f.read()
soup = BeautifulSoup(f.read())
readings=soup('reading')
#print readings
r=''
for yomi in readings :
r=r+yomi.string
#print yomi.string.encode('utf-8')
return r
f=codecs.open('wordlist.txt','r','shift_jis')
for line in f.readlines() :
word=line.rstrip()
yomi=reading(word)
print (word+'->'+yomi).encode('utf-8')
- appid は、アプリケーションIDでYahooデベロッパーズネットーワークのページで取得して設定
- BeautifulSoup.pyが別途必要
- Python2.5.2 でテスト
実行
変換元データの準備
wordlist.txt を一行一センテンス形式で用意します。 (yomi.py では文字コードは shift_jis を想定)
わが輩は猫である
名前はまだない
寿限無寿限無五劫の擦り切れ
海砂利水魚
変換実行
$ python yomi.py
わが輩は猫である->わがはいはねこである
名前はまだない->なまえはまだない
寿限無寿限無五劫の擦り切れ->じゅげむじゅげむ5こうのすりきれ
海砂利水魚->うみじゃりすいぎょ
※最後の「海砂利水魚(かいじゃりすいぎょ)」は意図通り変換されなかったようです。
