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

背景

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

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

问题&难点

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

一、前后翻译不一致。

1、术语

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

  • 如何快速确定哪些词要作为术语
  • 如何让GPT知道术语的存在

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

这里我使用的是jieba分词:

bash 复制代码
github.com/wangbin/jiebago

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

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

2、上下文

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

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

arduino 复制代码
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官方的文档(platform.openai.com/docs/api-re...)。说白了就是所有的文本都可以转换出一个向量值,这个向量值在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会更好的理解。比如我要翻译的时候,注意首字母大写:
css 复制代码
  大小写:\
    示例:【开始游戏】 → 【Start Game】\
    示例:【返回主菜单】 → 【Return to Main Menu】
  • 如果可以,用英文写prompt。

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

2、人工抽检

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

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

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

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

3、合并翻译

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

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

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

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

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

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

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

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

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

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

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

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

翻译流程图

此文章来自于37手游------洪智彬
相关推荐
多恩Stone1 小时前
【ModelScope-1】数据集稀疏检出(Sparse Checkout)来下载指定目录
人工智能·python·算法·aigc
da_vinci_x3 小时前
Firefly + Sampler:不连节点,光速量产游戏 VFX 特效贴图
游戏·aigc·贴图·建模·游戏策划·游戏美术·pbr
程序员小灰6 小时前
谷歌AI模型Gemini 3.0 Pro,已经杀疯了!
人工智能·aigc·gemini
韩数6 小时前
小白也能看懂! 今年爆火的 MCP 协议究竟是什么?写给普通人的 MCP 指南
后端·aigc·mcp
穷人小水滴19 小时前
科幻小说计划 (顾雪) (AIGC)
aigc·午夜话题·科幻
小溪彼岸21 小时前
初识Qwen Code CLI
aigc
小溪彼岸21 小时前
Gemini CLI可以使用Gemini 3 Pro了
aigc·gemini
小溪彼岸21 小时前
Google 发布 Antigravity Agent编辑器
google·aigc
带刺的坐椅1 天前
Solon AI 开发学习5 - chat - 支持哪些模型?及方言定制
java·ai·openai·solon
用户5191495848451 天前
Ash框架授权绕过漏洞分析:当绕过策略条件评估为真时
人工智能·aigc