用于翻译同形异义词的 Fasttext 对齐词向量

Posted

技术标签:

【中文标题】用于翻译同形异义词的 Fasttext 对齐词向量【英文标题】:Fasttext aligned word vectors for translating homographs 【发布时间】:2020-07-05 22:21:43 【问题描述】:

Homograph 是一个与另一个单词具有相同书面形式但具有不同含义的单词,例如以下句子中的right

成功在于做出正确的决定。 红绿灯后右转

英文单词“right”在第一种情况下被翻译成瑞典语为“rätt”,在第二种情况下被翻译成“höger”。通过查看上下文(周围的单词)可以正确翻译。

问题 1. 我想知道 fasttext 对齐的词嵌入是否可以帮助将这些同形异义词或具有多种可能翻译的词翻译成另一种语言?

[EDIT] 目标是查询模型以获得正确的翻译。目标是在给出以下信息时挑选正确的翻译:

目标语言中的两个(或多个)可能的翻译选项,例如“rätt”和“höger” 源语言中的周边词

问题 2。 我加载了 english pre-trained vectors model 和 English aligned vector model。虽然两人都接受过***文章的培训,但我注意到两个单词之间的距离有所保留,但数据集文件的大小(wiki.en.vec 与 wiki.en.align.vec)明显不同(1GB)。如果我们只使用对齐的版本不是很有意义吗?对齐的数据集没有捕获哪些信息?

【问题讨论】:

fastText 词嵌入不是上下文相关的:因此,对于每个词(无论含义如何),只有一个向量。 ELMo 和 BERT 等嵌入是上下文相关的。所以,对于“正确”这个词,根据上下文有不同的向量。 感谢您的回复@Anakin87。我一定会看看 ELMo 和 BERT。通过“fastText word embeddings are not contextual”,您是指使用skipgram模型训练的预训练数据集吗?在"Advanced readers: skipgram versus cbow" section 中声称是这样。我错过了什么?我想我没有正确解释这个问题。目标不是从模型中找到正确的翻译,而是在给出多个选项时选择目标语言中最接近的翻译。 Quote: > skipgram 模型通过附近的词来学习预测目标词。另一方面,cbow 模型根据其上下文预测目标词。上下文表示为目标单词周围固定大小窗口中包含的单词包......给定句子“....”和目标单词“silent”,skipgram 模型尝试使用随机接近的词,如“主题”或“神秘”。 cbow 模型获取周围窗口中的所有单词,例如 been, hackerly, on, the,并使用它们的向量之和来预测目标。 我只想说,在fastText中,“右”这个词对应一个且只有一个向量。在其他模型中,一个词可以对应于一些向量,这取决于上下文(根据含义)。见cs.hhu.de/fileadmin/redaktion/Fakultaeten/… 谢谢@Anakin87,非常感谢。对于我的情况,BERT 的计算成本似乎很高且工作量过大。 ELMo 看起来很有希望,但我找不到任何预训练的数据集来评估它。有指针吗? 【参考方案1】:

对于问题 1,我认为这些“对齐”的向量可能有助于翻译同形异义词,但仍然面临任何标记只有一个向量的问题——即使那个标记有多种含义。

您是否假设您已经知道right[en] 可以从某个外部表转换为rätt[se]höger[se]? (也就是说,你没有使用对齐的词向量作为主要的翻译手段,只是其他方法的辅助?)

如果是这样,一种可能会有所帮助的技术是查看rätt[se]höger[se] 中的哪一个更接近围绕您的特定right[en] 实例的其他词。 (您可以计算每个词与 right[en]n 个点内每个词的排名接近度,或计算它们与 right[en] 周围 n 个词的平均值的余弦相似度,例如。)

(如果您的更精确的单词在英语中有多个、替代的、非同形异义/非多义的翻译,您甚至可以使用 非对齐 词向量来执行此操作。例如,确定right[en] 的哪个含义更有可能,您可以使用correct[en]rightward[en] 的非对齐英文单词向量——rätt[se]höger[se] 的多义相关性较少——检查与周围环境的相似性话。)

可能会产生其他想法的文章是“Linear algebraic structure of word meanings”,令人惊讶的是,它能够梳理出同形异义词标记的替代含义,即使原始词向量训练不是 词义感知。 (他们模型中的“话语原子”是否可以在合并/对齐的多语言向量空间中同样找到,然后上下文词与不同原子的接近性是词义消歧的一个很好的指南?)

对于问题 2,您暗示对齐的词集的大小较小。您是否检查过这是否只是因为它包含的单词较少?这似乎是最简单的解释,只需检查哪些单词被遗漏了就会让你知道你失去了什么。

【讨论】:

感谢@gojomo,现在我正在尝试遵循先入为主的方法,并且只使用现有训练有素的数据集、工具和算法(fasttext、pymagnitude 等)而不是实现任何新算法。非常有趣的建议,目前我正在用 pymagnitude APIs 总结 sum(vectors.distance("höger",aroundList )) 之类的距离,并将其与我从“rätt”得到的进行比较。您的建议是使用vectors.similarity("höger", averageVec(surroundingList)) 代替? 仅使用未对齐的向量: 我知道如何使用未对齐的向量,但是当我在字典中查询一个单词时通常有几个候选者,这使得这种方法效率低下。 问题 2: 不,对齐和未对齐的英文向量都是 300 x 2519370。我还用瑞典向量检查了这一点,它们也是 300 x 1143273。 磁盘上wiki.en.vecwiki.en.align.vec 文件的相对大小是多少?这些都是文本格式吗? (如果是这样,您可以比较每行的前 10 行,也许看看其中一个或另一个是否指定为更高的十进制精度,例如 0.2170.21783356239,这可能是两个不同大小的磁盘文件的原因加载后产生完全相同的 V 向量 * D 尺寸 * 4 字节/浮点大小的内存。) 你是对的。小数精度是问题所在。对齐的只有 4 位小数精度,而未对齐的有 6 位。 谢谢,我接受了您的回复。如果您也回答我在第一条评论中提出的问题,并向我保证我正确理解了您的建议,我将不胜感激。 :) 性能对我来说很重要,我什至考虑连接周围的单词并使用 Fasttext 和 Glove 的子词嵌入来降低计算成本。

以上是关于用于翻译同形异义词的 Fasttext 对齐词向量的主要内容,如果未能解决你的问题,请参考以下文章

Fasttext原理

fastText 之其源码分析

同形异义字:看我如何拿到TaoBao.com的解析权

NLP——天池新闻文本分类 Task4:fasttext深度学习

掌握fasttext工具进行文本分类训练词向量的过程

掌握fasttext工具进行文本分类训练词向量的过程