본문 바로가기
Python

[python] 셀레늄 Selenium 파파고 한일 번역기로 문장 교정 해보기

by 퍼포먼스마케팅코더 2022. 8. 19.
반응형

python 파파고 한일 번역기로 문장 교정 해보기

오늘 거를 대왕의 마지막인데 제가 궁극적으로 보고 있는 궁극적으로 보고 있는 것도 마찬가지입니다. 뭐냐면 번역기를 써서 문장을 교정을 해보는 거예요. 주로 제가 쓰고 있는 건 파파고 번역기를 많이 쓰고 있는데 이 원리가 뭐냐면요. 어떻게 번역기를 통해서 문장 교정이 되냐 라고 하실 수 있겠지만 다른 이유가 있습니다. 바로 파파고의 번역기 특징이기도 한데요. 구글 번역기를 사용해보시면 딱딱한 이상한 말들이 돼요 하지만 팝하고 번역기를 사용하시면 신조어 이런 것에 강합니다. 제가 사용한 바로는 그렇습니다. 많이 사용을 해봤었는데 특히 한국어와 일본어의 번역에 대한 수준은 구글 이상급이라고 단연코 말씀드릴 수 있을 것 같아요. 

 

특히 파파고가 그렇게 번역 기능이 아주 좋아서 특히나 특히 일반적인 언어의 문장을 사용을 했었을 때는 파파고가 높임말까지 지원을 해줍니다. 특히 오탈자나 띄어쓰기 혹은 문장에 뭔가 문장이 어색하고 애매모한 문장들이 있잖아요. 그것도 한국어에서 일본어로 일본어에서 한국어로 번역을 해서 보여주면 교정이 돼서 나옵니다. 깔끔하게 나오는 경우가 많았어요. 아직 지금은 완벽한 수준은 아니겠지만 차후에 괜찮아질 것이다라고 생각을 해서 계속적으로 제가 말한 이런 것들도 계속 테스트를 한번 해보고 있습니다. 

 

문장 교정이 너무 깔끔하게 되기 때문에 나중에 현재 네이버 클로바 스튜디오라고 지금은 클로즈 베타로만 진행을 하고 있죠 나오게 된다면 한번 트라이도 한번 해보고 싶기도 해요. 궁극적인 거는 제가 말하고 있는 구어체와 문어체와 관련됐었던 내용들도 이게 보완을 많이 해줄 수 있는지 그게 궁금해서 그런 차원에서 계속적으로 해보는 거다라고 보시면 될 것 같습니다. 이 파이스 코딩은요 그걸 한번 자동으로 만들어 놨어요. 기존은 셀레늄이고요. 여러분의 네이버 아이디와 비밀번호만 쳐서 그다음에 문장과 관련됐었던 내용만 여기다가 메모장 있죠 거기에다가 입력만 해놓으시면은 다 나옵니다. 어느 정도까지 이 문장을 매끄럽게 만들어주는가 이거에 대해서 파헤칠 수 있어요. 

 

여기서 한 가지 에러가 나왔었던 거는 크롬 드라이브에서의 문제점이 파악이 됐었던 거죠. 크롬 드라이버로 사용하면 특정 유니코드의 문자열은 사용할 수 없다라는 에러 문구가 많이 떠서 이제 그게 이 밑에 있습니다. bmp라는 걸로 해서 어떤 특정 문자열은 지원하지 않는다 이것이 있어서 해결은 다 했습니다. 해결은 해서 최종적으로 완료는 되긴 했는데 그것보다 더 중요한 거는 얼마만큼 문장을 깔끔하게 교정을 해주는 거겠죠. 그걸 계속 한번 테스트도 해보고 그렇게 해서 유의미한 뭔가 결과가 있었다 한다면 차후에 공유를 해드리거나 그런 계기가 있으면 좋겠네요. 여기까지입니다.

 

 

 

#자료수집
from __future__ import print_function
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import os
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from googleapiclient.http import MediaFileUpload
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import  warnings
from    selenium import webdriver
from    selenium.webdriver.support.ui import WebDriverWait
from    selenium.webdriver.support import expected_conditions as EC
from    selenium.webdriver.common.by import By
from    selenium.webdriver.common.keys import Keys 
from    selenium.webdriver.common.action_chains import ActionChains
from    selenium.common.exceptions import NoSuchElementException,StaleElementReferenceException
from    bs4      import BeautifulSoup as bs
import  time
import  pyperclip
import  requests
import  datetime
import  pymssql
import  pandas as pd
from  pandas.core.frame import DataFrame
import  matplotlib.pyplot as plt
import  chromedriver_autoinstaller
import  subprocess
from    selenium import webdriver
from    selenium.webdriver.chrome.options import Options
from    selenium.webdriver.common.alert import Alert
import  chromedriver_autoinstaller
import  subprocess
import  shutil 
import  xlrd
import  openpyxl 
import  pygsheets
import  csv
import  re
import  webbrowser
import  os
import  sys
import  urllib.request
import  json
from    pandas.io.json import json_normalize
import  hashlib
import  hmac
import  base64
import  numpy as np
import  autoit #autoit는 반드시 autoit 프로그램이 깔려있어야됨
import  pyautogui
from PIL import ImageGrab
try:
    from PIL import Image
except ImportError:
    import Image
import pytesseract
import cv2
import numpy as np
from google_drive_ocr.application import GoogleOCRApplication
import glob


warnings.filterwarnings('ignore')
try:
    shutil.rmtree(r"c:\chrometemp")  #쿠키 / 캐쉬파일 삭제
except FileNotFoundError:
    pass
subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"') # 디버거 크롬 구동
option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
option.add_argument("--incognito") #추가 (이게 있어야 정상 작동됨, 다만 부분적으로 해결)
option.add_argument("--disable-site-isolation-trials") #추가
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'  #추가
option.add_argument(f'user-agent={user_agent}') #추가

chrome_ver = chromedriver_autoinstaller.get_chrome_version().split('.')[0]
try:
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)
except:
    chromedriver_autoinstaller.install(True)
    driver = webdriver.Chrome(f'./{chrome_ver}/chromedriver.exe', options=option)

driver.maximize_window() #최대창
action = ActionChains(driver)  #액션지정
time.sleep(1)
driver.implicitly_wait(10)


#네이버 로그인
#네이버 이동

url = 'https://www.naver.com'
driver.get(url)
time.sleep(5)
driver.implicitly_wait(10)

driver.find_element_by_class_name('link_login').click()
time.sleep(1)
driver.implicitly_wait(10)

#id, pw 입력할 곳 찾기

tag_id = driver.find_element_by_name('id')
tag_pw = driver.find_element_by_name('pw')
driver.implicitly_wait(10)

#id 입력

tag_id.click()
pyperclip.copy('id입력')    
tag_id.send_keys(Keys.CONTROL, 'v')
time.sleep(2)
driver.implicitly_wait(10)

#pw 입력

tag_pw.click()
pyperclip.copy('비밀번호입력')
tag_pw.send_keys(Keys.CONTROL, 'v')
time.sleep(2)
driver.implicitly_wait(10)

#로그인 버튼 클릭

login_btn = driver.find_element_by_id('log.login')
login_btn.click()
time.sleep(1)
driver.implicitly_wait(10)

#네이버 로그인 완료

#번역 메모장 열기

n = 7
keywords = ['화왕전']

for keyword in keywords :
    file = open('C:/Users/user/raw/literature/키워드_포스팅_'+str(n)+'_'+str(keyword)+'.txt', 'r', encoding='utf-8-sig')
    f_result = open('C:/Users/user/raw/literature/키워드_포스팅_'+str(n)+'_'+str(keyword)+'_result.txt', 'w', encoding='utf-8-sig')
    old_literature_text = file.read()
    
    # 에러메세지 Message: unknown error: ChromeDriver only supports characters in the BMP
    # 특수문자, 정규식으로 한문 제거 이후에 다시 트라이 해보기로 한다.
    
    special_char = '「」≪≫〉〈\/*?"<>|-․()' #특수문자
    for c in special_char:
        if c in old_literature_text:
            old_literature_text = old_literature_text.replace(c, '')  # 특수 문자 제거
            old_literature_text = old_literature_text.replace("ㆍ", ",") #특수문자 변환
            old_literature_text = old_literature_text.replace(":", "는") #특수문자 변환
            old_literature_text = re.compile('[一-龥]').sub('', old_literature_text) # 정규식 한문 제거

    # 에러메세지 Message: unknown error: ChromeDriver only supports characters in the BMP try 2
    
    #해결색으로 pyperclip으로 바꿔본다.  (해결완료)
    

    #target_text_ja = []

    #try:
    url = "https://papago.naver.com/?sk=ko&tk=ja&hn=1" #한일 번역화
    driver.get(url)
    time.sleep(1)
    driver.implicitly_wait(2)
    input_box = driver.find_element_by_css_selector('textarea#txtSource')  #문장 넣을것
    button = driver.find_element_by_css_selector('button#btnTranslate')  #번역 버튼 클릭
    x_button = driver.find_element_by_class_name('btn_text_clse___1Bp8a') #초기화 버튼 클릭
    switch_button = driver.find_element_by_class_name('btn_switch___x4Tcl') #소스/타겟 언어 바꾸기 버튼 클릭
    
    
    #text - 리스트에서 하나씩 번역
    #for i in content :
        #print('원본글:'+str(i)) #원본
    #input_box.clear() #초기화
    #input_box.send_keys(str(old_literature_text))  #문장 넣기
        # click translate button
    
    
    #해결색으로 pyperclip로 트라이   
    
    pyperclip.copy(str(old_literature_text)) #복사
    input_box.send_keys(Keys.CONTROL, 'v')  #붙여넣기
    
    
    button.click()  #번역 클릭
    time.sleep(5)
    driver.implicitly_wait(10)
        # click switch button
    switch_button.click() #바꾸기 클릭
    time.sleep(5)
    driver.implicitly_wait(10)

    #번역된 문장글 긁기
    soup = bs(driver.page_source, 'html.parser')
    target_text = driver.find_element_by_css_selector('div#txtTarget').text
    print(str(target_text)) #번역글 확인
    f_result.write(str(target_text)) #번역글 넣기
    #target_text_ja.append(target_text)

    x_button.click() #초기화(x버튼)
    time.sleep(3)
    driver.implicitly_wait(10)
    print('키워드_포스팅_'+str(n)+'_'+str(keyword)+' 의 한일 번역이 완료되었습니다.')
    #except Exception as msg:
    #    error_msg = "번역기 에러:"+str(msg)

    file.close()
    f_result.close()
    
    n +=1
    
    time.sleep(5) #5초 쉬기

driver.close()
driver.quit()
반응형

댓글