0

我们正在尝试使用 Azure 市场上提供的 Microsoft 翻译服务。我从http://code.msdn.microsoft.com/windowsazure/Walkthrough-Translator-in-7e0be0f7/view/SourceCode提供的示例代码开始

使用他们的示例代码,我可以获得一个翻译。但是,我想在一个请求中获得多个翻译。我尝试使用 DataServiceContext.ExecuteBatch,但它抛出 WebException 并显示“远程服务器返回错误:(404)未找到。”

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

使用此 NuGet 包在 CognitiveServices Translator API 3.0 上进行批量翻译

  • 这个 Nuget 可以帮助您轻松快速进行批量翻译。
    1. 工作原理:它将您的内容转换为一些完美的翻译包。
    2. 速度:在我的电脑上,每秒大约 300~500 个项目(不是字符)

以下是步骤:

  1. 使用您的 BaseUrl 和 Key 创建 Translator 实例:

    Translator translator = new Translator(BaseUrl, Key);
    
  2. 向翻译器添加内容:

    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 回答