object.pouta.csc.fi/Tatoeba-Challenge-v2020-07-28/eng-kor.tar
위 링크에서 영어-한국어 번역 모델을 위한 데이터를 다운받을 수 있다.
학습용 영-한 pair가 379만여개
테스트용 pair는 2414개다.
다운을 받으면 학습용 데이터는 .gz 파일에 담겨있는데,
따라하는 튜토리얼에는 그런 게 없었다.. ㅜ ㅜ
>> 해결
저 gz 파일을 한번씩 더 압축을 풀어줘야 합니다
그럼 이렇게 아름다운 src 파일이 나오니
이걸로 진행하면 됩니다.
def prepare_translation_datasets(data_path):
with gzip.open("train.trg.gz", mode="rt", encoding="utf-8") as f:
korean_text = f.readlines()
korean_text = [text.strip("\n") for text in korean_text]
with gzip.open("train.src.gz", mode="rt", encoding="utf-8") as f:
english_text = f.readlines()
english_text = [text.strip("\n") for text in english_text]
data = []
for korean, english in zip(korean_text, english_text):
data.append(["kor to eng", korean, english])
data.append(["eng to kor", english, korean])
train_df = pd.DataFrame(data, columns=["prefix", "input_text", "target_text"])
with open("test.trg", "r", encoding="utf-8") as f:
korean_text = f.readlines()
korean_text = [text.strip("\n") for text in korean_text]
with open("test.src", "r") as f:
english_text = f.readlines()
english_text = [text.strip("\n") for text in english_text]
data = []
for korean, english in zip(korean_text, english_text):
data.append(["kor to eng", korean, english])
data.append(["eng to kor", english, korean])
eval_df = pd.DataFrame(data, columns=["prefix", "input_text", "target_text"])
return train_df, eval_df
하지만 띄어쓰기가 매우 더러운데... 왜이러는걸까요...
열어도 한참 모드 오류나고 그랬음...
'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
이런 오류 나서 찾아보니, 일단 파이썬에서 gz 파일을 gzip 이라는 라이브러리로 읽을 수 있었다.
gzip.open의 mode="rt"는 텍스트 데이터임을 가르킨다.
import gzip
def prepare_translation_datasets(data_path):
with gzip.open("train.trg.gz", mode="rt", encoding="utf-8") as f:
korean_text = f.readlines()
korean_text = [text.strip("\n") for text in korean_text]
with gzip.open("train.src.gz", mode="rt", encoding="utf-8") as f:
english_text = f.readlines()
english_text = [text.strip("\n") for text in english_text]
data = []
for korean, english in zip(korean_text, english_text):
data.append(["kor to eng", korean, english])
data.append(["eng to kor", english, korean])
train_df = pd.DataFrame(data, columns=["prefix", "input_text", "target_text"])
with open("test.trg", "r", encoding="utf-8") as f:
korean_text = f.readlines()
korean_text = [text.strip("\n") for text in korean_text]
with open("test.src", "r") as f:
english_text = f.readlines()
english_text = [text.strip("\n") for text in english_text]
data = []
for korean, english in zip(korean_text, english_text):
data.append(["kor to eng", korean, english])
data.append(["eng to kor", english, korean])
eval_df = pd.DataFrame(data, columns=["prefix", "input_text", "target_text"])
return train_df, eval_df
그럼 이렇게 758만줄....wow.... 의 데이터가 나온다.
내가 모은 넷플릭스 데이터 11만줄인데 쨉도 안돼.....
'개발 > Python' 카테고리의 다른 글
UnpicklingError: invalid load key, 'v'. 문제 해결 (0) | 2021.04.27 |
---|---|
파이썬 \u200b 제거 (0) | 2021.04.26 |
f-string : 파이썬에서 문자열에 변수 넣어주기 (0) | 2021.01.25 |
Enumerate 함수 (0) | 2021.01.09 |
파이썬 =, == 차이 (0) | 2020.12.20 |