deftranslate_with_linebreaks(text):"""
줄바꿈을 유지하면서 텍스트 번역
text: str
return: str
"""lines=[line.strip()forlineintext.split('\\n')ifline.strip()]translated=translator(lines,batch_size=8)return'\\n'.join([t['translation_text']fortintranslated])
fromtransformersimportpipeline# 번역 모델 로드
translator=pipeline("translation",model="Helsinki-NLP/opus-mt-ko-en")deftranslate_with_linebreaks(text):"""줄바꿈을 유지하면서 텍스트 번역"""lines=[line.strip()forlineintext.split('\\n')ifline.strip()]translated=translator(lines,batch_size=8)return'\\n'.join([t['translation_text']fortintranslated])# 사용 예시
original_text="""안녕하세요.
저는 개발자입니다.
번역 테스트 중입니다."""translated_text=translate_with_linebreaks(original_text)print(translated_text)
개선 사항
1. 빈 줄 유지 버전
1
2
3
4
5
6
7
8
9
10
11
12
13
deftranslate_with_empty_lines(text):"""빈 줄도 유지하면서 번역"""lines=text.split('\\n')translated_lines=[]forlineinlines:ifline.strip():result=translator(line)[0]['translation_text']translated_lines.append(result)else:translated_lines.append('')# 빈 줄 유지
return'\\n'.join(translated_lines)
2. 에러 처리 추가
1
2
3
4
5
6
7
8
9
10
11
12
deftranslate_with_linebreaks_safe(text):"""에러 처리를 포함한 번역 함수"""try:lines=[line.strip()forlineintext.split('\\n')ifline.strip()]ifnotlines:return""translated=translator(lines,batch_size=8)return'\\n'.join([t['translation_text']fortintranslated])exceptExceptionase:print(f"번역 중 오류 발생: {e}")returntext# 오류 시 원본 반환
성능 최적화
Batch Size 조정
1
2
3
4
5
# 짧은 텍스트 많을 때
batch_size=16# 긴 텍스트 많을 때
batch_size=4