写点什么

如何利用 ChatGPT 进行翻译 -- 精准翻译篇

  • 2024-03-27
    广东
  • 本文字数:3449 字

    阅读完需:约 11 分钟

如何利用ChatGPT进行翻译--精准翻译篇

背景

基于 chatGPT 来做翻译,不是什么新鲜事,如果你有使用 chatGPT 的习惯,很可能你已经在使用 chatGPT 进行翻译。但本次讨论的,或者说 AI 翻译需要解决的问题,和我们平常理解的翻译有所不同。


我们需要翻译的内容是游戏内道具、物品、任务、技能、对话、背景介绍等游戏内容的文案翻译,这种翻译对于翻译质量、本地化程度都有非常高的要求,因为这已经可以定义为核心资产。基于此,我们需要对 GPT 有针对性的优化,才能达成我们的目的。故,本次讨论的翻译,是质量高、本地化程度高的精准翻译。

问题 &难点

尽管我们使用了 GPT,加上自己的一些优化和方法论,翻译效果有明显提升。但比较遗憾的是,我们不得不得出,目前纯机翻依然无法替代专业翻译这样子的结果。主要有以下一些问题和难点。


一、前后翻译不一致。


对于同样一个词语,在多个语料中重复出现,但 GPT 每次翻译都不一致。


二、翻译的准确率,怎么提升?


如果只告诉 GPT 你需要翻译,那么准确率其实和通用的翻译工具的准确率,没有太大差别,如何发挥出 GPT 的优势?


三、GPT 机翻的效果,怎么快速评定?


当我们尝试使用 GPT 来做翻译工具,那么它翻译的结果如何?我们每次的调整,效果如何?翻译质量评定的速度,决定了你调优的速度。

解决问题的方法论

一、前后翻译不一致。


1、术语


在翻译中,有个名词–【术语】,指将某个词语固定翻译成某个词。那么这里又会延伸出两个问题:


  • 如何快速确定哪些词要作为术语

  • 如何让 GPT 知道术语的存在


将待翻译内容,进行分词(用开源分词工具)之后,统计每个词的词频,之后将词频较高的和词语需要特殊翻译的作为术语,之后由专业翻译人员翻译成对应语言,即为术语。


这里我使用的是 jieba 分词:


github.com/wangbin/jiebago
复制代码


在大批量的翻译中,分词完定出术语表,那么这个术语表其实也挺大的,少的几百个,多的上千,取决于你的语料多少。那么,如此庞大的词库都作为提示词,在 prompt 中给到 GPT,明显是不可行的。所以,我们采用的是,当需要翻译的语料中有出现术语表中的词语时,才将这个词语作为术语,在 prompt 中给到 GPT。大概的形式如下:


以下为专有名词:遇到[%s]请翻译成[%s]
复制代码


2、上下文


由前面可知,定术语其实不是一件容易的事,需要有人工的参与。是否有其它更智能的方法来解决问题呢?答案就是上下文,事实上,不仅仅是翻译,GPT 几乎所有的应用场景都可以用上下文来提升效果。


那么何为上下文呢?在中译英的翻译场景中,我举个例子吧。假设你有一批旧语料,其中有,【黄白之术】->【Midas Touch】。那么现在有一个语料:【黄白之术不是万能的,还需要一些其它的办法。】,这个怎么保证【黄白之术】按照之前的翻译结果来翻译呢?最好的方法就是通过将【黄白之术】的翻译结果当成上下文,如下:


curl https://api.openai.com/v1/chat/completions \  -H "Content-Type: application/json" \  -H "Authorization: Bearer $OPENAI_API_KEY" \  -d '{    "model": "gpt-3.5-turbo",    "messages": [      {        "role": "system",        "content": "Please translate the following into English."      },      {        "role": "user",        "content": "黄白之术"      },      {        "role": "system",        "content": "Midas Touch"      },      {        "role": "user",        "content": "黄白之术不是万能的,还需要一些其它的办法。"      }    ]  }'
复制代码


以上,就可以让 GPT 知道【黄白之术】的翻译已经固定,参照之前翻译即可。但,这又引出了一个新问题:我怎么知道待翻译的语料【黄白之术不是万能的,还需要一些其它的办法。】,在已有的旧语料中,已有【黄白之术】


这个翻译呢?这里就需要引入两个概念:


  • Embeddings:详情可以看 GPT 官方的文档(https://platform.openai.com/docs/api-reference/embeddings)。说白了就是所有的文本都可以转换出一个向量值,这个向量值在 GPT 中,由 1536 个浮点数组成的数组表示。

  • 向量数据库:常见的有 PostgreSQL 、Qdrant 等。可以存储向量值,并且可以检索某个向量值与数据库中已有的向量的关系。


除了旧有已知翻译的语料可以当做上下文意外,为了保持每次翻译的前后一致,其实也可以把先机翻出来的结果,当做上下文。举个例子,如果【黄白之术 1】先进行机翻被翻译成【Midas Touch1】,那么在翻译【黄白之术 2】时,也可以将【黄白之术 1】的翻译结果作为上下文,这样子就可以保证前后翻译一致。


3、热度/概率


如果了解 GPT 的基础原理,很容易就知道,GPT 其实是个文本接龙游戏,它根据已有的文本,推算出下个字出现概率最大的文本集。然后再跟你传参的热度/概率:temperature 或 top_p 从文本集中给出最终一个结果,之后,循环这个过程。



由上可知,在翻译的场景,如果想尽可能保持前后的翻译一致,以 temperature 为例,则是尽量低为好。推荐为 0.1 以下。

二、翻译的准确率,怎么提升?

1、prompt 优化


在所有 GPT 的应用场景中,大家都在说 prompt 优化,都知道要优化 prompt。但是,很少人会告诉你,应该怎么优化,优化到什么程度,怎么验证效果。对于这个,我有以下一些方法:


  • 给例子:所有对 GPT 的要求,尽量给出 2~3 个例子,GPT 会更好的理解。比如我要翻译的时候,注意首字母大写:


  大小写:\    示例:【开始游戏】 → 【Start Game】\    示例:【返回主菜单】 → 【Return to Main Menu】
复制代码


  • 如果可以,用英文写 prompt。

  • 调整 prompt,最好有现成的语料和正确的翻译,这样子可以在调整 prompt 后,快速机翻出结果,对比正确翻译,从而知道 prompt 的调整是否是正向。而,如何评定机翻效果,在下一节会详细讲解。


2、人工抽检


我们已经知道,机翻无法完全替代人工。说白了,机翻更多是提升人工翻译的效率,或者替代部分人工。那么,很容易就可以知道,由人工逐步抽检,比如先机翻出 10%,然后再人工校对这 10%,然后将这 10%作为正确翻译语料,理论上下一次机翻,准确率是会有提升。那么就会引出一个问题,如何最大限度的,提升人工抽检之后的准确率。答案显而易见,让抽检的样本具有代表性。什么意思呢?



假设有 9 条待翻译语料,如上图所示。理论上来说,红色框的 3 条语料,如果已经人工校对过,或者说已经翻译准确,那么剩下的所有文本,则可以全部翻译正确。那么红色框中的语料,则称为具有代表性的语料。


那么,在实际的翻译场景中,我们如何实现上面的例子。其实就是将每条待翻译的语料,通过向量,查找与它相似度高的语料,最后做统计。拥有相似度高语料数的语料,则为具有代表性语料。


理论上而言,每次机翻之后都人工抽检一部分之后,得到抽检部分的正确翻译,再应用这部分正确翻译进行下一轮机翻,准确率会一直提升,直到全部翻译完成。


3、合并翻译


对于无关联的语料在进行翻译时,一般都是逐条进行翻译。而对于人物对话、背景介绍、剧情介绍这样子的内容,则最好将整段对话合并一起翻译,GPT 能更好的理解前因后果,增加翻译的准确性。

三、GPT 机翻的效果,怎么快速评定?

在【prompt 优化】部分已经提到,在对 prompt 进行调优时,提前将待翻译语料,进行人工翻译,得出正确翻译,再将机翻结果与正确翻译进行对比,就可以得出,promept 调整是否为正向。那么,机翻结果,如何与正确翻译进行对比呢?


<https://arxiv.org/ftp/arxiv/papers/2202/2202.11027.pdf>
复制代码


以上是一篇比较专业的论文《关于机器翻译评测研究的综述性报告》。与我们需要解决的问题非常贴合。我总结一下,大概有以下几种方法:


hLEPOR/nLEPOR 这是文章作者提出的方法,在 WMT 历年的评测竞赛中屡次获得好成绩。hLEPOR 融合了长度惩罚、精确度、召回率、词序差异惩罚等多方面指标,nLEPOR 进一步采用 n-gram 模型。这类方法表现稳定优异。


BLEUBLEU 方法由于简单易用,已经被广泛应用于机器翻译的评测。尽管有一些已知缺陷,但经过多年发展,仍然是一种比较可靠的评测基准。


BERTscore基于 BERT 等预训练语言模型的 BERTscore 方法,利用神经网络强大的语义建模能力,能够更准确地评估翻译质量。这类预训练模型方法是当前的研究热点。


METEORMETEOR 同时考虑精确度和召回率,并使用语言学特征,能够相对全面地评估翻译质量。它与人工评价的相关性较好。


COMETCOMET 方法结合多语言预训练模型与源语言文本,拟合人工评分,是当前效果最好的基于深度学习的评测模型之一。


而目前比较通用的,就是 hlepor/nlepor 和 BLEU。


通过机翻结果与正确翻译结果,跑出 hlepor 分值或者 BLEU 分值,对比 prompt 调优前后的分值,即可知,调整是否为正向。BLEU 分值达到多少靠谱呢?这里有一份腾讯的实验报告,仅供参考:https://arxiv.org/pdf/2301.08745.pdf

翻译流程图


此文章来自于 37 手游——洪智彬
发布于: 刚刚阅读数: 4
用户头像

一群聪明的人做好玩的事 2018-11-16 加入

官网地址:https://37.com.cn github :https://github.com/37shouyou 加入我们:https://zhaopin.37.com

评论

发布
暂无评论
如何利用ChatGPT进行翻译--精准翻译篇_AI翻译_三七互娱后端技术团队_InfoQ写作社区