随着“一带一路”政策的开展,各种项目迎接而来,语言不通就成为了痛点。
作为开发人员,相信大家对于翻译不陌生吧,百度翻译,有道词典、谷歌翻译等等或多或少都用过(汉-英,汉-日,汉-俄等等)。
我们现在就基于百度ai开放平台进行机器翻译,demo使用的是c#控制台应用程序,后续有需要的可以嫁接到指定项目中使用。
注册地址:https://login.bce.baidu.com/
注册登录之后,在“产品服务” 菜单下找到机器翻译,点击进入,如下图:
注意,这里我们需要先进行领取免费资源,开发完成后根据后期需求决定是否进行付费操作,如下图所示:
领取后,创建我们的api应用,如下图(主要是api key和cret key):
创建vs控制台应用程序,命名为translateproject。
.net framework/.net core的都可以,甚至于web应用也行,因为这是api操作。
创建一个http请求接口帮助类(webrequest方式api请求方式(post/get)),命名为httptool(自定义命名),大家可以在网上找一个,或者用下面的:
/// <summary> /// post请求方式 /// </summary> /// <param name="url">请求路径</param> /// <param name="parms">传入的值,格式为:{city:"上海",city2:"重庆"}</param> /// <param name="token"></param> /// <param name="contenttype"></param> /// <returns></returns> public string httppost(string url, string parms, string token,string contenttype= "application/json") { string result = string.empty; try { if (url.startswith("https:")) { //要调用https的api接口,一定要加这句 rvicepointmanager.curityprotocol = (curityprotocoltype)3072; } encoding encoding = encoding.utf8; //转译编码 httpwebrequest request = (httpwebrequest)webrequest.create(url);//创建 request.method = "post"; //post请求的一些标准参数配置 request.accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"; request.contenttype = contenttype; //自定义头部内容 if (!string.isnullorempty(token)) { request.headers.add(httprequestheader.authorization, token); //添加token } byte[] buffer = encoding.getbytes(parms); //译编传入的值格式化为可识别 request.contentlength = buffer.length; //post传值参数标配 request.getrequeststream().write(buffer, 0, buffer.length); httpwebrespon respon = (httpwebrespon)request.getrespon(); //尝试获得要请求的url的返回消息 using (streamreader reader = new streamreader(respon.getresponstream(), encoding.utf8)) { result = reader.readtoend(); } } catch (exception ex) { result = ""; } return result; }
通用版api文档:https://cloud.baidu.com/doc/mt/s/4kqryjku9
直接看文档就可以了,我这里把代码展示一下,大家拷贝一下就可以执行。
如下代码和展示:
using newtonsoft.json;using system;using system.collections.generic;using system.linq;using system.net.http;using system.text;using system.threading.tasks;namespace translateproject{ class program { // 百度云中开通对应服务应用的 api key 建议开通应用的时候多选服务(百度云应用的ak) private static string clientid = "qnldyxxtir2pkbqsv242369y"; // 百度云中开通对应服务应用的 cret key(百度云应用的sk) private static string clientcret = "l6gemod3pm2pmafyqubnxpcgeemk18mr"; static void main(string[] args) { try { #region 文本翻译-通用版 //获取token:详细见 /d/file/titlepic/ck3dwjhhu string tokenjson = getaccesstoken(); if (!string.isnullorempty(tokenjson)) { accesstoken tokenentity = jsonconvert.derializeobject<accesstoken>(tokenjson); if (!string.isnullorempty(tokenentity.error)) { if (tokenentity.error == "invalid_client" && tokenentity.error_description == "unknown client id") 化妆品技术网 console.writeline("api key不正确"); el if (tokenentity.error == "invalid_client" && tokenentity.error_description == "client authentication failed") console.writeline("cret key不正确"); el console.writeline("未知错误:获取token失败"); console.readkey(); return; } string url = "/d/file/titlepic/v1 tokenentity.access_token; string q = "文本翻译是百度翻译依托领先的自然语言处理技术推出的在线文本翻译服务,可支持中、英、日、韩等200+语言互译,100+语种自动检测。"; string parms = "{ \"q\":\"" + q + "\",\"from\":\"zh\",\"to\":\"en\"}"; //from:翻译源语言 to:翻译目标语言 q:请求翻译内容 httptool httppost = new httptool(); var strjson = httppost.httppost(url, parms, "", "application/json;chart=utf-8"); console.writeline(strjson); console.readkey(); } #endregion } catch (exception ex) { console.writeline("翻译失败:" + ex.message); } } //调用getaccesstoken()获取的 access_token建议根据expires_in 时间 设置缓存 public static string getaccesstoken() { try { string authhost = "/d/file/titlepic/question.html httpclient client = new httpclient(); list<keyvaluepair<string, string>> paralist = new list<keyvaluepair<string, string>>(); paralist.add(new keyvaluepair&l昔者庄周梦为胡蝶t;string, string>("grant_type", "client_credentials")); paralist.add(new keyvaluepair<string, string>("client_id", clientid)); paralist.add(new keyvaluepair<string, string>("client_cret", clientcret)); httpresponmessage respon = client.postasync(authhost, new formurlencodedcontent(paralist)).result; string result = respon.content.readasstringasync().result; r立冬祝福eturn result; } catch (exception ex) { return ""; } } public class accesstoken { public string refresh_token { get; t; } pets2 public int expires_in { get; t; } public string scope { get; t; } public string ssion_key { get; t; } public string access_token { get; t; } public string ssion_cret { get; t; } public string error { get; t; } public string error_description { get; t; } } }}
词典版api文档:https://cloud.baidu.com/doc/mt/s/nkqrzmbpc
词典版和通用版大体相同,大家拷贝上面的更换一下请求的url即可。
图片翻译api文档:https://cloud.baidu.com/doc/mt/s/mki483xpu
这里就不贴代码了,大家点击api文档参照试试,自己做出来乐趣更高哦。
看到这里就介绍了,是不是感觉很简单,就注册一个百度云平台的账号,创建相关的ap南京消防士官学校i key应用,
然后对照开发文档进行编写测试,放在项目中很容易移植,快去试试吧。
以上就是c#基于百度ai实现机器翻译功能的详细内容,更多关于c#机器翻译的资料请关注www.887551.com其它相关文章!
本文发布于:2023-04-04 13:32:12,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8e4c350fe2f79842425f35db874f5232.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#基于百度AI实现机器翻译功能.doc
本文 PDF 下载地址:C#基于百度AI实现机器翻译功能.pdf
留言与评论(共有 0 条评论) |