这是一个基于反思工作流的机器翻译Python示例。主要步骤如下:
让大语言模型(LLM)将文本从 source_language
翻译为 target_language
;
让LLM反思翻译内容,提出建设性建议以改进翻译;
使用这些建议改进翻译。
通过使用LLM作为翻译引擎的核心,该系统具有高度可控性。例如,通过更改提示词,与传统的机器翻译(MT)系统相比,此工作流更容易:
修改输出的风格,例如正式/非正式。
指定如何处理成语和特殊术语,如名字、技术术语和缩写。例如,在提示中包括术语表可以确保特定术语(如开源(open source)、H100或GPU)的一致翻译。
指定语言的特定地区用法或特定方言,以服务于目标受众。例如,拉丁美洲的西班牙语与西班牙的西班牙语不同;加拿大的法语与法国的法语不同。
这不是成熟的软件,是Andrew在过去几个月的周末时间里玩转翻译的结果,加上合作者(Joaquin Dominguez、Nedelina Teneva、John Santerre)帮助重构代码。
根据我们使用BLEU分数对传统翻译数据集的评估,该工作流有时能与领先的商业产品竞争,但也有时不如商业产品。然而,我们也偶尔会通过这种方法获得出色的结果(优于商业产品)。我们认为这只是智能翻译的起点,这是一个有前途的翻译方向,具有显著的进一步改进空间,因此我们发布了这个示范以鼓励更多的讨论、实验、研究和开源贡献。
如果智能翻译能够生成比传统架构(如输入文本并直接输出翻译的端到端Transformer)更好的结果——这通常比我们这里的方法运行得更快/更便宜——这也提供了一种自动生成训练数据(平行文本语料库)的方法,可以用来进一步训练和改进传统算法。
欢迎提出改进建议和意见!
要开始使用 translation-agent
,请按照以下步骤操作:
需要使用Poetry包管理器进行安装。Poetry安装 根据您的环境,这可能有效:
pip install poetry
需要一个包含OPENAI_API_KEY的.env文件来运行工作流。参见.env.sample文件作为示例。
git clone https://github.com/andrewyng/translation-agent.gitcd translation-agent poetry install poetry shell # activates virtual environment
参见examples/example_script.py获取示例脚本。
Translation Agent在 MIT License 下发布。您可以自由使用、修改和分发代码用于商业和非商业目的。
以下是我们没有时间实验但希望开源社区能够探索的想法:
尝试其他LLM。 我们主要使用gpt-4-turbo进行原型设计。我们希望其他人也能尝试其他LLM以及其他超参数选择,看看是否有些在特定语言对上表现更好。
术语表创建。 什么是高效构建术语表的最佳方法——也许使用LLM——以确保我们希望一致翻译的最重要术语?例如,许多企业使用不广泛使用在互联网上的专用术语,LLM因此不知道这些术语,还有许多术语可以有多种翻译方式。例如,西班牙语中的“开源”可以是“Código abierto”或“Fuente abierta”;两者都可以,但最好在单个文档中选择一种并坚持使用。
术语表使用和实现。 给定一个术语表,最佳的包含方式是什么?
不同语言的评估。 它在不同语言中的表现如何变化?是否有改进使其在特定源语言或目标语言上表现更好?(注意,对于接近高水平表现的MT系统,我们不确定BLEU是否是一个好的度量标准。)此外,它在低资源语言上的表现还需要进一步研究。
错误分析。 我们发现指定语言和国家/地区(例如“在墨西哥口语化的西班牙语”)对我们的应用效果相当不错。当前方法的不足之处在哪里?我们特别想了解其在专业话题(如法律、医学)或特殊类型文本(如电影字幕)上的表现,以了解其局限性。
更好的评估。 最后,我们认为更好的评估(evals)是一个重要的研究课题。与生成自由文本的其他LLM应用一样,当前的评估指标似乎有所不足。例如,我们发现即使在我们的智能工作流更好地捕捉了上下文和术语的文档上,导致我们的人工评价者更喜欢我们的方法而不是当前的商业产品,但在句子级别的评估(使用FLORES数据集)中,智能系统的BLEU分数更低。我们是否可以设计更好的指标(也许使用LLM来评估翻译?)以在文档级别捕捉翻译质量,更好地与人类偏好相关?
一些学术研究团队也开始关注基于LLM和智能翻译。我们认为这是该领域的早期阶段!
ChatGPT MT: Competitive for High- (but not Low-) Resource Languages, Robinson et al. (2023), https://arxiv.org/pdf/2309.07423
How to Design Translation Prompts for ChatGPT: An Empirical Study, Gao et al. (2023), https://arxiv.org/pdf/2304.02182v2
Beyond Human Translation: Harnessing Multi-Agent Collaboration for Translating Ultra-Long Literary Texts, Wu et al. (2024), https://arxiv.org/pdf/2405.11804
语言表达习惯:在直译过程中,有些句子的表达不符合中文习惯,例如"prompt an LLM to translate a text"翻译为"提示大语言模型将文本翻译",可以改为"让大语言模型翻译文本"更符合中文习惯。
专业术语处理:在某些专业术语的翻译上,第一次出现时未提供英文原文,例如"BLEU分数"和"智能翻译",根据规则应提供英文原文"BLEU score"和"agentic translation"。
Markdown元素保留:直译中,所有的Markdown元素都已妥善保留,如标题、代码块和链接。
可读性和流畅性:某些句子的翻译较为生硬,不够流畅,例如"参见.env.sample文件作为示例",可以改为"请参阅.env.sample文件作为示例"。