Spaces:
Building
Building
Update src/main.py
Browse files- 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 |
-
|
55 |
|
56 |
-
#
|
57 |
-
|
58 |
-
|
59 |
-
# 1. 따옴표로 묶인 부분을 찾아서 따로 번역
|
60 |
-
quoted_words = find_quoted_words(text)
|
61 |
-
translated_quoted = {}
|
62 |
-
|
63 |
-
# 따옴표 안의 단어들 먼저 번역
|
64 |
for word in quoted_words:
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
83 |
|
84 |
-
# 번역된
|
85 |
-
for
|
86 |
-
|
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 |
-
|
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 |
-
|
148 |
-
|
|
|
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
|