我们之前基于百度ai开发平台实现了人脸识别 [1]、文字识别 [2]、语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现。

随着“一带一路”政策的开展,各种项目迎接而来,语言不通就成为了痛点。

作为开发人员,相信大家对于翻译不陌生吧,百度翻译,有道词典、谷歌翻译等等或多或少都用过(汉-英,汉-日,汉-俄等等)。

我们现在就基于百度Ai开放平台进行机器翻译,demo使用的是C#控制台应用程序,后续有需要的可以嫁接到指定项目中使用。

1、注册百度账号api,创建自己的Api应用

注册地址: https://login.bce.baidu.com/

注册登录之后,在“产品服务” 菜单下找到机器翻译 ,点击进入,如下图:

注意,这里我们需要先进行 领取免费资源 ,开发完成后根据后期需求决定是否进行付费操作,如下图所示:

 领取后,创建我们的Api应用,如下图(主要是Api Key和Secret Key):

2、创建vs控制台应用程序

创建VS控制台应用程序,命名为TranslateProject。

.NET Framework/.NET Core的都可以,甚至于Web应用也行,因为这是Api操作。

3、编写程序并调试

post请求工具类

创建一个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接口,一定要加这句
ServicePointManager.SecurityProtocol = (SecurityProtocolType)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);
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //尝试获得要请求的URL的返回消息
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
result = reader.ReadToEnd();
}
}
catch (Exception ex)
{
result = "";
}
return result;
}

文本翻译-通用版

通用版API文档:https://cloud.baidu.com/doc/MT/s/4kqryjku9 [4]

直接看文档就可以了,我这里把代码展示一下,大家拷贝一下就可以执行。

如下代码和展示:

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";
// 百度云中开通对应服务应用的 Secret Key(百度云应用的SK)
private static String clientSecret = "L6gemOD3pM2PmafyQUBnXpCGEemk18mR";
static void Main(string[] args)
{
try
{
#region 文本翻译-通用版 //获取Token:详细见 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu
string TokenJson = getAccessToken();
if (!string.IsNullOrEmpty(TokenJson))
{
AccessToken TokenEntity = JsonConvert.DeserializeObject<AccessToken>(TokenJson);
if (!string.IsNullOrEmpty(TokenEntity.error))
{
if (TokenEntity.error == "invalid_client" && TokenEntity.error_description == "unknown client id")
Console.WriteLine("API Key不正确");
else if (TokenEntity.error == "invalid_client" && TokenEntity.error_description == "Client authentication failed")
Console.WriteLine("Secret Key不正确");
else
Console.WriteLine("未知错误:获取Token失败");
Console.ReadKey();
return;
} string URL = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token="+ 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;charset=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 = "https://aip.baidubce.com/oauth/2.0/token";
HttpClient client = new HttpClient();
List<KeyValuePair<String, String>> paraList = new List<KeyValuePair<string, string>>();
paraList.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
paraList.Add(new KeyValuePair<string, string>("client_id", clientId));
paraList.Add(new KeyValuePair<string, string>("client_secret", clientSecret)); HttpResponseMessage response = client.PostAsync(authHost, new FormUrlEncodedContent(paraList)).Result;
String result = response.Content.ReadAsStringAsync().Result;
return result;
}
catch (Exception ex)
{
return "";
} } public class AccessToken
{
public string refresh_token { get; set; }
public int expires_in { get; set; }
public string scope { get; set; }
public string session_key { get; set; }
public string access_token { get; set; }
public string session_secret { get; set; }
public string error { get; set; }
public string error_description { get; set; } }
}
}

文本翻译-词典版

词典版API文档:https://cloud.baidu.com/doc/MT/s/nkqrzmbpc [5]

词典版和通用版大体相同,大家拷贝上面的更换一下请求的URL即可。

文本翻译-图片翻译

图片翻译API文档:https://cloud.baidu.com/doc/MT/s/mki483xpu [6]

这里就不贴代码了,大家点击api文档参照试试,自己做出来乐趣更高哦。

总结

看到这里就介绍了,是不是感觉很简单,就注册一个百度云平台的账号,创建相关的api key应用,

然后对照开发文档进行编写测试,放在项目中很容易移植,快去试试吧。

参考文献

[1].C# 10分钟完成百度人脸识别——入门篇

[2].C# 10分钟完成百度图片提取文字(文字识别)——入门篇

[3].C# 10分钟完成百度语音技术(语音识别与合成)——入门篇

[4].通用版Api文档

[5].词典版Api文档

[6].图片翻译

欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐
公众号:熊泽有话说

QQ群:711838388
出处: https://www.cnblogs.com/xiongze520/p/15783801.html
您可以随意转载、摘录,但请在文章内注明作者和原文链接。 

C# 10分钟完成百度翻译(机器翻译)——入门篇的更多相关文章

  1. C# 10分钟完成百度人脸识别——入门篇

    嗨咯,小编在此祝大家新年快乐财多多! 今天我们来盘一盘人脸注册.人脸识别等相关操作,这是一个简单入门教程. 话不多说,我们进入主题: 完成人脸识别所需的步骤: 注册百度账号api,创建自己的应用: 创 ...

  2. C# 10分钟完成百度图片提取文字(文字识别)——入门篇

    现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,dem ...

  3. C# 10分钟完成百度语音技术(语音识别与合成)——入门篇

    我们已经讲了人脸识别(入门+进阶).图片识别(入门).下面是链接: C# 10分钟完成百度人脸识别——入门篇 C# 30分钟完成百度人脸识别——进阶篇(文末附源码) C# 10分钟完成百度图片提取文字 ...

  4. C# 30分钟完成百度人脸识别——进阶篇(文末附源码)

    距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解 ...

  5. 一起学react (1) 10分钟 让你dva从入门到精通

    前言 如果文章中有错误的地方的话 可以直接加我QQ:469373256 自己针对一些问题做的优化版本 目前刚启动 还不是很成熟 https://github.com/fangkyi03/fastkit ...

  6. 10分钟go crawler colly从入门到精通

    Introduction 本文对colly如何使用,整个代码架构设计,以及一些使用实例的收集. Colly是Go语言开发的Crawler Framework,并不是一个完整的产品,Colly提供了类似 ...

  7. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

  8. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  9. kafka原理和实践(一)原理:10分钟入门

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

随机推荐

  1. Python用matplotlib绘图网格线的设置

    一.X轴网格线的设置 import matplotlib.pyplot as plt import numpy as np from pylab import mpl mpl.rcParams['fo ...

  2. JuiceFS 缓存策略详解

    对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带.读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据.相比直接与远端 ...

  3. Mac 下安装Phonegap开发环境

    Mac 下安装Phonegap开发环境 2014.09.11  星期四 评论 0 条    阅读 5,613 次 作者:野草 标签:phonegap ios mac 什么是Phonegap呢?Phon ...

  4. 《手把手教你》系列技巧篇(五十二)-java+ selenium自动化测试-处理面包屑(详细教程)

    1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...

  5. Java on Visual Studio Code的更新 – 2021年11月

    Nick zhu Senior Program Manager, Developer Division at Microsoft ​大家好,欢迎来到 11 月版的 Visual Studio Code ...

  6. 面试官:HashSet如何保证元素不重复?

    本文已收录<Java常见面试题>系列,Git 开源地址:https://gitee.com/mydb/interview HashSet 实现了 Set 接口,由哈希表(实际是 HashM ...

  7. CF108A Palindromic Times 题解

    Content 现在是 \(h\) 时 \(m\) 分,请求出在此之后(不包含此时)的第一个回文时间. 数据范围:\(0\leqslant h\leqslant 23,0\leqslant m\leq ...

  8. 5、双指针技巧套路框架——Go语言版

    前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...

  9. Python 代码设计模式

    责任链模式 (场景:OA系统,项目审批...) 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止. 适用性 ...

  10. Coder 投稿 | mPaaS 的多版本接入(Android)

    本文作者:mPaaS 用户「Q-Coder」 同时欢迎更多的开发者向 mPaaS 投稿 原文:blog.csdn.net/yqq577/article/details/116801705 前言 对于 ...