ホーム > YahooWebAPI"日本語形態素解析"を使って日本語文をひらがなに変換、索引...   / カテゴリ ( yahoo , framemaker )
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')

実行

変換元データの準備

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

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

変換実行

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

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