OSMeteorTranslationAPI(百度,有道)对比

原创 2013年12月03日 14:16:04

今天做翻译的时候分别用百度和有道的api做了对比

首先声明一下,百度和有道的APIKEY需要自己去申请

界面:

 

image

 

 

代码:

复制代码
private void btn_translation_Click(object sender, EventArgs e)
        {
            //string baiduKey = "aMkc5Tcs2sGoTM56XGL1FlQc";
            //string bnaiduSecretKey = "Uu8669USMPROf5YsNVGW3logz19hNrV9";
            // string rs = BaiduTans_Get(baiduKey, this.richTxt_src.Text, "zh", "en");
           if(!NetworkIsCoon())
           {
               this.label2.Text="Not connection NetWork!!";
               return;
           }
            if (this.checkBox_isbilingual.Checked)
            {
                this.richTextBox1.Text = baiduTransSrcAndDet("zh", "en");
            }else{
            this.richTextBox1.Text = baiduTrans("zh","en");
            }
        }
        private void btn_translation_en_zh_Click(object sender, EventArgs e)
        {
            if (!NetworkIsCoon())
            {
                this.label2.Text = "Not connection NetWork!!";
                return;
            }
             if (this.checkBox_isbilingual.Checked)
            {
                this.richTextBox1.Text = baiduTransSrcAndDet("en", "zh");
            }else
            this.richTextBox1.Text = baiduTrans("en", "zh");
        }
        public string baiduTrans(string Srcstr, string Tostr)
        {
            string baiduKey = "百度KEY";
            string bnaiduSecretKey = "百度KEY";
            string rs = BaiduTans_Get(baiduKey, this.richTxt_src.Text, Srcstr, Tostr);
           return gebaidutrs(rs);
        }
        public string baiduTransSrcAndDet(string Srcstr, string Tostr)
        {
            string baiduKey = "百度KEY";
            string bnaiduSecretKey = "百度KEY";
            string rs = BaiduTans_Get(baiduKey, this.richTxt_src.Text, Srcstr, Tostr);
            return gebaidutrsSrcAndDet(rs);
        }
        private string BaiduTans_Get(string client_id, string q, string from, string to) 
        {
            string ApiUrl = @"http://openapi.baidu.com/public/2.0/bmt/translate?client_id={0}&q={1}&from={2}&to={3}";
            string url = string.Format(ApiUrl, client_id, q, from, to);
            WebClient wc = new WebClient();
            wc.Encoding = System.Text.Encoding.UTF8;//定义对象语言
            //return UnicodeConvert.ConvertUnicodeStringToChinese(wc.DownloadString(url));
            return wc.DownloadString(url);
        }
        public string gebaidutrs(string strjson)
        {
            int langth = strjson.Length;
            int index3 = 38;
            string jsonText = strjson.Substring(index3, langth - index3 - 1);
            JavaScriptSerializer jser = new JavaScriptSerializer();
            List<baiduJson> persons = jser.Deserialize<List<baiduJson>>(jsonText);
            string rs = "";
            foreach (baiduJson item in persons)
            {
                rs += item.dst + "\n";
            }
            return rs;
        }
        public string gebaidutrsSrcAndDet(string strjson)
        {
            int langth = strjson.Length;
            int index3 = 38;
            string jsonText = strjson.Substring(index3, langth - index3 - 1);
            JavaScriptSerializer jser = new JavaScriptSerializer();
            List<baiduJson> persons = jser.Deserialize<List<baiduJson>>(jsonText);
            string rs = "";
            foreach (baiduJson item in persons)
            {
                rs += item.dst + " [" + item.src + "] " + "\n";
                //rs += item.src + "\n";
            }
            return rs;
        }
        public class baiduJson
        {
            public string src { get; set; }
            public string dst { get; set; }
        }
        private void btn_youdao_Click(object sender, EventArgs e)
        {
            if (!NetworkIsCoon())
            {
                this.label2.Text = "Not connection NetWork!!";
                return;
            }
            string youdaoApiKey = "有道KEY";
            string keyfrom = "O有道KEY";
            string srcTxt = this.richTxt_src.Text;
           string rs= youdaoTans_Get(keyfrom, youdaoApiKey, srcTxt);

           this.richTextBox1.Text = getyoudaoStrs(rs);
        }
        private string youdaoTans_Get(string keyfrom, string youdaoApiKey, string srcTxt)
        {
            string ApiUrlxml = @"http://fanyi.youdao.com/openapi.do?keyfrom=" + keyfrom + "&key=" + youdaoApiKey + "&type=data&doctype=xml&version=1.1&q=" + srcTxt + "";
            string ApiUrljson = @"http://fanyi.youdao.com/openapi.do?keyfrom="+keyfrom+"&key="+youdaoApiKey+"&type=data&doctype=json&version=1.1&q="+srcTxt+"";
            string ApiUrljsonp=@"http://fanyi.youdao.com/openapi.do?keyfrom=OSMeteor&key=1102266192&type=data&doctype=jsonp&callback=show&version=1.1&q=API";
            WebClient wc = new WebClient();
            wc.Encoding = System.Text.Encoding.UTF8;//定义对象语言
            string rs = wc.DownloadString(ApiUrljson);
                //Byte[] pageData = wc.DownloadData(ApiUrljson)
                //    rs=System.Text.Encoding.UTF8.GetBytes(pageData)
            //wc.DownloadStringAsync(ApiUrljson);
            //return UnicodeConvert.ConvertUnicodeStringToChinese(wc.DownloadString(ApiUrlxml));
            return rs;
            //return wc.DownloadString(ApiUrljson);
        }
       
        public string gebaidutrs2(string strjson)
        {
            int index = strjson.IndexOf("\",\"dst\":\"");
            string srcTxt = this.richTxt_src.Text;
            int index2 = 47 + srcTxt.Length + 9;
            int langth = strjson.Length;
            //string rs = strjson.Substring(index2, langth - index2-4);
            string rs = strjson.Substring(index2, langth - index2-4);
           
           
            return rs;
            //return strjson;
        }        
        public string getyoudaoStrs(string strjson){
            string srcTxt = this.richTxt_src.Text;
            int index2 = 17;
            int langth = strjson.Length - srcTxt.Length - 27;
            string str=",\"query\":\"";
            int detlength = strjson.IndexOf(str)-3;
            //未处理失败的状况
            //string rs = strjson.Substring(index2, langth - index2 - 1);
            string rs = strjson.Substring(index2, detlength-17);
           ////string rs2= rs.Replace("\",\"", "\078");
           //string strrs3 = "";
           //string[] strlist = Regex.Split(rs, "\",\"", RegexOptions.IgnoreCase);
           //foreach (string item in strlist)
           //{
           //    strrs3 += item+"\n";
           //}
           ////StringBuilder rss = new StringBuilder();
           //// rs.Replace
           //return strrs3;
            return rs;
            //return strjson;
        }
        public class youdaoJson {
            public string translation { get; set; }
            public string query { get; set; }
            public string errorCode { get; set; }
        }
复制代码

 

各种API地址:包括有道、百度: http://blog.csdn.net/osmeteor/article/details/17023559

结论:

在使用百度API的时候最好不要使用自动 ,比如百度APi:在英文翻译成中文的时候自动翻译的时候会这样

image

所以还是别偷懒:尽量别用aoto。

但是对有道API处理的时候:这个理对中文翻译成英文的是换行没有出来很好,

image

 

我们在看看有道怎么处理换行的 ,这里是有道返回的结果

image

 

但是我用有道在线翻译的时候又是正常的,可能我不了解内部转换算法吧

image

希望有这方面研究的同学看到之后能给予指点。。。

也希望百度和有道提供更好的翻译API。。。


作者:Meteor 
出处:http://www.cnblogs.com/osmeteor/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

相关文章推荐

谷歌、百度、搜狗、有道搜索个人之比较

今天一时兴起,想对经常使用的四大搜索网站做一下个人化的体验比较。   一、 前言   这是一个纯粹个人做的非权威式比较分析。所以,只代表个人观点。这里没有什么权威数据,同时也没有“广告”。 ...
  • zqlovlg
  • zqlovlg
  • 2012年09月18日 23:52
  • 4088

百度有道雅虎的实习面试经历

某度(某度知道)的面试经历: 在水木看到的招聘信息,于是就投了下试试。然后过了几天接到电话让我去面试。 竟然不是在我所知道的上地九街的那个百度大厦。。。等不到公交只能打的到上地五街的百度了。。。(搞两...

有道词典的划词搜索功能加入生成的百度链接

项目:在《有道词典》的划词搜索里增加百度搜索链接。 概述:有道词典有几个版本增加一个功能,在划词后,可以查看有道网页搜索的结果,很方便。6以后的版本这个功能消失了,所以一直在使用5.X版本。目前有道搜...

chrome 有道智能翻译 2.0 插件 .crx

  • 2017年11月10日 14:22
  • 55KB
  • 下载

简易有道词典

  • 2017年09月06日 22:23
  • 7.66MB
  • 下载

利用Python3.6制作带有简单的带有界面的有道翻译小程序

本人使用的是Python3.6(32bit),在win10上运行的 代码如下:from tkinter import * import urllib.request import urllib....
  • bjxdbz
  • bjxdbz
  • 2017年06月28日 20:09
  • 418

有道翻译工具

  • 2015年07月03日 13:05
  • 27.29MB
  • 下载

有道云笔记

  • 2011年12月13日 11:29
  • 11.61MB
  • 下载

有道云笔记Markdown图片链接解决办法

有道云笔记Markdown图片链接解决办法引言在Markdown文档的编辑中,图片需要一个资源地址,你可以使用网络链接也可以使用本地路径,但是本地路径在你更换电脑,或者云端浏览的时候就会失去作用,无法...

有道云笔记

  • 2013年04月15日 09:46
  • 14.89MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OSMeteorTranslationAPI(百度,有道)对比
举报原因:
原因补充:

(最多只允许输入30个字)