Python 복습 003 | 파이썬 googletrans api 활용 번역기

Yunny.Log ·2022년 1월 19일
0

Python

목록 보기
3/7
post-thumbnail

파이썬 googletrans api 활용 번역기

googletrans api 문서
=> 모듈 넣어놓은 라이브러리

googletrans api


번역

translator = googletrans.Translator ()
translator.translate(

  • text - source text(string sequence (list, tuple, iterator, generator))
  • dest - 번역을 원하는 언어
  • src - source text의 언어 / 넣지 않으면 자동으로 감지하여 들어감
    )
    Return : 번역된 결과

언어 감지

translator.detect(text(string sequence (list, tuple, iterator, generator)))

  • lang
  • confidence

번역 결과물 다루기

Translated

  • src - 소스 언어
  • dest - 목적 언어
  • origin - 원래 텍스트 내용
  • text - 번역 결과 텍스트
  • pronunciation - 발음 (영어일 경우 None 으로 출력)

1) 모듈 설치

pip install googletrans

from googletrans import Translator
  • 불러오기

2) 언어 감지

1) 번역기 만들기
2) 언어 감지 원하는 문장 설정
3) 언어 감지 후 출력

2-1) 번역기 만들기

translator = Translator()

2-2) 언어 감지 원하는 문장 설정

sentence = "안녕 난 먹을게 너무 좋아"

2-3) 언어 감지 후 출력

detected = translator.detect(sentence)

2-4) 결과값

=> print(detected)
: => Detected(lang=ko, confidence=1.0)
감지 결과는 lang 과 confidence로 나옴, lang은 감지한 언어, confidence 는 신뢰도, 1.0 이면 100프로 확실하다는 뜻

2-5) detected 된 결과에서 lang 만 데려오고 싶다면

3) 언어 번역

3-1 ) 번역기 만들기

from googletrans import Translator
translator = Translator()

3-2 ) 번역할 문장 설정

from googletrans import Translator

translator = Translator()
sentence = input("번역을 원하는 문장을 입력하세요 : ")

3-3 ) 번역 원하는 언어 설정

3-4 ) 번역

translator안의 함수인 translate 사용

translate(text, dest, src) 를 필요로 함

  • text : 원래 언어
  • dest : 번역 내보낼 언어 (특정 국가의 언어들)
  • src : 없어도 알아서 감지기가 해줘서 없어도 됨
result = translator.translate(sentence, dest="en")

3-5 ) translate 활용 코드

from googletrans import Translator
translator = Translator()
sentence = input("감지 문장을 넣어라 : ")
result = translator.translate(sentence, dest="en") #문장을 영어로 번역해서 돌려주거라
print("result 자체 출력 : " , result)
print("\n\nresult.text로 text 출력 : ", result.text)

  • translator.translate 한 결과를 그 자체로 출력하면 Translated(src=ko, dest=en, text=Goodbye, I like crucian bread Schwim, pronunciation=None, extra_data="{'confiden...") 형태로 더럽게 나옴

  • 여기서 번역된 결과인 아이만 데려오려면 text 로 데려와야 함!!

4) 코드 예시

4-1 ) 문장만 입력

from googletrans import Translator

translator = Translator()
# sentence = "좋은 아침이에요"
sentence = input("번역을 원하는 문장을 입력하세요 : ")
result = translator.translate(sentence, dest="en")
detect = translator.detect(sentence)

print("\n============= 번역 결과 =============\n")
print(detect.lang,":", result.origin) 
      #번역 전 언어 : 번역 전 문장(번역 후의 기원-origin)
print(result.dest,":", result.text)
print("\n======================================\n") 
      #번역 후 언어 : 번역 후 문장

=>

4-2 ) 언어까지도 입력받기

from googletrans import Translator

translator = Translator()
# sentence = "좋은 아침이에요"
sentence = input("번역을 원하는 문장을 입력하세요 : ") #번역될 문장
destination = input("\n어떤 언어로 번역 원하는 고니!? : ") #번역으로 출력할 언어
result = translator.translate(sentence, dest=destination) 
#사용자가 정의해준 문장, 언어로 번역 시즈악
detect = translator.detect(sentence)

print("\n============= 번역 결과 =============\n")
print(detect.lang,":", result.origin) 
      #번역 전 언어 : 번역 전 문장(번역 후의 기원-origin)
print(result.dest,":", result.text)
print("\n======================================\n") 
      #번역 후 언어 : 번역 후 문장

  • 우리나라말을 체코로 바꿨을 때

4-3 ) language 가능 코드

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',

5) 에러

5-1 ) due to a circular import

from googletrans import Translator
ImportError: cannot import name 'Translator' from partially initialized module 'googletrans' (most likely due to a circular import) (C:\Users\DONGYUN\Desktop\django\crawler\googletrans.py)

due to a circular import 는 내가 호출하는 모듈이름과 내가 설정한 파일명이 동일할 때 생김

  • 나 또한 googletrans 라는 모듈을 import 하는데 공교롭게도 파일명을 googletrans로 했었음 ㅎㅎ 그래서 이러한 에러가 났다. 파일명을 수정해주면 해결됨

5-2 ) AttributeError: 'NoneType' object has no attribute 'group'

from googletrans import Translator
translator = Translator()
sentence = input("감지 문장을 넣어라 : ")
detect = translator.detect(sentence)

print(detect.lang)

=> pip uninstall googletrans
이거 설치 해제
pip install googletrans==4.0.0-rc1
얘로 설치해주기

0개의 댓글

관련 채용 정보