【go语言】两个翻译引擎来提高响应速度
目录
一、直接调用两个翻译函数
1.完整代码
2.运行时间
二、并行后
1.完整代码
2.运行时间
一、直接调用两个翻译函数
1.完整代码
package mainimport ("bytes""encoding/json""fmt""io/ioutil""log""net/http"// "strings""os""time"
)type DictResponse struct {Words []struct {Source int `json:"source"`Text string `json:"text"`PosList []struct {Type int `json:"type"`Phonetics []struct {Type int `json:"type"`Text string `json:"text"`} `json:"phonetics"`Explanations []struct {Text string `json:"text"`Examples []struct {Type int `json:"type"`Sentences []struct {Text string `json:"text"`TransText string `json:"trans_text"`} `json:"sentences"`} `json:"examples"`Synonyms []interface{} `json:"synonyms"`} `json:"explanations"`Relevancys []interface{} `json:"relevancys"`} `json:"pos_list"`} `json:"words"`Phrases []interface{} `json:"phrases"`BaseResp struct {StatusCode int `json:"status_code"`StatusMessage string `json:"status_message"`} `json:"base_resp"`
}type DictRequest struct {Text string `json:"text"`Language string `json:"language"`
}type DictResponse2 struct {Rc int `json:"rc"`Wiki struct {KnownInLaguages int `json:"known_in_laguages"`Description struct {Source string `json:"source"`Target interface{} `json:"target"`} `json:"description"`ID string `json:"id"`Item struct {Source string `json:"source"`Target string `json:"target"`} `json:"item"`ImageURL string `json:"image_url"`IsSubject string `json:"is_subject"`Sitelink string `json:"sitelink"`} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En string `json:"en"`} `json:"prons"`Explanations []string `json:"explanations"`Synonym []string `json:"synonym"`Antonym []string `json:"antonym"`WqxExample [][]string `json:"wqx_example"`Entry string `json:"entry"`Type string `json:"type"`Related []interface{} `json:"related"`Source string `json:"source"`} `json:"dictionary"`
}type DictRequest2 struct {TransType string `json:"trans_type"`Source string `json:"source"`UserID string `json:"user_id"`
}func query2(word string) {client := &http.Client{}request := DictRequest2{TransType: "en2zh", Source: word}buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)if err != nil {log.Fatal(err)}req.Header.Set("Connection", "keep-alive")req.Header.Set("sec-ch-ua", `" Not A;Brand";v="99", "Chromium";v="8"`)req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/30")req.Header.Set("app-name", "xy")req.Header.Set("Content-Type", "application/json;charset=UTF-8")req.Header.Set("Accept", "application/json, text/plain, */*")req.Header.Set("os-type", "web")req.Header.Set("X-Authorization", "token:qgemv4jr1y38jyq6vhvi")req.Header.Set("Origin", "https://fanyi.caiyunapp.com")req.Header.Set("Sec-Fetch-Site", "cross-site")req.Header.Set("Sec-Fetch-Mode", "cors")req.Header.Set("Sec-Fetch-Dest", "empty")req.Header.Set("Referer", "https://fanyi.caiyunapp.com/")req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse2 DictResponse2err = json.Unmarshal(bodyText, &dictResponse2)if err != nil {log.Fatal(err)}fmt.Println("----------彩云翻译----------")fmt.Println(word, "UK:", dictResponse2.Dictionary.Prons.En, "US", dictResponse2.Dictionary.Prons.EnUs)for _, item := range dictResponse2.Dictionary.Explanations {fmt.Println(item)}fmt.Println("")
}func query(word string) {client := &http.Client{}request := DictRequest{Text: word, Language: "en"}buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://translate.volcengine.com/web/dict/match/v1/?msToken=&X-Bogus=DFSzswVLQDcCwINsSW/NZM9WX7jy&_signature=_02B4Z6wo000015fhpVAAAIDDF-NfE7sRI6-X4aHAAIeXgfG9te8myjutgShQB8jqUDatCy40MOwV-0bqoPUXu9GDqeo.aQKg0Wf1bxIiw8tkAhWWJy3ifEthBdCgN69zoNwnBh2B5hsm-2NKb1", data)if err != nil {log.Fatal(err)}req.Header.Set("authority", "translate.volcengine.com")req.Header.Set("sec-ch-ua", `" Not A;Brand";v="99", "Chromium";v="8"`)req.Header.Set("accept", "application/json, text/plain, */*")req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/30")req.Header.Set("content-type", "application/json")req.Header.Set("origin", "https://translate.volcengine.com")req.Header.Set("sec-fetch-site", "same-origin")req.Header.Set("sec-fetch-mode", "cors")req.Header.Set("sec-fetch-dest", "empty")req.Header.Set("referer", "https://translate.volcengine.com/translate?category=&home_language=zh&source_language=en&target_language=zh&text=hello")req.Header.Set("accept-language", "zh-CN,zh;q=0.9")req.Header.Set("cookie", "x-jupiter-uuid=16519923780453448; i18next=zh-CN; s_v_web_id=verify_1eac8644bba5cc2fca342fbda9d310d2; _tea_utm_cache_2018=undefined; ttcid=0622e7c8207f4922b25f1e677099901633; tt_scid=NKQPTZgJZyxBCL8qyT-pnS71RE74xJ3XV-FO8r7QN04uJ2kj8Q240-UNUSPeo1VN1aff")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println("----------火山翻译----------")fmt.Println(word, "UK:", dictResponse.Words[0].PosList[0].Phonetics[0].Text, "US:", dictResponse.Words[0].PosList[0].Phonetics[1].Text)for _, word := range dictResponse.Words {for _, posList := range word.PosList {for _, explanations := range posList.Explanations {fmt.Printf(explanations.Text)}}}fmt.Println("")
}func main() {start := time.Now()if len(os.Args) != 2 {fmt.Fprintln(os.Stderr, `usage: simpleDict WORDexample: simpleDict hello`)os.Exit(1)}word := os.Args[1]// wg := sync.WaitGroup{}query(word)query2(word)finish := time.Now()fmt.Println("run time:", finish.Sub(start))
}
2.运行时间
二、并行后
1.完整代码
package mainimport ("bytes""encoding/json""fmt""io/ioutil""log""net/http""sync"// "strings""os""time"
)type DictResponse struct {Words []struct {Source int `json:"source"`Text string `json:"text"`PosList []struct {Type int `json:"type"`Phonetics []struct {Type int `json:"type"`Text string `json:"text"`} `json:"phonetics"`Explanations []struct {Text string `json:"text"`Examples []struct {Type int `json:"type"`Sentences []struct {Text string `json:"text"`TransText string `json:"trans_text"`} `json:"sentences"`} `json:"examples"`Synonyms []interface{} `json:"synonyms"`} `json:"explanations"`Relevancys []interface{} `json:"relevancys"`} `json:"pos_list"`} `json:"words"`Phrases []interface{} `json:"phrases"`BaseResp struct {StatusCode int `json:"status_code"`StatusMessage string `json:"status_message"`} `json:"base_resp"`
}type DictRequest struct {Text string `json:"text"`Language string `json:"language"`
}type DictResponse2 struct {Rc int `json:"rc"`Wiki struct {KnownInLaguages int `json:"known_in_laguages"`Description struct {Source string `json:"source"`Target interface{} `json:"target"`} `json:"description"`ID string `json:"id"`Item struct {Source string `json:"source"`Target string `json:"target"`} `json:"item"`ImageURL string `json:"image_url"`IsSubject string `json:"is_subject"`Sitelink string `json:"sitelink"`} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En string `json:"en"`} `json:"prons"`Explanations []string `json:"explanations"`Synonym []string `json:"synonym"`Antonym []string `json:"antonym"`WqxExample [][]string `json:"wqx_example"`Entry string `json:"entry"`Type string `json:"type"`Related []interface{} `json:"related"`Source string `json:"source"`} `json:"dictionary"`
}type DictRequest2 struct {TransType string `json:"trans_type"`Source string `json:"source"`UserID string `json:"user_id"`
}func query2(word string,wg *sync.WaitGroup) {client := &http.Client{}request := DictRequest2{TransType: "en2zh", Source: word}defer wg.Done()buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://api.interpreter.caiyunai.com/v1/dict", data)if err != nil {log.Fatal(err)}req.Header.Set("Connection", "keep-alive")req.Header.Set("sec-ch-ua", `" Not A;Brand";v="99", "Chromium";v="8"`)req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/30")req.Header.Set("app-name", "xy")req.Header.Set("Content-Type", "application/json;charset=UTF-8")req.Header.Set("Accept", "application/json, text/plain, */*")req.Header.Set("os-type", "web")req.Header.Set("X-Authorization", "token:qgemv4jr1y38jyq6vhvi")req.Header.Set("Origin", "https://fanyi.caiyunapp.com")req.Header.Set("Sec-Fetch-Site", "cross-site")req.Header.Set("Sec-Fetch-Mode", "cors")req.Header.Set("Sec-Fetch-Dest", "empty")req.Header.Set("Referer", "https://fanyi.caiyunapp.com/")req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse2 DictResponse2err = json.Unmarshal(bodyText, &dictResponse2)if err != nil {log.Fatal(err)}fmt.Println("----------彩云翻译----------")fmt.Println(word, "UK:", dictResponse2.Dictionary.Prons.En, "US", dictResponse2.Dictionary.Prons.EnUs)for _, item := range dictResponse2.Dictionary.Explanations {fmt.Println(item)}fmt.Println("")
}func query(word string,wg *sync.WaitGroup) {client := &http.Client{}request := DictRequest{Text: word, Language: "en"}defer wg.Done()buf, err := json.Marshal(request)if err != nil {log.Fatal(err)}var data = bytes.NewReader(buf)req, err := http.NewRequest("POST", "https://translate.volcengine.com/web/dict/match/v1/?msToken=&X-Bogus=DFSzswVLQDcCwINsSW/NZM9WX7jy&_signature=_02B4Z6wo000015fhpVAAAIDDF-NfE7sRI6-X4aHAAIeXgfG9te8myjutgShQB8jqUDatCy40MOwV-0bqoPUXu9GDqeo.aQKg0Wf1bxIiw8tkAhWWJy3ifEthBdCgN69zoNwnBh2B5hsm-2NKb1", data)if err != nil {log.Fatal(err)}req.Header.Set("authority", "translate.volcengine.com")req.Header.Set("sec-ch-ua", `" Not A;Brand";v="99", "Chromium";v="8"`)req.Header.Set("accept", "application/json, text/plain, */*")req.Header.Set("sec-ch-ua-mobile", "?0")req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/30")req.Header.Set("content-type", "application/json")req.Header.Set("origin", "https://translate.volcengine.com")req.Header.Set("sec-fetch-site", "same-origin")req.Header.Set("sec-fetch-mode", "cors")req.Header.Set("sec-fetch-dest", "empty")req.Header.Set("referer", "https://translate.volcengine.com/translate?category=&home_language=zh&source_language=en&target_language=zh&text=hello")req.Header.Set("accept-language", "zh-CN,zh;q=0.9")req.Header.Set("cookie", "x-jupiter-uuid=16519923780453448; i18next=zh-CN; s_v_web_id=verify_1eac8644bba5cc2fca342fbda9d310d2; _tea_utm_cache_2018=undefined; ttcid=0622e7c8207f4922b25f1e677099901633; tt_scid=NKQPTZgJZyxBCL8qyT-pnS71RE74xJ3XV-FO8r7QN04uJ2kj8Q240-UNUSPeo1VN1aff")resp, err := client.Do(req)if err != nil {log.Fatal(err)}defer resp.Body.Close()bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println("----------火山翻译----------")fmt.Println(word, "UK:", dictResponse.Words[0].PosList[0].Phonetics[0].Text, "US:", dictResponse.Words[0].PosList[0].Phonetics[1].Text)for _, word := range dictResponse.Words {for _, posList := range word.PosList {for _, explanations := range posList.Explanations {fmt.Printf(explanations.Text)}}}fmt.Println("")
}func main() {start := time.Now()if len(os.Args) != 2 {fmt.Fprintln(os.Stderr, `usage: simpleDict WORDexample: simpleDict hello`)os.Exit(1)}word := os.Args[1]var wg sync.WaitGroup// wg := sync.WaitGroup{}wg.Add(2)go query(word, &wg)go query2(word, &wg)wg.Wait()finish := time.Now()fmt.Println("run time:",finish.Sub(start))
}
2.运行时间
明显并行后的运行时间更快
【go语言】两个翻译引擎来提高响应速度相关推荐
- 利用Google在线翻译引擎制作自己的多国语言翻译机
本文介绍如何利用Google在线翻译引擎来制作自己的多国语言翻译器.本程序利用Google的在线翻译引擎实现汉语到英语,英语到汉语,英语到日语的单词,整句的翻译.因为是在命令行运行,不支持/n,不能对 ...
- (转)利用Google在线翻译引擎制作自己的多国语言翻译机
出处:http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post 本文介绍如何利用Google在 ...
- 太空战机c语言实验报告,c语言课程设计_太空战机提高篇.doc
c语言课程设计_太空战机提高篇 C语言课程设计--太空战机 一.游戏介绍 太空战机是玩家用键盘控制战机移动并发射子弹,消灭敌方的战机.敌方战机从右到左移动,同时上下浮动.同时隔一定的时间发射子弹,我方 ...
- 美剧字幕组翻译谈如何提高英语听力口语
美剧字幕组翻译谈如何提高英语听力口语 本文可能会涉及到和九年义务教育里面相悖的地方,建议遵照老师的来,那啥听俺的结果考不及格,别找漩涡鸣人来对付俺啊. 关于英语听力提高(Listeningpart) ...
- c语言两个浮点数相加_C语言中两个浮点数或双精度数的模数
c语言两个浮点数相加 As we know that modules also known as the remainder of the two numbers can be found using ...
- Microsoft 离线翻译引擎介绍
随着全球化进程不断加速,中外企业的融合越来越频繁.如何打破语言的限制也成为企业最头疼问题,微软Azure有很强的翻译引擎其中中文到英文的翻译已经达到了人类的翻译水平. 但是在某些场景下,用户无法连接到 ...
- Rubber Translator一款更人性化的免费文献翻译工具,支持多翻译引擎
前言 不少小伙伴应该都有阅读或翻译外文文献的需要,专门的文献翻译工具也是必须品. 但多数翻译软件的操作流程是我们选中想要翻译的文本,然后点击出现的翻译图标或通过快捷键来翻译,这对于大量翻译的工作来说很 ...
- 硬核测评,谷歌翻译被碾压!全球首个翻译引擎进化归来,“细节狂魔”搞定方言文言文...
作者:刘俊寰 来源:大数据文摘 近期,一款在线机器翻译软件在日本大火. 这款翻译软件名叫DeepL,大火的原因正是因为它工作太负责了,翻译得太过准确,在日本引起了热议. 从日本网友的民间测评来看,不仅 ...
- 帮我用java写一个维吾尔语和汉语的翻译引擎
非常抱歉,我不能帮您写代码.但是我可以为您提供一些指导方针. 首先,您可以使用维吾尔语和汉语之间的翻译数据,比如维吾尔语和汉语的词典数据或者翻译过的文章.您还可以使用第三方翻译 API 来获取翻译结果 ...
最新文章
- docker中部署redis主从模式
- Java自带的常用工具
- 声音的播放——MCI的使用
- 静态函数一个有用的设计模式
- Boost:计时系的测试
- springboot主线程_Springboot对多线程的支持详解
- 如何让你在开发者工具中查看源代码有语法高亮和暗黑主题的效果
- 【HDU - 6514】Monitor(二维差分,前缀和)
- 腾讯视频免费下载安装_怎样下载腾讯视频里的视频
- android 防止重复启动app,Android应用开发Android 防止启动页面(SplashActivity)被多次启动...
- java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件
- 相乘的c语言,c语言矩阵相乘
- IDEA设置生成带注释的getter和setter解决方案 (图文教程)
- 海蜘蛛理由器做端口映射
- chrome 离线安装包下载链接
- 第四章 INI配置——《跟我学Shiro》[张开涛]
- Github开源人体姿态识别项目OpenPose中文文档
- VRay Next for SketchUp 赋予材质常见问题
- java liveness_存活探针(liveness probe)
- r910服务器增加内存,dellr910服务器硬件手册及安装方法