가벼운 마음으로 시작한 작업인데 해야할 일이 산더미처럼 늘었다. 중국어 알못이라 알아들을 수 있는 영어, 한국어 번역본이 필요할 것 같아서 그 작업을 시작하기에 앞서, 우선 텍스트 파일을 가지고 정제하는 작업을 먼저 시작했다.
- 중국어 아닌 것 제외, 이모지 제외, 중복 제외
작업을 위해서 한 줄씩 text파일을 불러왔다.
with open(file_path, 'r', encoding = 'utf-16') as file:
b = file.readlines()
우선 중복인 문장들부터 제외해보기로 했다. 리스트의 담긴 값들의 중복 제거를 위해서 for문을 돌려준다.
new_list = []
for v in b:
if v not in new_list:
new_list.append(v)
중복을 제거한 이후, 중국어가 아닌걸 어떻게 제외할까 싶어서 찾아보니 파파고에서 언어감지 API가 있었다.
https://developers.naver.com/products/papago/detectLangs/detectLangs.md
text = "(*^▽^*)"
{"langCode":"unk"}
text = "(不听不听)寿终正寝(百年后和蓝哒哒)"
{"langCode":"zh-CN"}
text = "莫子渊:你胡说八道!!!"
{"langCode":"zh-CN"}
여기에서 {"langCode":"zh-CN"}의 return값을 가지는 문장만 추출하면 될 것 같았다. 그래서 이 작업을 수행하는 함수를 만들어서 진행했다.
def detectLangs(text) :
client_id = '발급 받은 ID'
client_secret = '발급 받은 Secret'
encQuery = urllib.parse.quote(text)
data = "query=" + encQuery
url = "https://openapi.naver.com/v1/papago/detectLangs"
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id", client_id)
request.add_header("X-Naver-Client-Secret", client_secret)
response = urllib.request.urlopen(request, data = data.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
return response_body.decode('utf-8')
위에서 만든 함수를 이용해서 중국어 문장만 추출하는 for문을 돌린다.
CNLists = []
for line in b :
if "zh-CN" in detectLangs(line) :
CNLists.append(line)
일련의 과정들을 한 번에 돌려본다. 다만 for문이 돌아갈 때 연결이 끊어졌다는 에러가 발생해서, 이 부분은 추후에 보완해야할 것 같다.
txt_files = glob("~path~./第二季 *")
for txt in txt_files :
# txt 파일 한 줄씩 불러오는 것 확인하기
with open(txt, 'r', encoding = 'utf-16') as file:
b = file.readlines()
# 중복인 문장 제외
new_list = []
for v in b :
if v not in new_list:
new_list.append(v)
len(new_list)
# 중국어인 문장만 추출
CNLists = []
for line in new_list :
if "zh-CN" in detectLangs(line) :
CNLists.append(line)
time.sleep(0.1)
if len(CNLists) % 30 == 0 :
print(len(CNLists))
# txt 파일 쓰기
path = "path" + txt.split('\\')[1]
with open(path, "w", encoding = 'utf-16') as file:
file.writelines(CNLists)
print(txt)
HTTPError: HTTP Error 504: Gateway Time-out 에러가 발생하길래 time.sleep(0.1)을 추가해줬다.
'python' 카테고리의 다른 글
Selenium을 이용한 파파고 번역 (0) | 2021.07.20 |
---|---|
弹幕(danmu/danmaku) 자막 스크래핑 (0) | 2021.07.19 |