안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
오늘은 영어를 해석할 때 자주 도움받는 구글 번역(Google Translate)을 파이썬에서 사용하는 방법에 대해 알아보겠습니다.
Googletrans 설치하기
googletrans 패키지는 원래 3.0.0 버전까지 문제가 많아서 AttributeError: 'NoneType' object has no attribute 'group' 라는 에러를 출력시키면서 잘 실행이 되지 않았습니다. 하지만 2021년 1월 12일에 4.0.0 버전이 릴리즈 되면서 그러한 에러가 해결되었답니다.
2021년 7월 1일 현재에도 그냥 pip install googletrans로 설치를 하면 구버전이 설치되므로 꼭 아래의 코드를 입력해주세요. 혹시 이미 설치를 하셨다면 pip uninstall googletrans로 패키지를 지운 후에 다시 설치하시기 바랍니다.
pip install googletrans==4.0.0-rc1
Googletrans 불러오기
googletrans 패키지를 사용하려면 import를 해주셔야합니다.
from googletrans import Translator
# Translator 클래스 객체 선언 (translator라는 변수명은 마음대로 정해주면 됨)
translator = Translator()
혹시 import googletrans가 아닌 from googletrans import Translator를 사용한 이유가 궁금하신 분은 아래의 글을 참고해주세요.
2021.05.24 - [파이썬 기초/기초 문법] - [python 기초] import OO와 from OO import*의 차이
Googletrans 사용하기
googletrans 패키지로는 번역과 감지 2가지 기능을 사용할 수 있습니다. 하나씩 알아보겠습니다.
번역 (translate)
가장 기본적인 번역을 해보겠습니다. 해당 코드는 위의 코드가 있어야 작동하는 점 참고바랍니다.
print(translator.translate('안녕')
>>> Translated(src=ko, dest=en, text=Hi, pronunciation=None, extra_data="{'confiden...")
translator.translate( )의 결과물은 Translated라는 클래스의 객체입니다. 쉽게 말해 안에 무엇이 들어있는 결과물이랄까요.
이 안에는 src, dest, text, pronunciation이란 요소들이 들어있으며, 이것들이 뜻하는 내용은 아래와 같습니다.
요소 | 의미 |
src | 번역 전 언어 |
dest | 번역 후 언어 |
text | 번역 결과 |
pronunciation | 번역 결과의 발음 (영어로 표기) |
참고로 source 언어(src)는 입력된 문자열을 자동 감지하여 판단한 것이 디폴트이고, 번역될 언어(dest)는 영어가 디폴트입니다.
만약 Translated에서 특정 요소만 가져오고 싶다면 아래와 같이 코딩해주시면 됩니다.
translator.translate("안녕").text
>>> 'Hi'
그리고 아까 결과에서 pronunciation가 None으로 나온 이유는 번역 후 언어가 영어이므로 text가 곧 pronunciation이기 때문입니다.
한국어를 일본어로 바꿔보면 영어로 발음이 나오는 것을 확인 하실 수 있습니다.
print(translator.translate('안녕', src='ko', dest='ja'))
>>> Translated(src=ko, dest=ja, text=こんにちは, pronunciation=Kon'nichiwa, extra_data="{'confiden...")
감지 (detect)
입력받은 문자열을 알아서 판단하여 어떤 언어인지 되돌려줍니다.
print(translator.detect('안녕'))
>>> Detected(lang=ko, confidence=None)
print(translator.detect('veritas lux mea'))
>>> Detected(lang=la, confidence=None)
# 언어만 확인
print(translator.detect('안녕').lang)
Detected 클래스는 lang과 confidence를 요소로 가지며 각각 감지한 언어와 결과의 신뢰도(0~1.0)를 나타냅니다. 제가 할 때는 신뢰도는 나오지 않네요.
< googletrans에서 지원하는 언어>
LANGUAGES = {
'af': 'afrikaans',
'sq': 'albanian',
'am': 'amharic',
'ar': 'arabic',
'hy': 'armenian',
'az': 'azerbaijani',
'eu': 'basque',
'be': 'belarusian',
'bn': 'bengali',
'bs': 'bosnian',
'bg': 'bulgarian',
'ca': 'catalan',
'ceb': 'cebuano',
'ny': 'chichewa',
'zh-cn': 'chinese (simplified)',
'zh-tw': 'chinese (traditional)',
'co': 'corsican',
'hr': 'croatian',
'cs': 'czech',
'da': 'danish',
'nl': 'dutch',
'en': 'english',
'eo': 'esperanto',
'et': 'estonian',
'tl': 'filipino',
'fi': 'finnish',
'fr': 'french',
'fy': 'frisian',
'gl': 'galician',
'ka': 'georgian',
'de': 'german',
'el': 'greek',
'gu': 'gujarati',
'ht': 'haitian creole',
'ha': 'hausa',
'haw': 'hawaiian',
'iw': 'hebrew',
'he': 'hebrew',
'hi': 'hindi',
'hmn': 'hmong',
'hu': 'hungarian',
'is': 'icelandic',
'ig': 'igbo',
'id': 'indonesian',
'ga': 'irish',
'it': 'italian',
'ja': 'japanese',
'jw': 'javanese',
'kn': 'kannada',
'kk': 'kazakh',
'km': 'khmer',
'ko': 'korean',
'ku': 'kurdish (kurmanji)',
'ky': 'kyrgyz',
'lo': 'lao',
'la': 'latin',
'lv': 'latvian',
'lt': 'lithuanian',
'lb': 'luxembourgish',
'mk': 'macedonian',
'mg': 'malagasy',
'ms': 'malay',
'ml': 'malayalam',
'mt': 'maltese',
'mi': 'maori',
'mr': 'marathi',
'mn': 'mongolian',
'my': 'myanmar (burmese)',
'ne': 'nepali',
'no': 'norwegian',
'or': 'odia',
'ps': 'pashto',
'fa': 'persian',
'pl': 'polish',
'pt': 'portuguese',
'pa': 'punjabi',
'ro': 'romanian',
'ru': 'russian',
'sm': 'samoan',
'gd': 'scots gaelic',
'sr': 'serbian',
'st': 'sesotho',
'sn': 'shona',
'sd': 'sindhi',
'si': 'sinhala',
'sk': 'slovak',
'sl': 'slovenian',
'so': 'somali',
'es': 'spanish',
'su': 'sundanese',
'sw': 'swahili',
'sv': 'swedish',
'tg': 'tajik',
'ta': 'tamil',
'te': 'telugu',
'th': 'thai',
'tr': 'turkish',
'uk': 'ukrainian',
'ur': 'urdu',
'ug': 'uyghur',
'uz': 'uzbek',
'vi': 'vietnamese',
'cy': 'welsh',
'xh': 'xhosa',
'yi': 'yiddish',
'yo': 'yoruba',
'zu': 'zulu',
}
오늘 준비한 내용은 여기까지입니다.
이 패키지를 어디에 쓸지는 고민해봐야 할 것 같네요.
<참고자료>
https://pearlluck.tistory.com/372