Last Updated on 2021-06-28 by Clay
如果今天我們想要進行文字的翻譯,大部分的人想必都會不約而同地使用 『Google 翻譯』吧!畢竟一來 Google 翻譯的名聲相當響亮、二來由於近年來 NLP 相關的深度學習技術越來越成熟,Google 翻譯的品質也是逐年提昇。
因此,若是我們要使用 Python 來進行『翻譯』的工作時,我們第一個聯想到的自然就是如何串接 Google 翻譯了。
基本上,想到使用 Python 串接 Google 翻譯,我認為應該有下列三種方法:
- 使用 Google Translate API (這個應該是最穩定的方法)
- 自己爬蟲
- 使用別人封裝好的套件
自然,使用別人封裝好的套件是最快的。我今天要紀錄的,便是如何使用 “googletrans” —— 一個 Python 上直接調用 Google 翻譯的套件,可說是 pip 安裝即用,非常方便。
以下,就來紀錄這個套件有哪些功能吧!
事前準備
首先,如果環境中沒有安裝著 googletrans,那麼,我們需要使用以下指令安裝:
sudo pip3 install googletrans
順帶一提,這個套件還是有其限制的。
- 字串長度不得超過 15000 個字元
- 網頁更新時,需等此套件更新才能正常運作
- HTTP 5xx Error 即代表 Google 封鎖了 IP 位址
不過,這還是個很棒的套件,畢竟使用方便。
翻譯功能
首先,既然串接了 Google 翻譯,那麼最重要的,莫過於『翻譯』功能了吧!
import googletrans from pprint import pprint # Initial translator = googletrans.Translator() # Basic Translate results = translator.translate('我覺得今天天氣不好。') print(results) print(results.text)
Output:
Translated(src=zh-CN, dest=en, text=I think the weather is bad today., pronunciation=None, extra_data="{'translat…")
I think the weather is bad today.
可以看到,在沒有任何設定的情況下,輸入的『字串』會自動偵測最有可能的語言;而輸出的語言則預設英文。
當然,我們也可以指定我們要輸出的語言。再來看段範例:
print('English:', translator.translate('我覺得今天天氣不好', dest='en').text) print('Japanese:', translator.translate('我覺得今天天氣不好', dest='ja').text) print('Korean:', translator.translate('我覺得今天天氣不好', dest='ko').text)
Output:
English: I think the weather is bad today
Japanese: 私は、今日の天気は悪いだと思います
Korean: 나는 날씨가 오늘 나쁜 생각
我們可以看到,設定 “dest” 參數即可選擇我們要翻譯的語言。
偵測語言
有趣的是,如果今天我們有一段未知的語言,其實我們也可以透過這個套件來『偵測』這一段未知的語言究竟是哪種語言。
比如說以下這段日文 (沒錯,我知道這是日文)。
# Detect unknown_sentence = 'おはよう' results = translator.detect(unknown_sentence) print(results) print(results.lang)
Output:
Detected(lang=ja, confidence=1.0)
ja
而返回的結果,也恰恰顯示這段文字是日文。
取得語言編碼
當然,上方的『指定翻譯語言』、『偵測語言種類』等等的功能,都仰賴著我們需要知道這是什麼語言的『編碼』。
比如說,”en” 大家都知道是英文,沒問題。但是今天如果是 “af” 呢?
我查了一下,”af” 代表著『afrikaans』(南非語) —— 沒錯,跟我預想得一模一樣呢 —— 好啦,話又說回來,其實我們也可以使用 googletrans 來查看語言的編碼。
from pprint import pprint pprint(googletrans.LANGCODES)
Output:
{'Filipino': 'fil',
'Hebrew': 'he',
'afrikaans': 'af',
'albanian': 'sq',
'amharic': 'am',
'arabic': 'ar',
'armenian': 'hy',
'azerbaijani': 'az',
'basque': 'eu',
'belarusian': 'be',
'bengali': 'bn',
'bosnian': 'bs',
'bulgarian': 'bg',
'catalan': 'ca',
'cebuano': 'ceb',
'chichewa': 'ny',
'chinese (simplified)': 'zh-cn',
'chinese (traditional)': 'zh-tw',
'corsican': 'co',
'croatian': 'hr',
'czech': 'cs',
'danish': 'da',
'dutch': 'nl',
'english': 'en',
'esperanto': 'eo',
'estonian': 'et',
'filipino': 'tl',
'finnish': 'fi',
'french': 'fr',
'frisian': 'fy',
'galician': 'gl',
'georgian': 'ka',
'german': 'de',
'greek': 'el',
'gujarati': 'gu',
'haitian creole': 'ht',
'hausa': 'ha',
'hawaiian': 'haw',
'hebrew': 'iw',
'hindi': 'hi',
'hmong': 'hmn',
'hungarian': 'hu',
'icelandic': 'is',
'igbo': 'ig',
'indonesian': 'id',
'irish': 'ga',
'italian': 'it',
'japanese': 'ja',
'javanese': 'jw',
'kannada': 'kn',
'kazakh': 'kk',
'khmer': 'km',
'korean': 'ko',
'kurdish (kurmanji)': 'ku',
'kyrgyz': 'ky',
'lao': 'lo',
'latin': 'la',
'latvian': 'lv',
'lithuanian': 'lt',
'luxembourgish': 'lb',
'macedonian': 'mk',
'malagasy': 'mg',
'malay': 'ms',
'malayalam': 'ml',
'maltese': 'mt',
'maori': 'mi',
'marathi': 'mr',
'mongolian': 'mn',
'myanmar (burmese)': 'my',
'nepali': 'ne',
'norwegian': 'no',
'pashto': 'ps',
'persian': 'fa',
'polish': 'pl',
'portuguese': 'pt',
'punjabi': 'pa',
'romanian': 'ro',
'russian': 'ru',
'samoan': 'sm',
'scots gaelic': 'gd',
'serbian': 'sr',
'sesotho': 'st',
'shona': 'sn',
'sindhi': 'sd',
'sinhala': 'si',
'slovak': 'sk',
'slovenian': 'sl',
'somali': 'so',
'spanish': 'es',
'sundanese': 'su',
'swahili': 'sw',
'swedish': 'sv',
'tajik': 'tg',
'tamil': 'ta',
'telugu': 'te',
'thai': 'th',
'turkish': 'tr',
'ukrainian': 'uk',
'urdu': 'ur',
'uzbek': 'uz',
'vietnamese': 'vi',
'welsh': 'cy',
'xhosa': 'xh',
'yiddish': 'yi',
'yoruba': 'yo',
'zulu': 'zu'}
這樣一來,我們隨時查看語言編碼也沒有問題了!
References
- https://pypi.org/project/googletrans/
- https://py-googletrans.readthedocs.io/en/latest/
- https://github.com/ssut/py-googletrans
輸入了 sudo pip3 install googletrans,但他需要密碼,為什麼呢?該怎麼辦
sudo 是使用 Super User 權限下指令,故會需要使用者密碼。如果在伺服器上並不在 sudo 群組的話,可以直接使用
pip3 install googletrans
或是
pip3 install --user googletrans
(“-” dash 符號有兩個,在留言區好像偶爾會顯示不出來 XD)來進行安裝。
希望能順利。
Google 翻譯 現在是不是有使用次數的限制了?
當然可能我記憶有誤,不過似乎從我開始使用就一直都有使用次數。