词嵌入简单入门教程

💡 原文中文,约6300字,阅读约需15分钟。
📝

内容提要

词嵌入和句子嵌入是将自然语言映射到向量空间的方法,词嵌入捕捉单词的语义关系,句子嵌入考虑句子内单词的顺序和上下文关系。常见的词嵌入模型有Word2Vec、GloVe和FastText,句子嵌入模型有InferSent和Universal Sentence Encoder。Transformer模型能够获取单词和句子的嵌入,并捕捉上下文信息。

🔎

延伸解读

静态词嵌入的局限:多义词与固定表示

Word2Vec和GloVe为每个词分配固定的向量,训练完成后不再随上下文变化。这意味着“bank”在“河岸”和“银行”两种含义下会得到相同的嵌入,模型难以区分多义词。这种静态表示在需要精细语义区分的任务中可能不够用,而Transformer通过注意力机制学习上下文嵌入,能根据周围词汇调整同一词的向量,从而缓解这一问题。

上下文嵌入的直观验证:相似度随语境变化

文章通过代码示例展示了BERT生成的上下文嵌入:同一“king”在积极句子和消极句子中的嵌入余弦相似度仅为0.574,远低于不同词在相同语境下的相似度。这说明嵌入值确实反映了语境的影响。读者可以借此理解,上下文嵌入不是固定的词典条目,而是动态的语义表示,其相似度比较需考虑具体句子环境。

标记化与词嵌入的获取:子词拆分与平均策略

使用Transformer时,文本先被标记化,长词可能被拆成多个子词标记(如“tokenization”拆为“token”和“#ization”)。要获得整个词的嵌入,文章采用对子词嵌入求平均的方法。这一策略简单实用,但也意味着词嵌入是子词嵌入的聚合结果,可能损失部分细粒度信息。读者应注意标记化方式是模型特定的确定性过程,不同模型对同一词的拆分可能不同。

❓

Q&A

词嵌入和句子嵌入有什么区别?

词嵌入是将单个词语映射到向量空间,关注单词级别的语义关系;句子嵌入是将整个句子映射到向量空间,考虑句子内单词的顺序和上下文关系,关注整个句子的语义信息。

常见的词嵌入模型有哪些?

常见的词嵌入模型有Word2Vec、GloVe和FastText。

Word2Vec和GloVe有什么局限性?

Word2Vec和GloVe为每个单词分配固定的向量表示,无法处理多义词,同一个词在不同上下文中的嵌入相同。

Transformer模型如何改进词嵌入?

Transformer模型通过注意力机制在任务上下文中学习嵌入,能够捕捉上下文信息,使同一个词在不同上下文中有不同的嵌入,从而处理多义词。

BERT模型中的[CLS]和[SEP]标记有什么作用?

[CLS]标记代表整个句子,[SEP]标记用于分隔句子,这些特殊标记是BERT训练时使用的格式。

当一个词被标记化拆分成多个子词时,如何获取该词的嵌入?

可以采用汇集策略,获取每个子词的嵌入,然后求平均值得到单词的嵌入。

🏷️

标签

➡️

继续阅读