Index > YahooWebAPI"日本語形態素解析"を使って日本語文をひらがなに変換、索引用語のソートに利用
Fri, June 5, 2009

YahooWebAPI"日本語形態素解析"を使って日本語文をひらがなに変換、索引用語のソートに利用

Adobe FrameMakerでの索引作成をしているのだが、 索引用語のソートをしなければならない。 しかし、索引用語は漢字混じりなので、よみ情報を付加しないと、ソートは できないどうすればいいのか(よみ情報を追加するのはとても面倒なので...なんとか楽できないか) という話。

このエントリはPythonを使っていますが、 Javaを使う場合は こちらのエントリ(Yahoo Web API 日本語形態素解析サービスをJavaから使う)をご覧ください。

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')

実行

変換元データの準備

wordlist.txt を一行一センテンス形式で用意します。 (yomi.py では文字コードは shift_jis を想定)

わが輩は猫である
名前はまだない
寿限無寿限無五劫の擦り切れ
海砂利水魚

変換実行

$ python yomi.py
わが輩は猫である->わがはいはねこである
名前はまだない->なまえはまだない
寿限無寿限無五劫の擦り切れ->じゅげむじゅげむ5こうのすりきれ
海砂利水魚->うみじゃりすいぎょ

※最後の「海砂利水魚(かいじゃりすいぎょ)」は意図通り変換されなかったようです。

 Twitter
follow me on Twitter
 Categories