0

Azureマーケットプレイスで提供されているマイクロソフトの翻訳サービスを利用しようとしています。http://code.msdn.microsoft.com/windowsazure/Walkthrough-Translator-in-7e0be0f7/view/SourceCodeで提供されているサンプル コードから始めました。

彼らのサンプル コードを使用すると、1 つの翻訳を取得できます。ただし、1 回のリクエストで複数の翻訳を取得したいと考えています。DataServiceContext.ExecuteBatch を使用してみましたが、「リモート サーバーがエラーを返しました: (404) 見つかりません」という WebException がスローされます。

TranslatorContainer cont = new TranslatorContainer(new Uri("https://api.datamarket.azure.com/Bing/MicrosoftTranslator/"));
var accountKey = "<account-key>";
cont.Credentials = new NetworkCredential(accountKey, accountKey);

// This works
var result1 = cont.Translate("Nothing to translate", "nl", "en").Execute().ToList();

DataServiceQuery<Translation>[] queries = new DataServiceQuery<Translation>[]
{
    cont.Translate("Nothing", "nl", "en"),
    cont.Translate("Nothing to translate", "nl", "en"),
    cont.Translate("What happend", "nl", "en"),
};

// This throws exception
var result2 = cont.ExecuteBatch(queries);

複数のスレッドを使用して、複数のリクエストを並行して行うことができました。しかし、私はそれを避けたいです。誰もこれを試したことがありますか?

4

2 に答える 2

0

コードが機能しない理由がわかりません。ただし、REST API を直接使用することもできます。私の側では問題なく動作する次のコードを使用してみてください。

        string stringToTranslate = "test";
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential("[your user name]", "[your key]");
        string results = client.DownloadString("https://api.datamarket.azure.com/Data.ashx/Bing/MicrosoftTranslator/Translate?Text=%27" + stringToTranslate + "%27&To=%27zh-CHS%27");

その結果が AtomPub フィードです。その後、フィードを解析できます (たとえば、SyndicationFeed クラスを使用します: http://msdn.microsoft.com/en-us/library/system.servicemodel.syndication.syndicationfeed.aspx )。

よろしくお願いします、

明徐。

于 2012-04-18T08:21:59.400 に答える
0

CognitiveServices Translator API 3.0 でのバッチ翻訳には、この NuGet パッケージを使用します

  • この Nuget は、バッチ翻訳を簡単かつ迅速に行うのに役立ちます。
    1. 仕組み: コンテンツを翻訳用の完璧なパッケージに変換します。
    2. 速度:私のPCでは、毎秒約300〜500アイテム(文字ではありません)

手順は次のとおりです。

  1. BaseUrl と Key を使用して Translator のインスタンスを作成します。

    Translator translator = new Translator(BaseUrl, Key);
    
  2. Translator にコンテンツを追加します。

    translator.AddContent("哈啰");
    //Here you can add many times, more than 100, 1000 or 10000.
    //You can also set the "Contents" property instead.
    
  3. 結果を取得 aysnc:

    List<string> translation = await translator.TranslateAsync("en");
    
于 2019-06-02T01:43:15.727 に答える