服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#基于百度AI实现机器翻译功能

C#基于百度AI实现机器翻译功能

2022-12-16 13:40一只努力学习的程序猿 C#

众所周知,基于百度ai开发平台我们可以实现了人脸识别、文字识别 、语音识别等功能。本文将介绍它的另一个功能,即实现机器翻译,感兴趣的可以了解一下

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

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

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

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

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

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

C#基于百度AI实现机器翻译功能

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

C#基于百度AI实现机器翻译功能

C#基于百度AI实现机器翻译功能

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

C#基于百度AI实现机器翻译功能

C#基于百度AI实现机器翻译功能

C#基于百度AI实现机器翻译功能

 

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

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

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

C#基于百度AI实现机器翻译功能

 

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

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

如下代码和展示:

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; }

      }
  }
}

C#基于百度AI实现机器翻译功能

文本翻译-词典版

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

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

文本翻译-图片翻译

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

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

 

总结

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

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

以上就是C#基于百度AI实现机器翻译功能的详细内容,更多关于C#机器翻译的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/xiongze520/p/15783801.html

延伸 · 阅读

精彩推荐
  • C#c# 实现轮询算法实例代码

    c# 实现轮询算法实例代码

    这篇文章主要介绍了c# 实现轮询算法实例代码的相关资料,这里附有实例代码,具有一定的参考价值,需要的朋友可以参考下...

    pengpeng8062021-12-11
  • C#C#6 null 条件运算符

    C#6 null 条件运算符

    本文主要对比C# 6 null运算符与老版本的不同,并且用代码实例测试,发现新语法性能提高,语法简化了。希望看到的同学对你有所帮助...

    C#教程网10672021-11-30
  • C#简单聊聊c# 事件

    简单聊聊c# 事件

    这篇文章主要介绍了c# 事件的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    Learning hard8582022-09-28
  • C#C#用timer实现背单词小程序

    C#用timer实现背单词小程序

    这篇文章主要为大家详细介绍了C#用timer实现背单词小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    、你我山前没相见7472022-07-31
  • C#C#添加、读取Word脚注尾注的方法

    C#添加、读取Word脚注尾注的方法

    这篇文章主要为大家详细介绍了C#添加、读取Word脚注尾注的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    E-iceblue10752022-02-24
  • C#C# 实现窗口无边框,可拖动效果

    C# 实现窗口无边框,可拖动效果

    这篇文章主要介绍了C# 实现窗口无边框,可拖动效果,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧...

    逐梦科技5842022-02-21
  • C#C# 线程相关知识总结

    C# 线程相关知识总结

    这篇文章主要介绍了C# 线程相关知识,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    JoeSnail6192022-09-15
  • C#C# 打开蓝牙设置界面的两种方法

    C# 打开蓝牙设置界面的两种方法

    这篇文章主要介绍了C# 打开蓝牙设置界面的两种方法,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    唐宋元明清21888992022-09-26