#程序员#传播“信息”而不是“病毒”!程序员用500多种语言翻译“洗手”( 二 )
于是我选择尝试通过在现有文档中找到短语本身或短语的组成部分(例如“洗手”或“你的手”)来构建“洗手”一词 。
为了找到这些 , 我使用Facebook Research的Multilingual Unsupervised and Supervised Embedding(MUSE)库训练了每个跨语言词向量 。 MUSE将单语言词向量作为输入(我使用fasttext生成了这些向量) , 并使用对抗性方法学习了从英语到目标向量空间的映射 , 该过程的输出是跨语言词向量 。
本文插图
一旦生成跨语言词向量后 , 我们便可以在目标语言文档中找到短语 。 事实证明 , 整个文档中非常清楚地使用了“洗脸”一词以及“手” , “洗你的”等分离的实例 。
对于每种语言 , 我都会在期望该短语出现的区域中搜索N-gram(基于英语并行匹配中的用法) 。 使用跨语言词向量对N-gram进行矢量化处理 , 并使用各种距离度量将其与英语短语的矢量化版本进行比较 , 向量空间中最接近英语短语的N-gram被确定为目标语言匹配 。
最后 , 将与他们的英语对应词相匹配的组成短语组合在一起 , 以生成目标语言中的“洗手”短语 。 这种组合再次利用了跨语言向量 , 以确保以适当的方式组合 。
例如 , 如果我们在目标语言中匹配了短语“洗脚” , 则必须将与“脚”相对应的N-gram替换成与“手”相对应的N-gram , 下面是伯利兹·克里奥尔(Belize Kriol)英语的示例:
本文插图
当然 , 在此匹配过程中我们做了些假设 , 所以这个过程很可能不会产生语法上正确的预测 。 例如 , 我假设在大多数语言中 , “手””一词和“脚”一词都是一个词长(词之间用空格和标点符号隔开) 。 这个假设肯定跟实际是有出入的 , 以后我们可以克服其中的一些局限性并扩展该系统 , 但是就目前而言 , 该方法可以在没有任何翻译系统支持的情况下提供相对可靠的多语言翻译结果 。
探索一条低数据条件下的短语翻译方法 到目前为止 , 我已经能够训练544种语言的跨语言词向量 , 我使用上面的方法尝试为找出这些语言 如何表示“洗手” 。
因为缺乏许多语言对的一致数据 , 所以我使用了单独的保留文档 , 其中也包含“洗手”的成分 , 以帮助验证所构造短语中的标记 。
以下是来自Ethnologue语言统计数据的翻译样本:
本文插图
构造的短语类似于参考译文 , 或者是“洗手”的替代表达方式 。 例如 , 在保加利亚语中 , 我预测为“умийръцете” , 而在Google翻译中 , 预测为“Измийсиръцете” 。 但是 , 如果我使用Google翻译对我的预测进行回译 , 我仍然会得到“洗手” 。
在某些不确定性因素下 , 我无法与参考译文(例如 , 所罗门群岛的Pijin [pis]或带有人工注释范畴进行比较 , 但我仍然可以验证“洗手”(wasim)和“手”(han) )分别用于其他必然谈及洗或手的参考文件中 。 使用此方法可以验证大约15%的翻译 , 我希望在收集参考词典时能进行更多的验证 。
请注意 , 即使对于像意大利语这样的高资源语言 , 我最多都使用每种语言的大约7000个句子来获得以上翻译 , 也不依赖于语言对之间对齐的句子 。 尽管存在数据非常匮乏 , 无监督情景 , 但对于两个系统都支持的语言 , 我仍然能够获得质量与Google Translate相似的短语 。
从某种程度上来说 , 这证明了我使用的这种“混合”方法(词向量的无监督对齐+基于规则的匹配)在将短语翻译成数据化很少的语言中 , 是行之有效的 。
推荐阅读
- #程序员#腾讯女程序员相亲遭对方嫌弃,晒出聊天记录感叹:太难了
- 「游戏」在任天堂Switch上倒贴30块钱“加班”,我一个程序员还觉得很刺激
- 『程序员』阿里程序员感慨:公司期权套牢了我,外面开五六万的薪资都不想接
- 【大数据】干货满满!2020版好程序员新电商大数据平台全套学习资料
- #信息安全#精励联讯为信息安全合规再添助益
- 「程序员小助手」奶奶大学同学让我别学Python了,吃枣药丸,劝我学汇编,说是时髦
- 「」iQOO Neo3更多信息曝光,安兔兔测试成绩公布
- 火星:NASA分享火星探索任务新信息:将使用三艘宇宙飞船
- 「用户」TikTok推出家长控制功能并禁止16岁以下用户直接发送信息
- 『Facebook』Facebook将通知那些曾接触有害新冠病毒信息的用户