用python写的翻译器
一、靈感來源
1、最近在學習python爬蟲,發(fā)現(xiàn)現(xiàn)在的百度翻譯限制爬蟲了,在網上找到了一些文檔,說現(xiàn)在都限制反爬,讓我一頓失望,爬蟲的時候會報:{"errno":997,"errmsg":"\u672a\u77e5\u9519\u8bef","query":"he","from":"en","to":"zh","error":997}的錯誤;但是還是讓我找到了解決方案,有位博主用5行代碼寫出了對應調用對應接口的程序,我是特別膜拜,就大樹底下好乘涼,你懂得,借鑒借鑒。這邊奉上對應博主文章鏈接,有興趣的伙伴,可以從他的文檔開始入手。
【python】5行代碼實現(xiàn)百度翻譯api接口調用
? 【python】5行代碼實現(xiàn)百度翻譯api接口調用_XavierJ的博客-CSDN博客
- 運用申請的百度API自己開發(fā)一個本地的翻譯軟件
通用翻譯API接入文檔
歡迎使用通用翻譯API,本文檔將指導您如何快速接入。
如何使用通用翻譯API?
接入方式
通用翻譯API通過 HTTP 接口對外提供多語種互譯服務。您只需要通過調用通用翻譯API,傳入待翻譯的內容,并指定要翻譯的源語言(支持源語言語種自動檢測)和目標語言種類,就可以得到相應的翻譯結果。
通用翻譯API HTTPS 地址:
https://fanyi-api.baidu.com/api/trans/vip/translate
簽名生成方法
簽名是為了保證調用安全,使用 MD5 算法生成的一段字符串,生成的簽名長度為 32 位,簽名中的英文字符均為小寫格式。
生成方法:
Step1.?將請求參數(shù)中的 APPID(appid), 翻譯 query(q,注意為UTF-8編碼),隨機數(shù)(salt),以及平臺分配的密鑰(可在管理控制臺查看) 按照 appid+q+salt+密鑰的順序拼接得到字符串 1。
Step2.?對字符串 1 做 md5 ,得到 32 位小寫的 sign。
注:
1. 待翻譯文本(q)需為 UTF-8 編碼;
2.?在生成簽名拼接 appid+q+salt+密鑰 字符串時,q 不需要做 URL encode,在生成簽名之后,發(fā)送 HTTP 請求之前才需要對要發(fā)送的待翻譯文本字段 q 做 URL encode;
3.如遇到報 54001 簽名錯誤,請檢查您的簽名生成方法是否正確,在對 sign 進行拼接和加密時,q 不需要做 URL encode,很多開發(fā)者遇到簽名報錯均是由于拼接 sign 前就做了 URL encode;
4.在生成簽名后,發(fā)送 HTTP 請求時,如果將 query 拼接在 url 上,需要對 query 做 URL encode。
輸入參數(shù)
請求方式: 可使用 GET 或 POST 方式,如使用 POST 方式,Content-Type 請指定為:application/x-www-form-urlencoded
字符編碼:統(tǒng)一采用 UTF-8 編碼格式
query 長度:為保證翻譯質量,請將單次請求長度控制在 6000 bytes以內(漢字約為輸入參數(shù)?2000 個)
| 字段名 | 類型 | 是否必填 | 描述 | 備注 |
| q | string | 是 | 請求翻譯query | UTF-8編碼 |
| from | string | 是 | 翻譯源語言 | 可設置為auto |
| to | string | 是 | 翻譯目標語言 | 不可設置為auto |
| appid | string | 是 | APP ID | 可在管理控制臺查看 |
| salt | string | 是 | 隨機數(shù) | 可為字母或數(shù)字的字符串 |
| sign | string | 是 | 簽名 | appid+q+salt+密鑰的MD5值 |
| 以下字段僅開通了詞典、TTS用戶需要填寫 | ||||
| tts | integer | 否 | 是否顯示語音合成資源 | 0-顯示1-不顯示 |
| dict | integer | 否 | 是否顯示詞典資源 | 0-顯示1-不顯示 |
| 以下字段僅開通了”我的術語庫“用戶需要填寫 | ||||
| action | integer | 否 | 判斷是否需要使用自定義術語干預API | 1-是0-否 |
輸出參數(shù)
返回的結果是json格式,包含以下字段:
| 字段名 | 類型 | 描述 | 備注 | |
| from | string | 源語言 | 返回用戶指定的語言,或者自動檢測出的語種(源語言設為 auto 時) | |
| to | string | 目標語言 | 返回用戶指定的目標語言 | |
| trans_result | array | 翻譯結果 | 返回翻譯結果,包括 src 和 dst 字段 | |
| trans_result.*.src | string | 原文 | 接入舉例中的“apple” | |
| trans_result.*dst | string | 譯文 | 接入舉例中的“蘋果” | |
| error_code | integer | 錯誤碼 | 僅當出現(xiàn)錯誤時顯示 | |
| 以下字段僅開通了詞典、TTS用戶可見 | ||||
| src_tts | string | 原文tts鏈接 | mp3格式,暫時無法指定發(fā)音 | |
| dst_tts | string | 譯文tts鏈接 | mp3格式,暫時無法指定發(fā)音 | |
| dict | string | 中英詞典資源 | 返回中文或英文詞典資源,包含音標,簡明釋義等內容 | |
接入舉例
例如:將英文單詞 apple 翻譯成中文:
請求參數(shù):
q=apple
from=en
to=zh
appid=2015063000000001(請?zhí)鎿Q為您的appid)
salt=1435660288(隨機碼)
平臺分配的密鑰: 12345678
生成簽名sign:
Step1. 拼接字符串1:
拼接appid=2015063000000001+q=apple+salt=1435660288+密鑰=12345678得到字符串1:“2015063000000001apple143566028812345678”
Step2. 計算簽名:(對字符串1做md5加密)
sign=md5(2015063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4
拼接完整請求:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
注:也可使用 POST 方式,如 POST 方式傳送,Content-Type 請指定為:application/x-www-form-urlencoded
語種列表
通用翻譯API支持語種數(shù)已達 201種,完整列表如下。其中,對于常見語種列表內的語種,所有用戶均可調用。對于非常見語種,僅企業(yè)已認證的尊享版用戶可調用,未認證的非尊享版用戶調用將返回錯誤。
源語言語種不確定時可設置為 auto,目標語言語種不可設置為 auto。但對于非常用語種,語種自動檢測可能存在誤差。
常見語種列表
| 名稱 | 代碼 | 名稱 | 代碼 | 名稱 | 代碼 |
| 自動檢測 | auto | 中文 | zh | 英語 | en |
| 粵語 | yue | 文言文 | wyw | 日語 | jp |
| 韓語 | kor | 法語 | fra | 西班牙語 | spa |
| 泰語 | th | 阿拉伯語 | ara | 俄語 | ru |
| 葡萄牙語 | pt | 德語 | de | 意大利語 | it |
| 希臘語 | el | 荷蘭語 | nl | 波蘭語 | pl |
| 保加利亞語 | bul | 愛沙尼亞語 | est | 丹麥語 | dan |
| 芬蘭語 | fin | 捷克語 | cs | 羅馬尼亞語 | rom |
| 斯洛文尼亞語 | slo | 瑞典語 | swe | 匈牙利語 | hu |
| 繁體中文 | cht | 越南語 | vie |
完整語種列表
| 中文首字母 | 名稱 | 代碼 | 語種檢測 | 名稱 | 代碼 | 語種檢測 | 名稱 | 代碼 | 語種檢測 |
| A | 阿拉伯語 | ara | 是 | 愛爾蘭語 | gle | 是 | 奧克語 | oci | 是 |
| 阿爾巴尼亞語 | alb | 是 | 阿爾及利亞阿拉伯語 | arq | 否 | 阿肯語 | aka | 否 | |
| 阿拉貢語 | arg | 否 | 阿姆哈拉語 | amh | 是 | 阿薩姆語 | asm | 是 | |
| 艾馬拉語 | aym | 否 | 阿塞拜疆語 | aze | 是 | 阿斯圖里亞斯語 | ast | 是 | |
| 奧塞梯語 | oss | 否 | 愛沙尼亞語 | est | 是 | 奧杰布瓦語 | oji | 否 | |
| 奧里亞語 | ori | 是 | 奧羅莫語 | orm | 否 | ||||
| B | 波蘭語 | pl | 是 | 波斯語 | per | 是 | 布列塔尼語 | bre | 是 |
| 巴什基爾語 | bak | 否 | 巴斯克語 | baq | 是 | 巴西葡萄牙語 | pot | 否 | |
| 白俄羅斯語 | bel | 是 | 柏柏爾語 | ber | 是 | 邦板牙語 | pam | 否 | |
| 保加利亞語 | bul | 是 | 北方薩米語 | sme | 否 | 北索托語 | ped | 否 | |
| 本巴語 | bem | 否 | 比林語 | bli | 否 | 比斯拉馬語 | bis | 否 | |
| 俾路支語 | bal | 否 | 冰島語 | ice | 是 | 波斯尼亞語 | bos | 是 | |
| 博杰普爾語 | bho | 否 | |||||||
| C | 楚瓦什語 | chv | 否 | 聰加語 | tso | 否 | |||
| D | 丹麥語 | dan | 是 | 德語 | de | 是 | 韃靼語 | tat | 是 |
| 撣語 | sha | 否 | 德頓語 | tet | 否 | 迪維希語 | div | 否 | |
| 低地德語 | log | 是 | |||||||
| E | 俄語 | ru | 是 | ||||||
| F | 法語 | fra | 是 | 菲律賓語 | fil | 是 | 芬蘭語 | fin | 是 |
| 梵語 | san | 否 | 弗留利語 | fri | 否 | 富拉尼語 | ful | 否 | |
| 法羅語 | fao | 否 | |||||||
| G | 蓋爾語 | gla | 否 | 剛果語 | kon | 否 | 高地索布語 | ups | 否 |
| 高棉語 | hkm | 是 | 格陵蘭語 | kal | 否 | 格魯吉亞語 | geo | 是 | |
| 古吉拉特語 | guj | 是 | 古希臘語 | gra | 否 | 古英語 | eno | 否 | |
| 瓜拉尼語 | grn | 否 | |||||||
| H | 韓語 | kor | 是 | 荷蘭語 | nl | 是 | 胡帕語 | hup | 否 |
| 哈卡欽語 | hak | 否 | 海地語 | ht | 否 | ||||
| 豪薩語 | hau | 否 | 黑山語 | mot | 否 | ||||
| J | 吉爾吉斯語 | kir | 否 | 加利西亞語 | glg | 是 | 加拿大法語 | frn | 否 |
| 加泰羅尼亞語 | cat | 是 | 捷克語 | cs | 是 | ||||
| K | 卡拜爾語 | kab | 是 | 卡納達語 | kan | 是 | 卡努里語 | kau | 否 |
| 卡舒比語 | kah | 否 | 康瓦爾語 | cor | 否 | 科薩語 | xho | 是 | |
| 科西嘉語 | cos | 否 | 克里克語 | cre | 否 | 克里米亞韃靼語 | cri | 否 | |
| 克林貢語 | kli | 否 | 克羅地亞語 | hrv | 是 | 克丘亞語 | que | 否 | |
| 克什米爾語 | kas | 否 | 孔卡尼語 | kok | 否 | 庫爾德語 | kur | 是 | |
| L | 拉丁語 | lat | 是 | 老撾語 | lao | 否 | 羅馬尼亞語 | rom | 是 |
| 拉特加萊語 | lag | 否 | 拉脫維亞語 | lav | 是 | 林堡語 | lim | 否 | |
| 林加拉語 | lin | 否 | 盧干達語 | lug | 否 | 盧森堡語 | ltz | 否 | |
| 盧森尼亞語 | ruy | 否 | 盧旺達語 | kin | 是 | 立陶宛語 | lit | 是 | |
| 羅曼什語 | roh | 否 | 羅姆語 | ro | 否 | 邏輯語 | loj | 否 | |
| M | 馬來語 | may | 是 | 緬甸語 | bur | 是 | 馬拉地語 | mar | 否 |
| 馬拉加斯語 | mg | 是 | 馬拉雅拉姆語 | mal | 是 | 馬其頓語 | mac | 是 | |
| 馬紹爾語 | mah | 否 | 邁蒂利語 | mai | 是 | 曼克斯語 | glv | 否 | |
| 毛里求斯克里奧爾語 | mau | 否 | 毛利語 | mao | 否 | 孟加拉語 | ben | 是 | |
| 馬耳他語 | mlt | 是 | 苗語 | hmn | 否 | ||||
| N | 挪威語 | nor | 是 | 那不勒斯語 | nea | 否 | 南恩德貝萊語 | nbl | 否 |
| 南非荷蘭語 | afr | 是 | 南索托語 | sot | 否 | 尼泊爾語 | nep | 是 | |
| P | 葡萄牙語 | pt | 是 | 旁遮普語 | pan | 是 | 帕皮阿門托語 | pap | 否 |
| 普什圖語 | pus | 否 | |||||||
| Q | 齊切瓦語 | nya | 否 | 契維語 | twi | 否 | 切羅基語 | chr | 否 |
| R | 日語 | jp | 是 | 瑞典語 | swe | 是 | |||
| S | 薩丁尼亞語 | srd | 否 | 薩摩亞語 | sm | 否 | 塞爾維亞-克羅地亞語 | sec | 否 |
| 塞爾維亞語 | srp | 是 | 桑海語 | sol | 否 | 僧伽羅語 | sin | 是 | |
| 世界語 | epo | 是 | 書面挪威語 | nob | 是 | 斯洛伐克語 | sk | 是 | |
| 斯洛文尼亞語 | slo | 是 | 斯瓦希里語 | swa | 是 | ||||
| 索馬里語 | som | 是 | 塞爾維亞語(西里爾) | src | 否 | ||||
| T | 泰語 | th | 是 | 土耳其語 | tr | 是 | 塔吉克語 | tgk | 是 |
| 泰米爾語 | tam | 是 | 他加祿語 | tgl | 是 | 提格利尼亞語 | tir | 否 | |
| 泰盧固語 | tel | 是 | 突尼斯阿拉伯語 | tua | 否 | 土庫曼語 | tuk | 否 | |
| W | 烏克蘭語 | ukr | 是 | 瓦隆語 | wln | 是 | 威爾士語 | wel | 是 |
| 文達語 | ven | 否 | 沃洛夫語 | wol | 否 | 烏爾都語 | urd | 是 | |
| X | 西班牙語 | spa | 是 | 希伯來語 | heb | 是 | 希臘語 | el | 是 |
| 匈牙利語 | hu | 是 | 西弗里斯語 | fry | 是 | 西里西亞語 | sil | 否 | |
| 希利蓋農語 | hil | 否 | 下索布語 | los | 否 | 夏威夷語 | haw | 否 | |
| 新挪威語 | nno | 是 | 西非書面語 | nqo | 否 | 信德語 | snd | 否 | |
| 修納語 | sna | 否 | 宿務語 | ceb | 否 | 敘利亞語 | syr | 否 | |
| 巽他語 | sun | 否 | |||||||
| Y | 英語 | en | 是 | 印地語 | hi | 是 | 印尼語 | id | 是 |
| 意大利語 | it | 是 | 越南語 | vie | 是 | 意第緒語 | yid | 否 | |
| 因特語 | ina | 否 | 亞齊語 | ach | 否 | 印古什語 | ing | 否 | |
| 伊博語 | ibo | 否 | 伊多語 | ido | 否 | 約魯巴語 | yor | 否 | |
| 亞美尼亞語 | arm | 是 | 伊努克提圖特語 | iku | 否 | ||||
| 伊朗語 | ir | 否 | |||||||
| Z | 中文(簡體) | zh | 是 | 中文(繁體) | cht | 是 | 中文(文言文) | wyw | 是 |
| 中文(粵語) | yue | 是 | 扎扎其語 | zaz | 否 | 中古法語 | frm | 否 | |
| 祖魯語 | zul | 否 | 爪哇語 | jav | 否 | ||||
錯誤碼列表
當翻譯結果無法正常返回時,請參考下表處理:
| 錯誤碼 | 含義 | 解決方案 |
| 52000 | 成功 | |
| 52001 | 請求超時 | 請重試 |
| 52002 | 系統(tǒng)錯誤 | 請重試 |
| 52003 | 未授權用戶 | 請檢查appid是否正確或者服務是否開通 |
| 54000 | 必填參數(shù)為空 | 請檢查是否少傳參數(shù) |
| 54001 | 簽名錯誤 | 請檢查您的簽名生成方法 |
| 54003 | 訪問頻率受限 | 請降低您的調用頻率,或進行身份認證后切換為高級版/尊享版 |
| 54004 | 賬戶余額不足 | 請前往管理控制臺為賬戶充值 |
| 54005 | 長query請求頻繁 | 請降低長query的發(fā)送頻率,3s后再試 |
| 58000 | 客戶端IP非法 | 檢查個人資料里填寫的IP地址是否正確,可前往開發(fā)者信息-基本信息修改 |
| 58001 | 譯文語言方向不支持 | 檢查譯文語言是否在語言列表里 |
| 58002 | 服務當前已關閉 | 請前往管理控制臺開啟服務 |
| 90107 | 認證未通過或未生效 | 請前往我的認證查看認證進度 |
詞典、語音合成資源
詞典和語音合成資源為企業(yè)尊享版用戶專屬增值服務。如需使用,請先進行企業(yè)認證并開通尊享版服務,之后在開發(fā)者信息—通用翻譯API—服務信息處申請開通詞典或語音合成資源,請詳細注明您的使用場景,審核通過后即可使用。
資源開通后,API 翻譯結果中將默認附帶 dict(詞典)和 tts(語音合成)字段,僅對中英、英中互譯有效。
詞典資源:
詞典分中英詞典,由于每個詞屬性不同,詞典結果不一定包含所有部分。
如源語言為中文,詞典數(shù)據(jù)包括:拼音、詞性、中文釋義、英文釋義、近義詞等資源。
如源語言為英文,詞典數(shù)據(jù)包括:英文釋義、中文釋義、音標、核心詞匯類別等。
注:單個 query 需為詞、詞組或短語,如 query 為句子,則 dict 字段為空。
語音合成資源:
語音合成資源包含 query 原文、譯文的發(fā)音,以 mp3 文件格式提供。
注:單個query內不支持分段,只有1段且字符數(shù)量不超過200的query才會返回tts字段。
自定義術語庫
自定義術語庫是百度翻譯最新推出的 API 增值服務,如果您認為通用翻譯API對于某些術語翻譯不準確,可在“管理控制臺-我的術語庫”頁面填寫您認為正確的原文和譯文,啟用術語庫,并在接口 URL 增加“&action=1”,即可在翻譯結果中看到干預效果(提交后需等待 10 分鐘方可生效)。
需要提醒您的是:因翻譯模型并非對術語的一一替換,而是將您填寫的術語翻譯與原翻譯進行對比和計算。如您填寫的翻譯與原譯文差異過大,則可能導致干預后結果有錯亂。此外,術語干預僅適用于專有名詞、術語的自定義,目前暫不支持針對 HTML 代碼(如<p> <div>)原樣輸出,即:您暫時無法在原文和譯文都填寫英文單詞“text”。
常見問題:
1. 如何在一次請求中翻譯多個單詞或者多段文本?
您可以在發(fā)送的字段 q 中用換行符(在多數(shù)編程語言中為轉義符號 \n。其中 \n 是需要能被程序解析出來的換行符而不是字符串 \n),您可以用換行符來分隔要翻譯的多個單詞或者多段文本,這樣您就能得到多段文本獨立的翻譯結果了。注意在發(fā)送請求之前需對 q 字段做 URL encode!
2. 什么是URL encode?
網絡標準RFC 1738規(guī)定了URL中只能使用英文字母、阿拉伯數(shù)字和某些標點符號,不能使用其他文字和符號。如果您需要翻譯的文本里面出現(xiàn)了不在該規(guī)定范圍內的字符(比如中文),需要通過URL encode將需要翻譯的文本做URL編碼才能發(fā)送HTTP請求。大部分編程語言都有現(xiàn)成的URL encode函數(shù),具體使用方法可以針對您使用的編程語言自行搜索。
3. 通用翻譯API中,字符數(shù)量如何統(tǒng)計?
字符數(shù)量的統(tǒng)計以翻譯的源語言字符長度為標準。一個漢字、一個英文字母、一個標點符號等均記為一個字符??崭瘛tml標簽等均計入在內。
4. 單次翻譯請求是否有字符數(shù)限制?
為保證您的使用體驗,請將單次翻譯文本長度限定為6000字節(jié)以內(漢字約為2000個字符)。此外,高峰時期單次請求文本過長或將導致翻譯超時。您可將query分多次請求。
5. 為什么我的請求總是返回簽名錯誤(錯誤碼54001)?
54001表示簽名錯誤,請檢查按照如下步驟檢查您的簽名生成方法是否正確:
1. appid+q+salt+密鑰 拼接成的字符串做MD5得到32位小寫的sign,確保要翻譯的文本q為UTF8格式;
2. 在生成簽名拼接 appid+q+salt+密鑰 字符串時,q不需要做URL encode,在生成簽名之后,發(fā)送HTTP請求之前才需要對要發(fā)送的待翻譯文本字段q做URL encode。很多開發(fā)者遇到簽名報錯均是由于拼接sign前就做了URL encode,或在拼接url時對query做了兩次urlencode。如有不明白可前往 https://tool.chinaz.com/tools/urlencode.aspx 驗證;
3. 如果您無法確認自己生成簽名的結果是否正確,可以將您生成的簽名結果和在MD5在線加密 - MD5加密工具 - MD5在線生成中生成的常規(guī)md5加密-32位小寫簽名結果對比;
4. 如您使用POST方式傳送,Content-Type請指定為:application/x-www-form-urlencoded;
5. 請參考上方各語言Demo代碼文檔仔細檢查。
6. 為什么我的請求會返回 54003?
54003 表示請求頻率超限,請降低您的請求頻率。
對于標準版服務,您的 QPS(每秒請求量)=1,如需更大頻率,請先進行身份認證,認證通過后可切換為高級版(適用于個人,QPS=10)或尊享版(適用于企業(yè),QPS=100)
7. 為什么我的請求會返回 52001?
52001 表示請求超時,請檢查按照如下步驟檢查您的簽名生成方法是否正確:
1. 您傳入的 query 長度是否超長?建議將原文采用"\n"分段請求;
2. 如間隔一段時間再次請求,是否可正常返回結果?如果不可以,請檢查您所填寫的原文或譯文語種是否在支持的語種列表里。
8. 為什么我的請求會返回58003?
因黑產采用不正當手段收集用戶APPID及密鑰,由此產生的盜刷字符量現(xiàn)象日益猖獗,系統(tǒng)風控增加了 IP 校驗規(guī)則,如同一 IP 當日使用多個 APPID 發(fā)送翻譯請求,則該IP將被封禁當日請求權限,次日解封。
但由于 IP 多變,應用場景復雜,難免出現(xiàn)誤傷正常使用的情況。如您屬正常使用,但出現(xiàn) 58003 的提示,請發(fā)送郵件至 translate_api@baidu.com,同時提供如下信息。我方在收到郵件后將與您取得聯(lián)系,核實后將解除封禁。
公司名稱:
產品名稱:
聯(lián)系人:
聯(lián)系方式:
服務器IP:
APPID:
注:
1)如提供信息不全,將影響審核通過率。
2)請不要將您的 APPID 及密鑰泄露出去,也不要填寫到任何第三方軟件中,包括“SCITranslate”、“微信學英語”、“Potplayer”等軟件以及各類計算機輔助翻譯工具插件。如因此造成密鑰泄露形成經濟損失,或因此被封禁,百度翻譯將有權拒絕解封。
9. 如果我需要翻譯整個網頁,尖括號內的標簽無法原樣輸出,怎么辦?
翻譯API會將傳入的所有字符串當做可翻譯字符,目前暫時無法區(qū)分哪些部分需原樣保留,因此 API 不適合直接處理 HTML 文件。您可將 HTML 文件進行譯前處理,抽取出待翻譯文本,傳入 API 翻譯后再回填。
10. 是否支持對譯文中的術語結果進行修改?
已認證用戶可進入“管理控制臺→ 我的術語庫”維護術語列表,同時開通“干預通用翻譯API結果”。開通后,您將可對譯文中的術語翻譯結果進行優(yōu)化和修正。請注意:干預通用翻譯API結果將可能導致翻譯延時增長。因此在無需干預結果時可將開關關閉。
如術語干預功能無法滿足您的需要,或有更多意見或建議,可聯(lián)系translate_api@baidu.com。
11. 我應該如何獲取詞典、語音合成資源結果?
接入文檔與通用翻譯API一致,接入流程上無變化。與未開通詞典、語音合成服務相比,僅在返回結果處增加 tts、dict 字段,請注意辨別字段名稱。
舉例:
(1)query=apple,語言方向為英到中
未接入資源時,返回結果為:
{
????"from": "en",
????"to": "zh",
????"trans_result": [
????????{
????????????"src": "apple",
????????????"dst": "蘋果"
????????}
????]
}
接入詞典、語音合成資源后,返回結果為:
{
??"from": "en",
??"to": "zh",
??"trans_result": [
????{
??????"src": "apple",
??????"dst": "蘋果",
??????"src_tts": "https:\/\/fanyiapp.cdn.bcebos.com\/api\/tts\/95e906875b87d342d7325a36a4e1ab42.mp3",
??????"dst_tts": "https:\/\/fanyiapp.cdn.bcebos.com\/api\/tts\/62f4ff87617655bc1f65e24cf4ed4963.mp3",
??????"dict": "{\"lang\":\"1\",\"word_result\":{\"simple_means\":{\"word_name\":\"apple\",\"from\":\"original\",\"word_means\":[\"蘋果\"],\"exchange\":{\"word_pl\":[\"apples\"]},\"tags\":{\"core\":[\"高考\",\"考研\(zhòng)"],\"other\":[\"\"]},\"symbols\":[{\"ph_en\":\"??pl\",\"ph_am\":\"??pl\",\"parts\":[{\"part\":\"n.\",\"means\":[\"蘋果\"]}],\"ph_other\":\"\"}]}}}"
????}
??]
}
(2)query=中國,語言方向為中到英
未接入資源時,返回結果為:
{
????"from": "zh",
????"to": "en",
????"trans_result": [
????????{
????????????"src": "中國",
????????????"dst": "China"
????????}
????]
}
接入詞典、語音合成資源后,返回結果為:
{
??"from": "zh",
??"to": "en",
??"trans_result": [
????{
??????"src": "中國",
??????"dst": "China",
??????"src_tts": "https:\/\/fanyiapp.cdn.bcebos.com\/api\/tts\/d943b8e0e31e8d0ea8879dde5d41f016.mp3",
??????"dst_tts": "https:\/\/fanyiapp.cdn.bcebos.com\/api\/tts\/2e2312a1d33e2ff453f92d5d95277e13.mp3",
??????"dict": "{\"lang\":\"0\",\"word_result\":{\"simple_means\":{\"symbols\":[{\"word_symbol\":\"zhōng guó\",\"parts\":[{\"part_name\":\"\",\"means\":[{\"text\":\"China\",\"part\":\"n.\",\"word_mean\":\"China\",\"means\":[\"中國\"]},{\"text\":\"Sino-\",\"part\":\"comb.\",\"word_mean\":\"Sino-\",\"means\":[\"中國的\",\"中國人(的)\"]}]}]}],\"word_name\":\"中國\",\"from\":\"CEDict\",\"word_means\":[\"China\",\"Sino-\"]}}}"
????}
??]
}
12. 我已開通詞典、語音合成資源,但不想在結果中呈現(xiàn),應該怎么辦?
如需隱藏詞典、語音合成信息,可在拼接請求參數(shù)時附加"&dict=1&tts=1",例如,如僅需隱藏tts字段,完整請求為:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4&tts=1
13. 我怎樣開通“我的術語庫”功能?
“我的術語庫”功能面向個人及企業(yè)認證用戶開放,您需首先前往“開發(fā)者信息”處完成身份認證,認證后即可在管理控制臺看到“我的術語庫”入口。目前自定義術語功能已開通“中文”和“英語”兩個語種,更多語種需求,請發(fā)送郵件至translate_api@baidu.com告訴我們。
14. 為什么我添加了術語卻看不出效果?
添加術語卻看不出效果,可能出于以下幾個原因:
1. 添加或修改術語后,需要大約 10 分鐘的生效時間,如果您是剛剛修改過術語,請您耐心等候生效;
2. 在拼接接口 URL 時,需要在輸入參數(shù)中增加“action=1”,詳見輸入參數(shù)小節(jié);
3. 翻譯系統(tǒng)判斷您定義的翻譯與原翻譯差異過大。由于神經網絡翻譯模型中,術語的定制化干預功能并非對翻譯結果的生硬替換,而是類似于“調優(yōu)”。如果您對術語的定義與原釋義含義差距過大,會導致經計算過后的出現(xiàn)不可控的翻譯結果。如您對術語干預效果不滿意,請與translate_api@baidu.com聯(lián)系。
import requests
import hashlib
inwd=input("輸入你要翻譯的文字(默認英譯中):")
def is_all_chinese(strs):
????for _char in strs:
????????if not '\u4e00' <= _char <= '\u9fa5':
????????????return False
????return True
#print(is_all_chinese(inwd))#判斷是否全部為中文
is_chinese=is_all_chinese(inwd)
if is_chinese==True:
????ffrom="zh"
????ttram="en"
????print("系統(tǒng)檢測到你輸入的全部為中文將自動翻譯為英文!!")
else:
????ffrom="en"
????ttram="zh"
app_id="20201223001037485"#你的百度接口的app_id
app_password="K3456Mdf6H25wZIHUPw"#對應秘鑰
salt="1435660288"#隨機數(shù)
ysmd=app_id+inwd+salt+app_password#需要將百度翻譯app_id翻譯接口id和搜索關鍵字+隨機數(shù)+秘鑰進行MD5加密轉換
head = {
????"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
def md5value(key):
????input_name = hashlib.md5()
????input_name.update(key.encode("utf-8"))
????return (input_name.hexdigest()).lower()
md5code=md5value(ysmd)
url_statr="http://api.fanyi.baidu.com/api/trans/vip/translate?q="+inwd+"&from="+ffrom+"&to="+ttram+"&appid=20201223001037485&salt=1435660288&sign="+md5code+"&tts=1&Content-Type=application/x-www-form-urlencoded"
reponse=requests.get(url_statr,headers=head).json()
result=reponse
print("翻譯結果:"+result['trans_result'][0]['dst'])
4、實現(xiàn)效果
?
總結
以上是生活随笔為你收集整理的用python写的翻译器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个非常好的大数据学习网站
- 下一篇: 各种时间概念的详细解释 恒星时世界时 协