How We Built '直接翻译与含义确认' — A Two‑Pass Translation Pipeline with LLMs

개요

LectuLibre는 LLM을 활용한 책 번역 시 발생하는 모호성 문제를 해결하기 위해 '直接翻译与含义确认'이라는 2단계 번역 파이프라인을 개발했습니다.

주요 내용

* 문제점: 단일 단계의 직접 번역은 중의적 단어, 문화적 맥락이 포함된 고유명사, 관용구 등에서 뉘앙스를 놓치거나 오역하는 경우가 발생했습니다.
* 해결 방안: '直接翻译与含义确认'은 1단계에서 초벌 번역을 수행하고, 2단계에서 모호할 가능성이 있는 구문을 추출하여 LLM이 의미를 확인하고 더 나은 번역을 제안하도록 하는 2단계 프로세스를 도입했습니다.
* 구현:
* 1단계 (Direct Translation): 텍스트를 청크 단위로 나누어 LLM에게 보수적이고 직역에 가까운 번역을 요청합니다. 이 과정에서 모호할 수 있는 구문 목록을 함께 반환받습니다. Python 코드를 사용하여 FastAPI, background workers, async LLM 호출 방식으로 구현되었습니다.
* 2단계 (Meaning Confirmation): 1단계에서 식별된 모호한 구문에 대해 LLM을 한 번 더 호출하여 해당 구문의 문맥상 의미를 설명하고, 필요한 경우 더 나은 번역을 제안받습니다.
* 모호성 구문 선정: LLM이 제안하는 모호한 구문 외에도, 직접 번역이나 의역이 필요한 고유명사, 긴 구문 등을 추가로 선정하는 휴리스틱을 적용했습니다.
* 병렬 처리: 여러 모호한 구문에 대한 확인 과정을 asyncio.gather를 사용하여 병렬로 처리합니다.
* DB 저장: 번역 과정에서 확인된 모든 정보(원본 구문, 직접 번역, 의미 설명, 개선된 번역 등)를 데이터베이스에 저장하여 재학습 및 캐싱에 활용합니다.
* 트레이드오프 및 성능:
* 비용: 2단계 LLM 호출로 인해 페이지당 약 40%의 비용이 증가했지만, 저렴한 모델(DeepSeek) 사용, 모호한 구문 수 제한, 반복 구문 캐싱 등으로 완화했습니다.
* 지연 시간: 300페이지 분량의 책 번역 시간이 약 2분에서 5분으로 증가했으나, 품질 향상으로 수용 가능한 수준으로 판단했습니다.
* 정확도: 의미 오류가 있는 구문의 비율이 직접 번역만 사용했을 때 23%에서 2단계 프로세스 적용 후 6%로 크게 감소했습니다.
* 주요 교훈:
* 의미 확인 단계에서는 전체 청크의 문맥이 중요합니다.
* 단순한 문자열 치환은 문법 오류를 유발할 수 있어, LLM에게 번역 수정 프롬프트를 제공하는 방식이 더 안전합니다.
* 의미 설명은 사람이 검토할 때 번역 속도를 30% 향상시키는 데 기여합니다.
* 모델 선택이 프롬프트 엔지니어링보다 중요하며, 각 단계에 최적화된 다른 모델을 사용하는 것이 효과적입니다.
* 향후 계획: 책 전체에서 학습된 용어집을 구축하여 일관된 번역을 적용하고, LLM이 책의 전체적인 번역 전략을 제안하도록 하는 기능을 실험 중입니다.

시사점

'直接翻译与含义确认' 파이프라인은 LLM 기반 번역의 모호성 문제를 효과적으로 해결하여 출력 품질을 크게 향상시킬 수 있으며, 특히 관용구나 문화적 맥락이 중요한 텍스트 번역에 유용합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions