11 月 21

[php][WebAPI]EJ, JE translation APIは翻訳WebAPIとして使える

Category: php
このエントリをはてなブックマークに追加[php][WebAPI]EJ, JE translation APIは翻訳WebAPIとして使えるのはてなブックマーク被リンク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

前回のWebserviceX.NET Translation Engineに引き続き、翻訳WebAPIの調査。今回はEJ, JE translation APIの調査です。

EJ, JE translation APIは、Yahoo! Babel FishYahoo! Pipes経由で呼び出すことによって文章を翻訳するAPIです。下記が本家APIのURLとMASHAPEDIAの紹介記事です。

英語←→日本語の翻訳APIとして使えるYahoo Pipesを作った
http://muumoo.jp/news/2007/05/09/0translationapi.html

JSON形式で翻訳「EJ, JE translation API」 : WEBAPI一覧 : MASHUPEDIA - マッシュペディア - : Web API x Mashup
http://www.mashupedia.jp/webapis/view/292

概要としては、REST形式でAPIにアクセスし、翻訳結果をRSS/JSON/JSONPで返す感じです。

  • APIのURL
    • http://pipes.yahoo.com/pipes/pipe.run
  • パラメータ
    • _id
      • 翻訳の種類
      • EJ(英語→日本語)なら、「ZM5oVmX92xGrFWiRJhOy0Q」
      • JE(日本語→英語)なら、「ohZnaGr92xG36xIFyzUFzw」
    • _run
      • 「1」で固定
    • _render
      • レスポンス形式
      • 「rss」または「json」
    • _callback
      • _render = jsonのとき、JSONP用のコールバック関数名
    • text
      • 翻訳する文章(エンコード済み)
      • JavaScriptから実行する場合、encodeURIComponent()関数をかける必要がある
      • phpから実行する場合、urlencode()関数をかける必要がある

さきほどの本家のページにはJavaScriptのみで実装するサンプルが公開されています。今回はphpでJSONを分解するサンプルを試してみました。

PHP:
  1. require_once 'HTTP/Client.php';
  2.  
  3. // 翻訳したいテキスト
  4. $text = 'This is a pen.';
  5. // HTTP_Clientの初期化パラメータ
  6. $http_client_default_param = array(
  7.     'timeout' => 10,
  8.     'allowRedirects' => true,
  9.     'maxRedirects' => 3
  10. );
  11.  
  12. $http_client_default_header = array(
  13.     'Accept-Language' => 'ja-JP,ja;q=0.9,en;q=0.8'
  14. );
  15. // POSTする先のURIとそのパラメータ
  16. $uri = 'http://pipes.yahoo.com/pipes/pipe.run';
  17. $param = array(
  18.     '_id' => 'ZM5oVmX92xGrFWiRJhOy0Q', // EJ
  19.     //'_id' => 'ohZnaGr92xG36xIFyzUFzw', // JE
  20.     '_run' => 1,
  21.     '_render' => 'json', // or rss
  22.     //'_callback' => 'example20070509callback', // JSONP
  23.     'text' => urlencode($text)
  24. );
  25. // レスポンスの発行
  26. $client =& new HTTP_Client($http_client_default_param, $http_client_default_header);
  27. $client->post($uri, $param);
  28. $response = $client->currentResponse();
  29. // JSON形式をPHPで操作可狽ネ形式にデコード
  30. $ret = json_decode($response['body']);    //>= php 5.2.0
  31. $tuple = $ret->value->items[0];
  32. // 表示
  33. echo sprintf("Title: %s<br />", urldecode($tuple->title));
  34. echo sprintf("Description: %s<br />", urldecode($tuple->description));

実行結果のサンプルは以下のようになります。

Title: This is a pen.
Description: これはペンである。

いくつかプログラムの補足をしておきます。

1. レスポンスの発行にはPEAR::HTTP_Clientライブラリを使用しました。簡単なライブラリなので何をしているのかはすぐにわかると思います。

2. json_decode()関数は、php 5.2.0から標準で組み込まれるようになったJSON 拡張モジュールに依存しています。それ以前のバージョンの方は、PEAR::Services_JSONphp-jsonなどの拡張ライブラリをインストールしてください。

これなら簡単な文章を翻訳するのに十分使えますね!

1 Comment so far

  1. うえちょこ@ぼろぐ 12 月 23rd, 2007 17 : 17 : 35

    [php][CakePHP]日英・英日翻訳コンポーネント

     ようやくCakePHPの勉強を開始しました。『CakePHPガイドブック』と『…

Leave a comment