点击蓝字
关注我们
本文主要讲解了自己在工作中,对图库里面的英文标签翻译成中文标签,所遇到的一些问题和解决方案。
问题的背景及来源
![](https://i-blog.csdnimg.cn/blog_migrate/c71d710e70cb56535e770012b6e7d7e2.png)
业务背景
东方IC(现在是头条的子公司)是一家图片版权售卖网站,致力于保护与传播第三方或者个人优质的图片资源,快速展示并推荐给需求方,促进图片资源在网络上快速生产、传播与使用。东方IC版权资源有几千万的高品质的编辑类和创意类图片,现在不限于服务于像头条号、商业化、问答这些大的业务线,也欢迎其他的业务接入东方IC的资源库,获取海量高品质的图片,扩展业务的维度,助力业务发展。
工作背景
我的工作是参与东方IC网站的图片搜索系统,解决如何将海量的图片资源和每个需求方千奇百怪的图片需求进行契合,在图片和需求之间发现一条最短通路。致力快速将最符合用户需求的的图片资源提供给用户,降低用户搜索资源的时间和成本,同时提高了用户从搜索到使用的转化率,提高网站的交易量。
业务背景
目前图片搜索主要有两种方式,一种是以图搜图,即查找和某图片结构、色彩、大小、构图、内容等特征类似的图片资源。另外一种便是关键字搜索,通过给图片打描述性文字标签(label),用户的图片需求也用描述性文字来表达(query),通过寻找label和query之间的联系,从而找到最贴合用户需求的图片资源。翻译工作的起因是,在东方IC资源库里面有大量的图片资源是来自国外市场,而这些图片资源的原始标签是用外语来描述的(english),如果想更好的在国内售卖,服务国内用户的搜索,需要把这些英文标签翻译成中文。
翻译的难点与失败案例
![](https://i-blog.csdnimg.cn/blog_migrate/c71d710e70cb56535e770012b6e7d7e2.png)
翻译的难点
英语中的单词和中文中的词语并不是一一映射的,某个英语单词往往对应一组含义风牛马不相及的中文词语,比如:英文 wave 可以翻译成海浪、挥手、波,而这几个词语,在中文中是毫无关系的。如何将英文单词在特定的场合下翻译成特定的、并且合适的中文单词是本文要解决的问题,也是难点所在。下面是列举的几个在翻译工作中失败的案例,从中也可以看出翻译工作对业务的影响也是非常大的。
失败案例1
下图是在某图站搜索关键词:“挥手” ,返回结果却大量展示海浪相关的图片,搜索和展示完全风牛马不相及,极大降低了用户体验和产品的技术打分。而导致搜索乌龙事件的原因就是在翻译代表海浪的图片的英文标签“wave”时,把它翻译了“挥手”。
失败案例2
这是在某图站搜索“蝙蝠”的返回结果,可以看到在返回结果中夹杂这几个根本不相关的表示“棒球”的图片,原因是把本来代表“棒球”的英文“bat”翻译成了"蝙蝠"。
失败案例3
下图是在某图站搜索“牙龈”的返回结果,里面却夹杂着“口香糖”的图片,原因是将表示“口香糖”的英文“gum”翻译成了“牙龈”。
可以看到,英文标签翻译失败的例子是很常见的,也是容易犯的错误,而翻译失败的影响也是很大的,不仅降低用户体验,也降低了用户给该产品的技术打分。
问题思路和解决方案
![](https://i-blog.csdnimg.cn/blog_migrate/c71d710e70cb56535e770012b6e7d7e2.png)
问题思路
一个英文往往会对应于好几个中文,简单从单词层面来讲,将英文单词翻译成其中的任何一个中文单词都是没有问题的、都是标准答案,这是语言的不同的点造成的。问题在于,在某个特殊的场景下,比如可以是在一个句子里面,或者一篇文章里面,某个英文只能代表其中一个中文的含义。比如:在上诉的失败案例中,这里的场景便是一张图片,一张图片可以涵盖很多东西,甚至可以通过一篇文章来描述它,所以它本身就是一个语境,在这个语境里面每个英文单词就具有了特殊的含义,所以在这里是不能随便把一个英文单词翻译成它的中文候选词其中一个的。我们要去理解某个英文具体的使用场景,找出在这个场景下该英文所代表的具体含义,要从它的环境出发,从它的附近出发,具体是从该英文单词周围的单词出发,一个单词周围的单词“影响或者决定”它的位置和含义,所以周围的单词一起来决定这个单词具体该翻译成中文候选词中的哪一个(一个胖子的朋友里面胖子比较多 -> 谁的朋友圈胖子比较多,谁是胖子的概率就比较大 <:)。
方案1:简单的语义场景理解
在方案 1 中,英文翻译时需要事先整理一份中英文翻译规则表单,其中包含的属性列有:待翻译英文单词,语义场景关联单词,中文候选词,举例如下:
方案实施步骤:在翻译单词wave时,如果它的其他关键词里面,含有场景关联单词,便把单词翻译成和场景关联单词对应的中文。比如:在图片的关键词中出现了wave,同时它还有其他关键词比如:沙滩或者大海或者游泳,有理由把wave翻译成海浪而不是挥手。
优点:
设计方案原理简单、易于理解。
方案使用容易,只要准备好规则表单,在翻译时简单查询一下即可。
缺点:
准备工作工程浩大,整理好一个涵盖常见中英文的规则表单需要耗费很大的人力。
准确度不高,待翻译英文的场景关联单词数量是巨大的,从中筛选满足翻译需求的单词并不简单,比如,关联单词太少导致图片的标签里面都没有出现,太多导致关联单词同时出现。
方案2:Word2Vec
方案 2 ,原理和方案 1 类似,是在方案 1 的基础上,进一步的扩展和量化,还是使用图片的其他的所有关键词来建立一个语义场景,决定英文单词的翻译方向, 不过这里我们把每个单词所处的语义场景转化成浮点数向量来表示,使得该方案更容易实施,也具有更高的准确度。这里的单词语义场景向浮点数向量的转换,采用开源的机器学习模型:Word2Vec,Word2Vec 是用于处理文本的双层神经网络,它的输入是文本语料,比如:人民日报所有文章、头条上的搜索媒体文章,输出则是一组向量,这些语料代表一个庞大的语义环境,而在这个语义环境里面,每个单词都有一个属于自己的空间位置,而这个位置便用一组向量来标示。其中动物和猴子的向量的相似度,是要比动物和桌子的相识度要高的。
下面展示了用头条的文章语料训练出来的,单词“偏爱”和“卓越”的浮点数向量,该向量便分别代表了它们在该语料环境下所处的位置。
计算两个单词在这个语境下的距离,这里采用的相似度度量为余弦相似度(Cosine Similarity)含义如下:
下面计算余弦相似度的python代码实现,可以用原始的math库实现,或者numpy库实现:
下面是方案 2 的使用样例,展示了两个不同场景下,wave的候选词列表所计算出来的相似度的值:
可以看出,在不同的语义环境下,wave的候选列表单词和场景关联单词的相似度是不一样的,而相似度最高的候选单词便是“较为”准确的翻译结果。
方案2具体实施流程:
遍历图片资源库,依次获取每张图片的属性信息,特别是,英文描述性标签。
调用云有道API接口,将每个英文标签转换成中文候选词列表。
针对每个英文标签和对应的候选词列表,计算每个候选词和其他所有候选词列表的余弦相似度并求和,取相似度最大的候选词,作为翻译目标,其余候选词丢弃。
依次计算每个英文标签,直到所有英文标签翻译完毕。
完整的计算代码如下:
结果展示:
长按识别二维码,关注今日头条技术团队