bdtrans 一個命令列下的機器翻譯工具
現如今,機器翻譯技術已經越來越成熟了,儘管從整體來看機器翻譯的結果還不是特別如意,但是也足以應付一般的翻譯需求了。近幾年機器翻譯平臺層出不窮,國外比較出名的翻譯平臺有Google翻譯、必應翻譯等,國內比較出名的也有百度翻譯、有道翻譯等。
中國的百度公司在人工智慧層面做的還算是蠻不錯的(雖然它的搜尋一直以來為人所詬病),筆者經常在Linux下做一些工作,當有翻譯需求時不得不開啟瀏覽器,進入百度翻譯官網去翻譯一些句子,這樣顯然是有些麻煩,我想如果百度翻譯肯提供一個API的話就好了,這樣我就能做一個在終端下呼叫API的小工具。
筆者嘗試登入百度翻譯的開發者平臺,發現百度翻譯果然提供了API,於是筆者便用Python指令碼語言寫了一個命令列下的呼叫百度翻譯工具,將其命名為 bdtrans
雖然筆者是在Linux下寫的這個工具,但是其它平臺也是支援的(前提是你的計算機上安裝了一個python3的直譯器),它所依賴的第三方包只有setuptools與prompt_toolkit.
你可以將其當作一個pyhton包,在自己的指令碼檔案中匯入並使用它,或者在python直譯器中使用它,也可以將其完全當作一個命令列下的小工具,甚至啟動互動式的翻譯環境互動式翻譯句子,它也支援從檔案中讀取翻譯內容,並將翻譯結果儲存進檔案中去,下面筆者簡要介紹一下工具的使用。
安裝
你可以使用Python包管理工具來安裝它: pip install bdtrans
你也可以下載原始碼包,解壓後執行安裝檔案: python setup.py insatll
Github開源地址:https://github.com/zsimline/bdtrans
使用方式
首先,你應該去百度翻譯的官網上註冊一個賬戶,並按照官網上的指導並申請一個百度翻譯API的AppID與祕鑰。
當你首次嘗試匯入bdtrans包,或者在命令列工具下使用它時,它將會指引你輸AppID、祕鑰、預設的翻譯規則等資訊,並在輸入完成後在你的使用者目錄下生成一個名為.bdtrans的配置檔案,之後你就可以直接使用它而無需再次輸入AppID等相關資訊了。
需要注意的是,百度翻譯限制呼叫API的頻率為1s/次,所以請不要在1s內呼叫多次API
模組函式
trans(words, source_lang=None, target_lang=None, reverse=False)
作用:翻譯使用者給定的句子,輸出翻譯結果
引數 | 含義 |
---|---|
words | 你想要翻譯的句子 |
source_lang | 源語言程式碼(非必須) |
target_lang | 目標語言程式碼(非必須) |
reverse | 是否反轉源語言與目標語言 |
>>> import bdtrans >>> bdtrans.trans('Hello, boy!','en','zh') >>> 你好,男孩!
io_trans(input_file, output_file=None, quiet=False)
作用:從檔案中讀取翻譯內容,如果指定了輸出檔案,翻譯結果將被儲存到輸出檔案中
引數 | 含義 |
---|---|
input_file | 輸入的檔名 |
output_file | 輸出的檔名 |
quiet | 是否關閉控制檯輸出 |
set_lang(source_lang, target_lang)
作用:設定源語言程式碼與目標語言程式碼
引數 | 含義 |
---|---|
source_lang | 源語言程式碼 |
target_lang | 目標語言程式碼 |
save(file_name)
作用:儲存翻譯結果到檔案中
引數 | 含義 |
---|---|
file_name | 儲存的檔名 |
reverse_lang()
作用:反轉源語言與目標語言
list_langs()
作用:列印目前支援的語言列表
display_rules
作用:顯示當前的語言翻譯規則
change_appid()
作用:按照嚮導改變配置檔案中的AppID
change_lang()
作用:按照嚮導改變配置檔案中的預設翻譯規則
initialize_app()
作用:按照嚮導初始化APP
命令列工具
可以直接在命令列下使用它,最重要的是你可以使用 “bdtrans -S” 進入互動式的翻譯環境。
bdtrans [選項] 待翻譯文字
選項
選項 | 含義 |
---|---|
-h, –help | 顯示幫助訊息 |
-v, –version | 顯示程式版本 |
-l, –list | 列印語言列表 |
-S, –shell | 啟動互動式翻譯環境 |
-s code, –source code | 指定源語言 |
-t code, –target code | 指定目標語言 |
-i filename, –input filename | 指定輸入檔案 |
-o filename, –output filename | 指定輸出檔案 |
–init | 按照嚮導初始化APP |
–changeinfo | 改變配置檔案中的AppID |
–changelang | 改變配置檔案中的翻譯規則 |
互動環境下的選項
選項 | 含義 |
---|---|
/reve | 反轉源語言與目標語言 |
/rule | 顯示當前的翻譯規則 |
/list | 列印支援的語言列表 |
/help | 顯示幫助資訊 |
/quit | 退出互動環境 |
/save filename | 儲存翻譯結果 |
/setlang source_lang target_lang | 設定源語言與目標語言 |
user@host:$ bdtrans 德瑪西亞萬歲 user@host:$ Long live Demasia user@host:$ bdtrans -t ara 德瑪西亞萬歲 user@host:$ فيفا دي مارسيا user@host:$ bdtrans -s zh 德瑪西亞萬歲 user@host:$ 不可以只指定源語言!
在互動環境下可以使用 =code 來臨時的指定目標語言,此時源語言將自動的被指定為auto, 例如 ” =zh hello world ”
>=th 你在地球嗑瓜子 คุณใช้เมล็ดแตงโมบนโลก >=jp 我在月球吃西瓜 月でスイカを食べます
支援的語言列表
語言程式碼 | 語言 |
---|---|
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 | 越南語 |
auto | 自動檢測 |
&n