๐ ๋ฒ์ญ ํ ํ๊ท ๊ธฐ๋ฒ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ฆ๊ฐ ์คํฌ๋ฆฝํธ
1. Python์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋ฅ๋ฌ๋ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ Import
import pandas as pd
from glob import glob
import os
import numpy as np
import pandas as pd
from tqdm import tqdm, tqdm_notebook
import random
import torch
import torch.nn.functional as F
๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ค๋ช & ์ฉ๋ |
pandas | ๋ฐ์ดํฐ ์กฐ์ |
glob | ํ์ผ ๊ฒ์ |
os | ์ด์ ์ฒด์ ์์ ์ํธ์์ฉ |
numpy | ์์น ๊ณ์ฐ |
tqdm | ์งํ ์ํฉ ์๊ฐํ |
random | ๋์ ์์ฑ |
torch | ํ์ดํ ์น ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ |
2. Papago ๋ฅผ ํตํ KOR -> EN ๋ฒ์ญ_A) ํ์ํ ๊ฐ์ข ๋ผ์ด๋ธ๋ฌ๋ฆฌ Import
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import requests
import time
import requests
from bs4 import BeautifulSoup
import os, shutil
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ฉ๋ | |
Selenium ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
webdriver | WebDriver๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
ActionChains | ์น ํ์ด์ง์์๋ง์ฐ์ค ๋ฐ ํค๋ณด๋ ๋์ ์ํ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
|
Keys | ํค๋ณด๋ ํน์ํค ์ฌ์ฉ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | |
By | ์น ์์ ํ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
|
Options | ๋ธ๋ผ์ฐ์ ์ปค์คํฐ๋ง์ด์ง์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
|
WebDriverWait | ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋๊น์ง ๋๊ธฐํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
๋ผ์ด๋ธ๋ฌ๋ฆฌ | ์ฉ๋ | |
๊ธฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | BeautifulSoup | HTML & XML ๋ฌธ์๋ฅผ ํ์ฑํ๊ณ ๊ฒ์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
requests | ์น ํ์ด์ง์ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
|
time | ์๊ฐ ์ง์ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | |
os, shutil | ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ์กฐ์์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
3. Papago ๋ฅผ ํตํ KOR -> EN ๋ฒ์ญ_B) WebDriver๋ฅผ ์ฌ์ฉํ์ฌ Chrome ๋ธ๋ผ์ฐ์ ์ ์ด ์ฝ๋ ์์ฑ
driver=webdriver.Chrome('chromedriver.exe')
4. Papago ๋ฅผ ํตํ KOR -> EN ๋ฒ์ญ_C) ํ๊ตญ์ด ํ ์คํธ๋ฅผ ์์ด๋ก ๋ฒ์ญ ํ ๊ฒฐ๊ณผ ์ถ๋ ฅ
#๊ฐ์ ๋ธ๋ผ์ฐ์ url ์ด๊ธฐ
translate_url = 'https://papago.naver.com/?sk=ko&tk=en' # sk=ko : Korean & tk=en : English
driver.get(translate_url)
time.sleep(2)
text_kor='''๋๊ตฌ์๊ฒ๋ ํ๋ฒ์ฏค ์์์ง๋ ์ฌ๋ฆ๋น์ฒ๋ผ
๊ฐ์์ค๋ ๋ค๊ฐ์์๋ ์ฌ๋์ด ์๊ฒ ์ฃ
๋น์๋ฆฌ์ ์ ๋ ๋ชป ์ ๋งํผ
๊ทธ๋ ๋๊ฐ ๋ด๊ฒ ๊ทธ๋ฌ์ฃ
ํ๋ด์์ ๋จธ๊ธ์ ๋์ ๊ฐ์ ์ด
์์๋ด๋ฏ์ด ๋จ๋ ค์ค๋ค์
์๊ทธ๋งํ ์ฐ์ฐ์ ๋๋๋ ค๊ณ ๋ค๊ฐ์ค๋๊ฐ ๋ด
์ฌ๋ฆ๋ ์ ๊ธฐ์ ์ผ๊น์?
์ฐฌ๋ํ๊ฒ ๋น๋๋ ์๊ฐ์ด์๋ค๊ณ
๋ง์ ์ฌ๋ฆ๋น์ฒ๋ผ ๊ณ ๋ง์ ์๋ค๊ณ
ํ์ค๊ธฐ ๋น๋ฌผ์ฒ๋ผ ๋๋ฌด ์๋ฆ๋ค์ ๋
ํฌ๋ช
ํ ์ฐ๋ฆฌ๋ค์ ์ด์ผ๊ธฐ'''
#id๊ฐ txtSource์ธ ๊ณณ์ ๋ฒ์ญํ ๋ฌธ์ฅ์ ๋ณด๋ธ๋ค.
driver.find_element(By.ID,'txtSource').send_keys(text_kor) # Send_keys
driver
time.sleep(2)
#id๊ฐ txtTarget์ธ ๊ณณ์์ text๋ฅผ ๊ฐ์ ธ์จ๋ค.
translated_EN = driver.find_element(By.ID,'txtTarget').text
print(translated_EN)
<< ๋ฒ์ญ ๊ฒฐ๊ณผ >>
5. 4๋ฒ ๊ณผ์ ์ ํตํด ๋์จ ์์ด ํ ์คํธ๋ฅผ Papago๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ณธ์ด๋ก ๋ฒ์ญ
#๊ฐ์ ๋ธ๋ผ์ฐ์ url ์ด๊ธฐ
translate_url = 'https://papago.naver.com/?sk=en&tk=ja' # sk=en : English & tk=ja : Japan
driver.get(translate_url)
time.sleep(2)
#id๊ฐ txtSource์ธ ๊ณณ์ ๋ฒ์ญํ ๋ฌธ์ฅ์ ๋ณด๋ธ๋ค.
driver.find_element(By.ID,'txtSource').send_keys(translated_EN) # Send_keys
driver
time.sleep(2)
#id๊ฐ txtTarget์ธ ๊ณณ์์ text๋ฅผ ๊ฐ์ ธ์จ๋ค.
translated_JA = driver.find_element(By.ID,'txtTarget').text
print(translated_JA)
<< ๋ฒ์ญ ๊ฒฐ๊ณผ >>
6. 5๋ฒ ๊ณผ์ ์ ํตํด ๋์จ ์ผ๋ณธ์ด ํ ์คํธ๋ฅผ Papago๋ฅผ ํตํด ํ๊ตญ์ด๋ก ๋ฒ์ญ
#๊ฐ์ ๋ธ๋ผ์ฐ์ url ์ด๊ธฐ
translate_url = 'https://papago.naver.com/?sk=ja&tk=ko' # sk=en : English & tk=ja : Japan
driver.get(translate_url)
time.sleep(2)
#id๊ฐ txtSource์ธ ๊ณณ์ ๋ฒ์ญํ ๋ฌธ์ฅ์ ๋ณด๋ธ๋ค.
driver.find_element(By.ID,'txtSource').send_keys(translated_JA) # Send_keys
driver
time.sleep(2)
#id๊ฐ txtTarget์ธ ๊ณณ์์ text๋ฅผ ๊ฐ์ ธ์จ๋ค.
translated_final = driver.find_element(By.ID,'txtTarget').text
print(translated_final)
<< ๋ฒ์ญ ๊ฒฐ๊ณผ >>
7. ์ ์ ์ฐจ์ ์๋ํ๋ฅผ ์ํ Back Translation ํจ์ ๊ตฌํ
#ํจ์ ๊ตฌํ
def back_translation(input_text, input_type, trans_type):
driver=webdriver.Chrome('chromedriver.exe')
translate_url = 'https://papago.naver.com/?sk={0}&tk={1}'.format(input_type,trans_type)
#๊ฐ์ ๋ธ๋ผ์ฐ์ url ์ด๊ธฐ
driver.get(translate_url)
time.sleep(1)
#id๊ฐ txtSource์ธ ๊ณณ์ ๋ฒ์ญํ ๋ฌธ์ฅ์ ๋ณด๋ธ๋ค.
driver.find_element(By.ID,'txtSource').send_keys(input_text) # Send_keys
time.sleep(2)
#id๊ฐ txtTarget์ธ ๊ณณ์์ text๋ฅผ ๊ฐ์ ธ์จ๋ค.
translated_contents= driver.find_element(By.ID,'txtTarget').text
time.sleep(2)
driver.quit()
return translated_contents
ํจ์ Parameter | |
input_text | ๋ฒ์ญํ ํ ์คํธ๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด |
input_type | ๋ฒ์ญํ ํ ์คํธ์ ์ธ์ด ์ฝ๋๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด |
trans_type | ๋ฒ์ญ๋ ์ธ์ด ์ฝ๋๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด |
8. ์ ๋ ฅ๋ ํ ์คํธ๋ฅผ "ํ๊ตญ์ด → ์์ด → ์ผ๋ณธ์ด → ํ๊ตญ์ด" ์์๋ก ๋ฒ์ญํ๋ ๊ธฐ๋ฅ์ ์ํํ๋ back_trans_final() ํจ์ ๊ตฌํ
def back_trans_final(input_text): #๋ฒ์ญํ text
#kor>en
text_en=back_translation(input_text,'ko','en')
time.sleep(1)
#en>ja
text_ja=back_translation(text_en,'en','ja')
time.sleep(1)
#ja>kor
text_final=back_translation(text_ja,'ja','ko')
return text_final
9. pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์๋ก์ด ๋ฐ์ดํฐํ๋ ์ ์์ฑ
#ํจ์๊ฐ ์ ์๋์ด ๋๋์ง test
dfdf=pd.DataFrame(['์๋
','๊ฑด๊ฐํ๊ฒ ์ด๊ธฐ ์ํด์๋ ์ด๋์ด ์ค์ํ ์์์ด๋ค.'])
dfdf[0]
10. ์์ฑํ ๋ฐ์ดํฐํ๋ ์์ ์ฒซ ๋ฒ์งธ ์ด์ ์๋ ๊ฐ๋ค์ back_trans_final() ํจ์๋ฅผ ์ ์ฉํ ํ ๊ฒฐ๊ณผ ์ถ๋ ฅ
dfdf[0]=dfdf[0].apply(back_trans_final)
dfdf[0]
++ ์์ฑํ ์คํฌ๋ฆฝํธ๋ก ์ค์ ๋ณด์ด์คํผ์ฑ ๋ฐ์ดํฐ ์ฆ๊ฐํด๋ณด๊ธฐ!
--> https://alim11.tistory.com/395