引言
在现代企业中,尤其是制药行业,多语言支持是必不可少的。传统的机器翻译存在准确度不足、成本高昂等问题。为了解决这些问题,我们开发了一套基于大语言模型(LLM)的智能翻译工作流,提供三种翻译模式:简单翻译 、增强型翻译 和专家型翻译。本文将详细介绍这套工作流的设计和执行过程,并通过实际案例展示其在提高翻译效率和准确性方面的优势。
自动翻译工作流技术实现
工作流程
- 标准化和分割内容:用户提交的内容经过标准化和分割,以便于处理。
- 识别和提取文本、表格和图形:根据文本类型和需求,自动或手动选择翻译策略。
- 翻译执行:服务调用模块启动翻译流程,使用LLM技术进行翻译。
- 回填和检查:翻译后的内容按原格式回填,并可选合规检查以确保无敏感内容。
工程设计细节
-
模块化设计:
- 数据预处理模块:接收和预处理原始翻译请求。
- 条件判断模块:根据业务规则决定翻译流程。
- 翻译执行模块:调用LLM进行翻译。
- 合规处理模块:规范翻译结果。
- 翻译文件生成模块:格式化最终结果。
-
参数和结果存储:使用数据库或文件系统存储输入参数和输出结果。
翻译模式
1. 简单翻译
- 直译:逐字逐句翻译,保持原有格式。
- 问题识别:审阅直译结果,找出不符合目标语言习惯的部分。
- 意译:根据直译和问题反馈进行意译,以确保流畅自然。
示例代码(Python):
python
import docx
def simple_translate(docx_file, from_language, to_language):
doc = docx.Document(docx_file)
texts = []
# 提取文本
for para in doc.paragraphs:
if para.text:
texts.append(para.text)
# 直译
translated_texts = []
for text in texts:
translated_text = translate(text, from_language, to_language) # 使用LLM进行直译
translated_texts.append(translated_text)
# 问题识别和意译
refined_texts = []
for i, text in enumerate(translated_texts):
# 审阅直译结果,进行意译
refined_text = refine_translation(text) # 根据直译和问题反馈进行意译
refined_texts.append(refined_text)
# 回填翻译后的文本
i = 0
for para in doc.paragraphs:
if para.text:
para.text = refined_texts[i]
i += 1
# 保存翻译后的文档
ts = time.strftime('%Y%m%d%H%M%S')
new_file_name = os.path.splitext(docx_file)[0] + f'_{ts}_translated.docx'
doc.save(new_file_name)
return new_file_name
2. 增强型翻译
- 初步翻译:使用LLM进行初步翻译。
- 专家审查:审查翻译内容,给出改进建议。
- 二次翻译:结合审查建议进行二次翻译。
示例代码(Python):
python
import docx
def enhanced_translate(docx_file, from_language, to_language):
doc = docx.Document(docx_file)
texts = []
# 提取文本
for para in doc.paragraphs:
if para.text:
texts.append(para.text)
# 初步翻译
translated_texts = []
for text in texts:
translated_text = translate(text, from_language, to_language) # 使用LLM进行初步翻译
translated_texts.append(translated_text)
# 专家审查和二次翻译
refined_texts = []
for i, text in enumerate(translated_texts):
# 审查翻译内容,进行二次翻译
refined_text = refine_translation_with_expert(text) # 根据审查建议进行二次翻译
refined_texts.append(refined_text)
# 回填翻译后的文本
i = 0
for para in doc.paragraphs:
if para.text:
para.text = refined_texts[i]
i += 1
# 保存翻译后的文档
ts = time.strftime('%Y%m%d%H%M%S')
new_file_name = os.path.splitext(docx_file)[0] + f'_{ts}_translated.docx'
doc.save(new_file_name)
return new_file_name
3. 专家型翻译
- 初步直译:使用LLM进行初步直译。
- 专家审查:对直译结果进行审查,提供专业修改建议。
- 反馈整合:结合专家反馈进行精细调整和优化。
示例代码(Python):
python
import docx
def expert_translate(docx_file, from_language, to_language):
doc = docx.Document(docx_file)
texts = []
# 提取文本
for para in doc.paragraphs:
if para.text:
texts.append(para.text)
# 初步直译
translated_texts = []
for text in texts:
translated_text = translate(text, from_language, to_language) # 使用LLM进行初步直译
translated_texts.append(translated_text)
# 专家审查和反馈整合
refined_texts = []
for i, text in enumerate(translated_texts):
# 审查直译结果,进行精细调整和优化
refined_text = refine_translation_with_expert_feedback(text) # 根据专家反馈进行精细调整
refined_texts.append(refined_text)
# 回填翻译后的文本
i = 0
for para in doc.paragraphs:
if para.text:
para.text = refined_texts[i]
i += 1
# 保存翻译后的文档
ts = time.strftime('%Y%m%d%H%M%S')
new_file_name = os.path.splitext(docx_file)[0] + f'_{ts}_translated.docx'
doc.save(new_file_name)
return new_file_name
文档格式保留和还原
使用结构化方法确保文档原始格式的保留。例如,使用python-docx库处理.docx文件,遍历文档中的所有段落、表格、内联形状以及页眉和页脚,提取文本内容,并将这些文本收集到一个列表中,为翻译工作做准备。
在翻译阶段,利用多线程执行提高效率,通过concurrent.futures.ThreadPoolExecutor创建线程池,并将待翻译的文本列表分配给translate函数进行并行处理。翻译完成后,将翻译后的文本准确地还原到原始文档的相应位置。
翻译效果测试
通过对比分析,自动翻译工作流能够保持原文档的格式与内容,自动化判断或人工指定三种不同的翻译方式,以适应不同的翻译需求。简单版翻译适用于快速浏览和非正式场合;增强版翻译适用于需要一定程度专业性的内部文档;专家型翻译在内容完整性、准确度和流畅度方面表现最佳,因此适用于更加正式技术文档。
回顾与总结
自动翻译工作流满足企业级的多元化内部翻译场景,有助于提升用户的翻译体验。这种方案不仅适用于制药行业,也可以拓展到其他垂直行业,如制造、零售、游戏等行业。