执行一批微软翻译查询
本文关键字:微软 翻译 查询 一批 执行 | 更新日期: 2023-09-27 18:31:40
我们正在尝试使用Azure Market上提供的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);
我可以使用多个线程并并行发出多个请求。但我喜欢避免这种情况。有人以前尝试过这个吗?
我不确定为什么你的代码不起作用。但您可能希望直接使用 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)。
此致敬意
徐明.
使用此 NuGet 包在认知服务翻译器 API 3.0 上进行批量翻译
- 这个Nuget可以帮助您轻松快速地进行批量翻译。
- 工作原理:它会将您的内容转换为一些完美的翻译包。
- 速度:在我的电脑上,每秒约300~500个项目(不是字符)
以下是步骤:
-
使用 BaseUrl 和 Key 创建 Translator 的实例:
Translator translator = new Translator(BaseUrl, Key);
-
向翻译器添加内容:
translator.AddContent("哈啰"); //Here you can add many times, more than 100, 1000 or 10000. //You can also set the "Contents" property instead.
-
获取结果 aysnc:
List<string> translation = await translator.TranslateAsync("en");