不同语境下相同词汇的Word2Vec向量差异及解决方案技术问询
Word2Vec相同词汇向量差异问题解答
相同词汇是否会得到不同向量
原生静态Word2Vec训练完成后,相同词汇的向量完全一致,不会出现差异。
Word2Vec的核心设计是为训练语料中出现的每一个唯一词汇维护一张独立的嵌入表,推理阶段仅通过词汇的字符串匹配查表返回对应向量,完全不感知词汇当前出现的上下文,因此不管同一个词出现在语料的哪个位置、前后文是什么,返回的向量都是同一个。
只有以下特殊场景会出现相同词汇向量不同的情况:
- 用不同训练语料、随机种子、超参数训练了多个独立的Word2Vec模型,同一个词在不同模型的嵌入表中对应向量自然不同
- 从尚未收敛的训练过程中不同阶段抽取的同一个词的向量存在差异
- 对原生Word2Vec做了自定义改造,打破了一词一向量的对应逻辑
实现相同词汇不同向量的解决方案
如果你需要让同一个词在不同上下文下输出不同的向量(解决多义词区分等需求),有以下几种成熟的实现方案:
- 改用动态词向量模型:直接使用BERT、RoBERTa等上下文预训练语言模型,这类模型输出的词向量会结合输入文本的全局上下文信息,同一个词在不同语义环境下会自动输出匹配当前语义的向量,是目前该需求的首选方案,效果好、落地成本低
- 采用多原型Word2Vec变体:可以直接使用现成的
Multi-Prototype Word2Vec改进模型,这类模型会为每个词汇学习多个语义对应的向量,推理时根据当前上下文自动匹配最贴合的语义向量输出,不需要改动原有Word2Vec的整体训练逻辑 - 自定义改造Word2Vec架构:如果必须使用原生Word2Vec的训练逻辑,可以提前对同一个词的所有上下文做聚类,为每个聚类分配独立的嵌入条目,推理时先匹配当前词的上下文所属聚类,再返回对应聚类的向量即可
内容的提问来源于stack exchange,提问作者Aspis
相关产品推荐
相关产品推荐

