みなさん、Web APIサービス使ってますか?!
楽天やらAmazonやらいろんなところがAPIを公開していますよね!
今回は数あるWeb APIサービスの中からYahoo! JAPAN テキスト解析APIの「ルビ振り」をpythonから使ってみます。
(インターネット環境は必須です)
環境
- macOS Sierra 10.12.5
- python 3.4
前準備1 Yahoo! JAPAN IDの取得
Yahoo! JAPANのWeb APIを使用するためには当然のごとく「Yahoo! JAPAN ID」が必要です。
すでにお持ちの方は次の「前準備2 アプリケーションIDの取得」に進んでください。
まだお持ちでない方はこちらからYahoo! JAPAN IDを取得してください。
前準備2 アプリケーションIDの取得
Yahoo! JAPAN Web APIを利用するために、「アプリケーションID」を取得します。
こちらにアクセスし、新たにアプリケーションIDを取得してください。
取得方法は下記のヘルプページに詳しく掲載されています。
ヘルプ:アプリケーションIDを登録する
モジュールのインストール
今回使用するのは「urllibモジュール」だけです。
標準モジュールなので、意識して削除していない限り、インストール作業は必要ありません。
スクリプト
# -*- coding: UTF-8 -*-
from urllib import request, parse
def yahoo_api(text):
""" リクエスト """
# Yahoo! JAPAN テキスト解析WebAPI ルビ振りのURL
url = 'https://jlp.yahooapis.jp/FuriganaService/V1/furigana'
# アプリケーションID
appid = 'ここを取得したアプリケーションIDに置き換えてください'
# 変換する文字列の文字コード変換
sentence = parse.quote(text.encode('utf-8'))
# URLを構成
target = "%s?appid=%s&sentence=%s" % (url, appid, sentence)
# ルビ振りサービスへアクセス&返り値を取得
response = request.urlopen(target).read()
return response
if __name__ == "__main__":
# 対象の文字列
target = '人生楽ありゃ苦もあるさ'
# リクエストの実行
api = yahoo_api(target)
print(api.decode('utf-8'))
実行結果
XMLデータが返ってきました。
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet xmlns="urn:yahoo:jp:jlp:FuriganaService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:jp:jlp:FuriganaService https://jlp.yahooapis.jp/FuriganaService/V1/furigana.xsd">
<Result>
<WordList>
<Word>
<Surface>人生</Surface>
<Furigana>じんせい</Furigana>
<Roman>zinsei</Roman>
</Word>
<Word>
<Surface>楽</Surface>
<Furigana>らく</Furigana>
<Roman>raku</Roman>
</Word>
<Word>
<Surface>ありゃ</Surface>
<Furigana>ありゃ</Furigana>
<Roman>arya</Roman>
</Word>
<Word>
<Surface>苦</Surface>
<Furigana>く</Furigana>
<Roman>ku</Roman>
</Word>
<Word>
<Surface>も</Surface>
<Furigana>も</Furigana>
<Roman>mo</Roman>
</Word>
<Word>
<Surface>ある</Surface>
<Furigana>ある</Furigana>
<Roman>aru</Roman>
</Word>
<Word>
<Surface>さ</Surface>
<Furigana>さ</Furigana>
<Roman>sa</Roman>
</Word>
</WordList>
</Result>
</ResultSet>
まとめ
結果を見る限り、「Surface」タグは元のテキストを形態素に分割したもの、「Furigana」タグは漢字をひらがなに変換したもののようですね。
返り値はXMLデータなのでxmlモジュールと組み合わせれば「Fiuriganaタグだけを取得し、漢字交じり文章をひらがなのみに変換する」なんてことも可能になりそうです。
0 件のコメント:
コメントを投稿