リンク

2017年6月28日水曜日

pythonからYahoo! JAPAN Web APIサービスを利用する


みなさん、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 件のコメント:

コメントを投稿