Azure   发布时间:2019-11-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Azure AI 服务之文本翻译大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

有相关的技术栈。微软在 AI 领域自然也是投入了重注,并且以 Azure 认知服务的方式投入了市场:

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/720a341692c86ffa14a15f7938223ccd.png" >

在程序中实现 AI 的功能了!

介绍 Azure 认识服务中 Language 分类中的文本翻译服务(Translator Text API

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/2157081cadcab846f9be38a3918c5c2f.png" >)。

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/82845e914179ca92e7bb1c43df1e986f.png" >

Azure AI 服务之文本翻译

Azure AI 服务之文本翻译

TEXT_TRANSLATION_API_ENDPOINT = BING_SPELL_CHECK_API_ENDPOINT = ;

WebRequest.Headers.Add(,);

TEXT_TRANSLATION_API_SUBSCRIPTION_KEY = BING_SPELL_CHECK_API_SUBSCRIPTION_KEY = ;

0580@的语言列表:

String uri = TEXT_TRANSLATION_API_ENDPOINT + ;

String { 0580@的语言 String uri = TEXT_TRANSLATION_API_ENDPOINT + request Webrequest =request.Create(uri); http 请求中添加认证信息 Webrequest.Headers.Add(); WebResponse response = </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把返回的 xml 信息抽取到数组中</span> response =<span style="color: #000000"&gt; Webrequest.GetResponse(); </span><span style="color: #0000ff"&gt;using</span> (Stream stream =<span style="color: #000000"&gt; response.GetResponseStream()) { DataContractserializer dcs </span>= <span style="color: #0000ff"&gt;new</span> DataContractserializer(<span style="color: #0000ff"&gt;typeof</span>(List<<span style="color: #0000ff"&gt;String</span>><span style="color: #000000"&gt;)); List</span><<span style="color: #0000ff"&gt;String</span>> languagesForTranslate = (List<<span style="color: #0000ff"&gt;String</span>><span style="color: #000000"&gt;)dcs.ReadObject(stream); languageCodes </span>=<span style="color: #000000"&gt; languagesForTranslate.ToArray(); }

}

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/0751918562b79f578e5a7bcc7c522ac4.png" >

虽然取到了可以翻译的语言列表,但是像图中的内容是无法显示给用户的,还需要把它们转换成对用户友好的名称,因此我们定义 GetLanguagenames 函数完成这个功能:

SortedDictionary<String,String> languageCodesAndtitles = SortedDictionary<String,String>(Comparer<String>.Create((a,b) => String.Compare(a,b,); enames() { String uri = TEXT_TRANSLATION_API_ENDPOINT + enames?locale=zh-CHShttpWebrequest request =httpWebrequest)Webrequest.Create(uri); request.Headers.Add(); request.ContentType = request.Method = serializer dcs = DataContractserializer(Type.GetType(m.String[]); (Stream stream =request.GetrequestStream()) { dcs.WriteObject(stream,languageCodes); }
</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把返回的 xml 信息抽取到数组中</span>
<span style="color: #0000ff"&gt;var</span> response =<span style="color: #000000"&gt; request.GetResponse();
</span><span style="color: #0000ff"&gt;String</span><span style="color: #000000"&gt;[] languagenames;
</span><span style="color: #0000ff"&gt;using</span> (Stream stream =<span style="color: #000000"&gt; response.GetResponseStream())
{
    languagenames </span>= (<span style="color: #0000ff"&gt;String</span><span style="color: #000000"&gt;[])dcs.ReadObject(stream);
}

</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把支持的语言列表及其友好名称保存到字典数据结构中,
</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 随后会把它们绑定给 combo box 控件进行显示</span>
<span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i = <span style="color: #800080"&gt;0</span>; i < languagenames.Length; i++<span style="color: #000000"&gt;)
{
    languageCodesAndtitles.Add(languagenames[i],languageCodes[i]);
}

}

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/b86419d76c52fa8e2a3608e76b1872cc.png" >

{ count =titles.Count; (String menuItem titles.Keys) { FromLanguageComboBox.Items.Add(menuItem); ToLanguageComboBox.Items.Add(menuItem); }
</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 设置默认的源语言和目标语言</span>
FromLanguageComboBox.SELEctedItem = <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;英语</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;
ToLanguageComboBox.SELEctedItem </span>= <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;简体中文</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;;

}

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/16e6dd7096eda7484761593716fdb16c.png" >

TEXT_TRANSLATION_API_ENDPOINT + + 待翻译文本 + + 源语言 + + 目标语言

TranslateButton_Click(jectE) { String textToTranslate =); String fromLanguage =SELEctedValue.ToString(); String fromLanguageCode =titles[fromLanguage]; String toLanguageCode =titles[ToLanguageComboBox.SELEctedValue.ToString()];
</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 如果要翻译的文本是英语,还可以进行拼写检查</span>
<span style="color: #0000ff"&gt;if</span> (fromLanguageCode == <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;en</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;)
{
    textToTranslate </span>=<span style="color: #000000"&gt; CorrectSpelling(textToTranslatE);
    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把更新后的文本保存到 UI 控件上</span>
    TextToTranslate.Text =<span style="color: #000000"&gt; textToTranslate;     
}

</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 处理文本为空和不需要翻译的情况</span>
<span style="color: #0000ff"&gt;if</span> (textToTranslate == <span style="color: #800000"&gt;""</span> || fromLanguageCode ==<span style="color: #000000"&gt; toLanguageCodE)
{
    TranslatedText.Text </span>=<span style="color: #000000"&gt; textToTranslate;
    </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt;;
}

</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 通过 http 请求执行翻译任务</span>
<span style="color: #0000ff"&gt;String</span> uri = <span style="color: #0000ff"&gt;String</span>.Format(TEXT_TRANSLATION_API_ENDPOINT + <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;Translate?text=</span><span style="color: #800000"&gt;"</span> +<span style="color: #000000"&gt;
    System.Web.httpUtility.UrlEncode(textToTranslatE) </span>+ <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;&amp;from={0}&amp;to={1}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,fromLanguageCode,toLanguageCodE);
</span><span style="color: #0000ff"&gt;var</span> translationWebrequest =<span style="color: #000000"&gt; httpWebrequest.Create(uri);
translationWebrequest.Headers.Add(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;Ocp-Apim-Subscription-Key</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,TEXT_TRANSLATION_API_SUBSCRIPTION_KEY);
WebResponse response </span>= <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;;
response </span>=<span style="color: #000000"&gt; translationWebrequest.GetResponse();

</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把返回的翻译结果抽取到 UI 控件中</span>
Stream stream =<span style="color: #000000"&gt; response.GetResponseStream();
StreamReader translatedStream </span>= <span style="color: #0000ff"&gt;new</span> StreamReader(stream,Encoding.GetEncoding(<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;utf-8</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;));
System.Xml.XmlDocument xmlResponse </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; System.Xml.XmlDocument();
xmlResponse.LoadXml(translatedStream.ReadToEnd());
TranslatedText.Text </span>=<span style="color: #000000"&gt; xmlResponse.InnerText;

}

String uri = String.Format(TEXT_TRANSLATION_API_ENDPOINT + +m.Web.httpUtility.UrlEncode(textToTranslatE) + {0}&to={1},toLanguageCodE);

check 服务进行翻译前的拼写检查。比如 TranslateButton_Click 函数中的:

(fromLanguageCode == { textToTranslate =E); TextToTranslate.Text =

String CorrectSpelling(String{ String uri = BING_SPELL_checK_API_ENDPOINT + httpWebrequest spellcheckWebrequest =httpWebrequest)Webrequest.Create(uri); spellcheckWebrequest.Headers.Add(checK_API_SUBSCRIPTION_KEY); spellcheckWebrequest.Method = checkWebrequest.ContentType = ; </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把文本内容放在请求的 body 中</span> <span style="color: #0000ff"&gt;String</span> body = <span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;text=</span><span style="color: #800000"&gt;"</span> +<span style="color: #000000"&gt; System.Web.httpUtility.UrlEncode(text); </span><span style="color: #0000ff"&gt;byte</span>[] data =<span style="color: #000000"&gt; Encoding.UTF8.GetBytes(body); spellcheckWebrequest.ContentLength </span>=<span style="color: #000000"&gt; data.Length; </span><span style="color: #0000ff"&gt;using</span> (<span style="color: #0000ff"&gt;var</span> requestStream =<span style="color: #000000"&gt; spellcheckWebrequest.GetrequestStream()) requestStream.Write(data,</span><span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;,data.Length); httpWebResponse response </span>=<span style="color: #000000"&gt; (httpWebResponsE)spellcheckWebrequest.GetResponse(); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 从返回中取出 json 格式的拼写检查结果</span> <span style="color: #0000ff"&gt;var</span> serializer = <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; System.Web.Script.serialization.JavaScriptserializer(); </span><span style="color: #0000ff"&gt;var</span> responseStream =<span style="color: #000000"&gt; response.GetResponseStream(); </span><span style="color: #0000ff"&gt;var</span> jsonString = <span style="color: #0000ff"&gt;new</span> StreamReader(responseStream,Encoding.GetEncoding(<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;utf-8</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;)).ReadToEnd(); </span><span style="color: #0000ff"&gt;dynamic</span> jsonResponse =<span style="color: #000000"&gt; serializer.DeserializeObject(jsonString); </span><span style="color: #0000ff"&gt;var</span> flaggedTokens = jsonResponse[<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;flaggedTokens</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;]; </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 我们定义一个规则来应用拼写检查的结果, </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 比如:当拼写检查的权值大于 0.7 时就用建议的值替换掉文本中的值。</span> <span style="color: #0000ff"&gt;var</span> corrections = <span style="color: #0000ff"&gt;new</span> SortedDictionary<<span style="color: #0000ff"&gt;int</span>,<span style="color: #0000ff"&gt;String</span>[]>(Comparer<<span style="color: #0000ff"&gt;int</span>>.Create((a,b) =><span style="color: #000000"&gt; b.CompareTo(a))); </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i = <span style="color: #800080"&gt;0</span>; i < flaggedTokens.Length; i++<span style="color: #000000"&gt;) { </span><span style="color: #0000ff"&gt;var</span> correction =<span style="color: #000000"&gt; flaggedTokens[i]; </span><span style="color: #0000ff"&gt;var</span> suggestion = correction[<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;suggestions</span><span style="color: #800000"&gt;"</span>][<span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;]; </span><span style="color: #0000ff"&gt;if</span> (suggestion[<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;score</span><span style="color: #800000"&gt;"</span>] > (<span style="color: #0000ff"&gt;decimal</span>)<span style="color: #800080"&gt;0.7</span><span style="color: #000000"&gt;) corrections[(</span><span style="color: #0000ff"&gt;int</span>)correction[<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;offset</span><span style="color: #800000"&gt;"</span>]] = <span style="color: #0000ff"&gt;new</span> <span style="color: #0000ff"&gt;String</span><span style="color: #000000"&gt;[] { correction[</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;token</span><span style="color: #800000"&gt;"</span>],suggestion[<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;suggestion</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;] }; } </span><span style="color: #0000ff"&gt;foreach</span> (<span style="color: #0000ff"&gt;int</span> i <span style="color: #0000ff"&gt;in</span><span style="color: #000000"&gt; corrections.Keys) { </span><span style="color: #0000ff"&gt;var</span> oldtext = corrections[i][<span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;]; </span><span style="color: #0000ff"&gt;var</span> newtext = corrections[i][<span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;]; </span><span style="color: #0000ff"&gt;if</span> (text.SubString(i,oldtext.Length).All(<span style="color: #0000ff"&gt;char</span>.IsUpper)) newtext =<span style="color: #000000"&gt; newtext.ToUpper(); </span><span style="color: #0000ff"&gt;else</span> <span style="color: #0000ff"&gt;if</span> (<span style="color: #0000ff"&gt;char</span>.IsUpper(text[i])) newtext = newtext[<span style="color: #800080"&gt;0</span>].ToString().ToUpper() + newtext.SubString(<span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;); text </span>= text.SubString(<span style="color: #800080"&gt;0</span>,i) + newtext + text.SubString(i +<span style="color: #000000"&gt; oldtext.Length); } </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; text;

}

可以看出,拼写检查只是给出一些建议,具体怎么做还是由用户决定的。比如上面的代码中当拼写检查的权值大于 0.7 时就用建议的值替换掉文本中的值。下面我们来测试一下拼写检查的逻辑,运行程序,并输入 "Helo world!" 进行翻译:

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/182e32fa511adffeb2a23eb57f3b2c6b.png" >

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/8e4eb4b31084513338b0085f0f4799ee.png" >

title="Azure AI 服务之文本翻译" alt="Azure AI 服务之文本翻译" src="https://cn.js-code.com/res/2019/02-09/09/6032c6def46957e532111c421f71eedf.png" >

考:https://docs.microsoft.com/en-us/azure/cognitive-services/translator/tutorial-wpf-translation-csharp" target="_blank">Microsoft Translator WPF application in C#

大佬总结

以上是大佬教程为你收集整理的Azure AI 服务之文本翻译全部内容,希望文章能够帮你解决Azure AI 服务之文本翻译所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: