Google 번역기를 사용하는데, 문제가 있다.....
1개씩 복사붙여넣기로 일일히 번역을 하면 시간이 너무 오래 걸린다.
API나 라이브러리를 사용해서 1번에 여러 언어를 번역해보자.
방법은 크게 2가지이다.
1) Python googletrans 라이브러리 사용하기(무료 / 1일 사용량 제한 있음 / 최신 버전이 아니라 번역이 잘못될 수 있음)
2) Google Cloud의 번역 API 사용하기( 유료 / 최신 버전이라 번역이 자연스러움)
돈 쓰기는 죽어도 싫으니 1)번 방법을 사용하도록 하자.
-코드 전문-
✅dataframe에 적용할때는 아래처럼 하면 된다.
import pandas as pd
from googletrans import Translator
def translate_product(df):
translator = Translator()
df['Trans_result'] = df['Before_Trans'].apply(lambda x: translator.translate(x, dest='en').text)
df['Language'] = df['Before_Trans'].apply(lambda x: translator.detect(x).lang)
return df
#Before_Trans: 번역될 원본 문장/단어
#Trans_result: 번역 결과 / 여기서는 en(영어)로 번역하도록 했다.
#Language : 원본 문장의 언어(일본어라면 jp / 한국어면 ko로 표시된다.)
1) googletrans 라이브러리 설치
pip install googletrans==4.0.0-rc.1
(주의 : 그냥 pip install googletrans를 하면 동작하지 않는 버전을 설치하므로 옆에 버전을 꼭 지정해주도록 하자, 잘못 설치했다면 pip uninstall googletrans로 지워주고 다시 설치한다.)
아래 pypi에서 원하는 버전을 찾을 수도 있다.
https://pypi.org/project/googletrans/
2) googletrans의 Translator를 사용한다.
from googletrans import Translator
translator = Translator()
translator.translate( 번역할 문장(string) ,src='번역할 문장의 언어' ,dest='변경할 언어' )
#간단한 텍스트 번역하기
text='나는 한국인이다.'
cn_result= translator.translate(text, dest='zh-cn')
#번역한 중국어를 다시 한국어로 바꿔보기
ko_result = translator.translate(cn_result.text, dest='ko')
print(cn_result.text) #我是韩国人。
print(ko_result.text) #나는 한국인이다.
src는 굳이 넣어주지 않아도 googletrans에서 알아서 감지하고 설정해준다, 다만 데이터가 이미 언어별로 분류되어 있다면 src에 해당하는 언어를 써주는 것이 좋다.
translator.translate의 결과는 JSON형태이고, 2가지 return이 있다. .text : 문장(string 값이다.) .pronunciation : 발음(기본값은 en이지만 다른걸로 변경 가능하다.) |
3) 1개 문장만 바꾸기
3-1) 번역만 하기
translator = Translator()
translator.translate("This Is English", dest='kr')
결과 : 이것은 영어입니다.
3-2) 번역될 문장이 어떤 언어를 사용중인지 감지하기
translator = Translator()
translator.detect("이것은 한국어 입니다").lang
결과 : kr
사용가능한 언어들은 아래와 같다.
import googletrans
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'}
GoogleTrans 라이브러리는 1일 제한이 있는데 이것은 fake user agnet를 사용하면 무제한으로 번역이 가능하다.
google말고 다른 번역기의 API를 사용하는 방법은 다른 게시글에서 살펴보도록 하자.
https://mrnoobiest.tistory.com/529