最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#基于百度AI實(shí)現(xiàn)機(jī)器翻譯功能

 更新時(shí)間:2022年01月10日 16:29:37   作者:一只努力學(xué)習(xí)的程序猿  
眾所周知,基于百度ai開(kāi)發(fā)平臺(tái)我們可以實(shí)現(xiàn)了人臉識(shí)別、文字識(shí)別 、語(yǔ)音識(shí)別等功能。本文將介紹它的另一個(gè)功能,即實(shí)現(xiàn)機(jī)器翻譯,感興趣的可以了解一下

隨著“一帶一路”政策的開(kāi)展,各種項(xiàng)目迎接而來(lái),語(yǔ)言不通就成為了痛點(diǎn)。

作為開(kāi)發(fā)人員,相信大家對(duì)于翻譯不陌生吧,百度翻譯,有道詞典、谷歌翻譯等等或多或少都用過(guò)(漢-英,漢-日,漢-俄等等)。

我們現(xiàn)在就基于百度Ai開(kāi)放平臺(tái)進(jìn)行機(jī)器翻譯,demo使用的是C#控制臺(tái)應(yīng)用程序,后續(xù)有需要的可以嫁接到指定項(xiàng)目中使用。

1、注冊(cè)百度賬號(hào)api,創(chuàng)建自己的Api應(yīng)用

注冊(cè)地址: https://login.bce.baidu.com/

注冊(cè)登錄之后,在“產(chǎn)品服務(wù)” 菜單下找到機(jī)器翻譯 ,點(diǎn)擊進(jìn)入,如下圖:

注意,這里我們需要先進(jìn)行 領(lǐng)取免費(fèi)資源 ,開(kāi)發(fā)完成后根據(jù)后期需求決定是否進(jìn)行付費(fèi)操作,如下圖所示:

領(lǐng)取后,創(chuàng)建我們的Api應(yīng)用,如下圖(主要是Api Key和Secret Key):

2、創(chuàng)建vs控制臺(tái)應(yīng)用程序

創(chuàng)建VS控制臺(tái)應(yīng)用程序,命名為T(mén)ranslateProject。

.NET Framework/.NET Core的都可以,甚至于Web應(yīng)用也行,因?yàn)檫@是Api操作。

3、編寫(xiě)程序并調(diào)試

post請(qǐng)求工具類(lèi)

創(chuàng)建一個(gè)http請(qǐng)求接口幫助類(lèi)(WebRequest方式API請(qǐng)求方式(Post/Get)),命名為 HttpTool(自定義命名),大家可以在網(wǎng)上找一個(gè),或者用下面的:

/// <summary>
        /// post請(qǐng)求方式
        /// </summary>
        /// <param name="url">請(qǐng)求路徑</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:"))
                {
                    //要調(diào)用https的API接口,一定要加這句
                    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
                }

                Encoding encoding = Encoding.UTF8;  //轉(zhuǎn)譯編碼
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//創(chuàng)建
                request.Method = "POST";   //post請(qǐng)求的一些標(biāo)準(zhǔn)參數(shù)配置
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                request.ContentType = ContentType;

                //自定義頭部?jī)?nèi)容
                if (!string.IsNullOrEmpty(token))
                {
                    request.Headers.Add(HttpRequestHeader.Authorization, token);  //添加token
                }

                byte[] buffer = encoding.GetBytes(parms);  //譯編傳入的值格式化為可識(shí)別
                request.ContentLength = buffer.Length;  //post傳值參數(shù)標(biāo)配
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //嘗試獲得要請(qǐng)求的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 

直接看文檔就可以了,我這里把代碼展示一下,大家拷貝一下就可以執(zhí)行。

如下代碼和展示:

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
    {
        // 百度云中開(kāi)通對(duì)應(yīng)服務(wù)應(yīng)用的 API Key 建議開(kāi)通應(yīng)用的時(shí)候多選服務(wù)(百度云應(yīng)用的AK)
        private static String clientId = "qNldYXXtIr2pKBQsv242369Y";
        // 百度云中開(kāi)通對(duì)應(yīng)服務(wù)應(yīng)用的 Secret Key(百度云應(yīng)用的SK)
        private static String clientSecret = "L6gemOD3pM2PmafyQUBnXpCGEemk18mR";
        static void Main(string[] args)
        {
            try
            {
                #region 文本翻譯-通用版

                //獲取Token:詳細(xì)見(jiàn) 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("未知錯(cuò)誤:獲取Token失敗");
                        Console.ReadKey();
                        return;
                    }

                    string URL = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token="+ TokenEntity.access_token;
                    string q = "文本翻譯是百度翻譯依托領(lǐng)先的自然語(yǔ)言處理技術(shù)推出的在線文本翻譯服務(wù),可支持中、英、日、韓等200+語(yǔ)言互譯,100+語(yǔ)種自動(dòng)檢測(cè)。";
                    string parms = "{ \"q\":\"" + q + "\",\"from\":\"zh\",\"to\":\"en\"}"; //from:翻譯源語(yǔ)言     to:翻譯目標(biāo)語(yǔ)言     q:請(qǐng)求翻譯內(nèi)容

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

        //調(diào)用getAccessToken()獲取的 access_token建議根據(jù)expires_in 時(shí)間 設(shè)置緩存
        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

詞典版和通用版大體相同,大家拷貝上面的更換一下請(qǐng)求的URL即可。

文本翻譯-圖片翻譯

圖片翻譯API文檔:https://cloud.baidu.com/doc/MT/s/mki483xpu

這里就不貼代碼了,大家點(diǎn)擊api文檔參照試試,自己做出來(lái)樂(lè)趣更高哦。

總結(jié)

看到這里就介紹了,是不是感覺(jué)很簡(jiǎn)單,就注冊(cè)一個(gè)百度云平臺(tái)的賬號(hào),創(chuàng)建相關(guān)的api key應(yīng)用,

然后對(duì)照開(kāi)發(fā)文檔進(jìn)行編寫(xiě)測(cè)試,放在項(xiàng)目中很容易移植,快去試試吧。

以上就是C#基于百度AI實(shí)現(xiàn)機(jī)器翻譯功能的詳細(xì)內(nèi)容,更多關(guān)于C#機(jī)器翻譯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

体育| 明水县| 鹤壁市| 高平市| 天气| 富裕县| 九龙城区| 永康市| 扶余县| 恭城| 宝清县| 林西县| 蒙自县| 沂水县| 同江市| 九龙城区| 石阡县| 青浦区| 夏邑县| 眉山市| 大埔区| 黔南| 湘潭市| 宁河县| 阜阳市| 西华县| 老河口市| 仪征市| 姚安县| 荆州市| 抚顺县| 嵊州市| 青龙| 张家港市| 邢台市| 西和县| 义马市| 九江县| 柏乡县| 黔西县| 瑞安市|