3

英語からロシア語に単語を翻訳するために、Python で小さなスクリプトを作成しました。Microsoft Translator API への接続には、Microsoft-Translator-Python-APIを使用します。ただし、遅延の問題があります。API を呼び出して翻訳を取得するのに最大 3 秒かかります。可能であれば、より速く動作させる方法を知っている人はいますか? ここで何をしているのかを示すために、コードの一部を入れます。

translator   = Translator('My-User-Id',
                            'My-Client-Secret')

current_word = subprocess.check_output(["xsel", "-o"])
translation  = translator.translate(current_word, "ru")
4

2 に答える 2

6

興味深いことに、実際にこれを行うことができます。

import json
import requests
import urllib
args = {
        'client_id': '',#your client id here
        'client_secret': '',#your azure secret here
        'scope': 'http://api.microsofttranslator.com',
        'grant_type': 'client_credentials'
    }
oauth_url = 'https://datamarket.accesscontrol.windows.net/v2/OAuth2-13'
oauth_junk = json.loads(requests.post(oauth_url,data=urllib.urlencode(args)).content)
translation_args = {
        'text': "hello",
        'to': 'ru',
        'from': 'en'
        }
headers={'Authorization': 'Bearer '+oauth_junk['access_token']}
translation_url = 'http://api.microsofttranslator.com/V2/Ajax.svc/Translate?'
translation_result = requests.get(translation_url+urllib.urlencode(translation_args),headers=headers)
print translation_result.content

速度が低下する前に、数回の即時応答を取得します(速度が低下する前に、即時応答で6〜7回)。私はAzureをあまり使用していないので、それらのレート制限がどのように機能するかはわかりませんが、そのレートを上げるために支払うことができると確信しています。

(注:上記のコードの一部をそのMicrosoftライブラリから取得しました。ロジックだけがどのように動作するかを確認したかっただけです)

于 2012-08-27T21:40:29.320 に答える
2

恥知らずのプラグ。

このプロセスをより簡単にするために、pythonモジュール(そのビールウェア:))を作成しました。

それを使用するのは次のように簡単です。

import azure_translate_api

client = azure_translate_api.MicrosoftTranslatorClient('client_id', 'client_secret')
print client.TranslateText('Hello World!', 'en', 'fr')

このモジュールのダウンロード元と使用方法の詳細については、私の github リポジトリにアクセスしてください。

于 2014-01-11T10:23:55.293 に答える