ginipick commited on
Commit
a9522e9
·
verified ·
1 Parent(s): bb7c4ad

Update src/main.py

Browse files
Files changed (1) hide show
  1. src/main.py +31 -32
src/main.py CHANGED
@@ -50,25 +50,28 @@ def translate_quoted_word(word):
50
  def translate_korean_to_english(text):
51
  """전체 텍스트 번역 함수"""
52
  try:
53
- # 입력 텍스트에서 따옴표 형식 검사 및 수정
54
- text = text.replace("'", "'").replace("'", "'") # 스마트 따옴표를 일반 따옴표로 변환
55
 
56
- # 잘못된 따옴표 위치 수정 (예: 한국'을 '한국'으로)
57
- text = re.sub(r"(\w+)'", r"'\1'", text)
58
-
59
- # 1. 따옴표로 묶인 부분을 찾아서 따로 번역
60
- quoted_words = find_quoted_words(text)
61
- translated_quoted = {}
62
-
63
- # 따옴표 안의 단어들 먼저 번역
64
  for word in quoted_words:
65
- translated = translate_quoted_word(word)
66
- translated_quoted[word] = translated
67
- # 임시 마커로 대체
68
- text = text.replace(f"'{word}'", f"QUOTED_{len(translated_quoted)}_")
69
-
70
- # 전체 문장 번역
71
- url = "https://translate.googleapis.com/translate_a/single"
 
 
 
 
 
 
 
 
 
72
  params = {
73
  "client": "gtx",
74
  "sl": "ko",
@@ -77,17 +80,14 @@ def translate_korean_to_english(text):
77
  "q": text
78
  }
79
  response = requests.get(url, params=params)
80
-
81
  if response.status_code == 200:
82
- translated_text = ' '.join(item[0] for item in response.json()[0] if item[0])
83
 
84
- # 번역된 텍스트에서 마커를 번역된 단어로 대체
85
- for i, (original, translated) in enumerate(translated_quoted.items(), 1):
86
- translated_text = translated_text.replace(f"QUOTED_{i}_", f"'{translated}'")
87
 
88
- # 불필요한 공백 정리
89
- translated_text = re.sub(r'\s+', ' ', translated_text).strip()
90
- return translated_text
91
  else:
92
  raise Exception(f"Translation API returned status code: {response.status_code}")
93
  except Exception as e:
@@ -108,7 +108,7 @@ def result():
108
  raise Exception("Translation failed")
109
 
110
  # 따옴표로 묶인 단어 추출 (번역된 영어 텍스트에서)
111
- quoted_words = re.findall(r"'([^']*)'", english_text)
112
 
113
  # 번역된 텍스트에서 따옴표 제거하고 ASL 변환
114
  clean_english = re.sub(r"'([^']*)'", r"\1", english_text)
@@ -138,16 +138,15 @@ def result():
138
  i = 0
139
  while i < len(processed_gloss):
140
  if processed_gloss[i] == 'FINGERSPELL-START':
141
- # 철자 처리 부분을 그대로 유지
142
- final_gloss.append(processed_gloss[i])
143
- i += 1
144
  while i < len(processed_gloss) and processed_gloss[i] != 'FINGERSPELL-END':
145
  final_gloss.append(processed_gloss[i])
146
  i += 1
147
- final_gloss.append('FINGERSPELL-END')
148
- i += 1
 
149
  else:
150
- # 일반 단어는 동의어 처리
151
  word = processed_gloss[i]
152
  final_gloss.append(sp.find_synonyms(word, nlp, dict_docs_spacy, list_2000_tokens))
153
  i += 1
 
50
  def translate_korean_to_english(text):
51
  """전체 텍스트 번역 함수"""
52
  try:
53
+ # 1. 따옴표로 묶인 단어 찾기
54
+ quoted_words = re.findall(r"'([^']*)'", text)
55
 
56
+ # 2. 따옴표 단어 개별 번역
57
+ translated_words = {}
 
 
 
 
 
 
58
  for word in quoted_words:
59
+ url = "https://translate.googleapis.com/translate_a/single"
60
+ params = {
61
+ "client": "gtx",
62
+ "sl": "ko",
63
+ "tl": "en",
64
+ "dt": "t",
65
+ "q": word
66
+ }
67
+ response = requests.get(url, params=params)
68
+ if response.status_code == 200:
69
+ translated = response.json()[0][0][0].upper()
70
+ translated_words[word] = translated
71
+ # 임시로 원본 텍스트의 따옴표 부분을 특수 마커로 대체
72
+ text = text.replace(f"'{word}'", "PROPER_NOUN_MARKER")
73
+
74
+ # 3. 전체 문장 번역
75
  params = {
76
  "client": "gtx",
77
  "sl": "ko",
 
80
  "q": text
81
  }
82
  response = requests.get(url, params=params)
 
83
  if response.status_code == 200:
84
+ full_translation = response.json()[0][0][0]
85
 
86
+ # 4. 번역된 문장에서 마커를 번역된 고유명사로 대체
87
+ for original, translated in translated_words.items():
88
+ full_translation = full_translation.replace("PROPER_NOUN_MARKER", f"'{translated}'", 1)
89
 
90
+ return full_translation
 
 
91
  else:
92
  raise Exception(f"Translation API returned status code: {response.status_code}")
93
  except Exception as e:
 
108
  raise Exception("Translation failed")
109
 
110
  # 따옴표로 묶인 단어 추출 (번역된 영어 텍스트에서)
111
+ quoted_words = [word.strip("'") for word in re.findall(r"'([^']*)'", english_text)]
112
 
113
  # 번역된 텍스트에서 따옴표 제거하고 ASL 변환
114
  clean_english = re.sub(r"'([^']*)'", r"\1", english_text)
 
138
  i = 0
139
  while i < len(processed_gloss):
140
  if processed_gloss[i] == 'FINGERSPELL-START':
141
+ final_gloss.extend(processed_gloss[i:i+2]) # START와 글자 추가
142
+ i += 2
 
143
  while i < len(processed_gloss) and processed_gloss[i] != 'FINGERSPELL-END':
144
  final_gloss.append(processed_gloss[i])
145
  i += 1
146
+ if i < len(processed_gloss):
147
+ final_gloss.append(processed_gloss[i]) # END 추가
148
+ i += 1
149
  else:
 
150
  word = processed_gloss[i]
151
  final_gloss.append(sp.find_synonyms(word, nlp, dict_docs_spacy, list_2000_tokens))
152
  i += 1