1. 句子嵌入技术概述
在自然语言处理领域,句子嵌入技术是将变长文本转换为固定维度稠密向量的核心技术。这种表示方法能够捕捉句子的语义信息,为下游任务如文本相似度计算、语义搜索等提供基础支持。
1.1 从词嵌入到句子嵌入
词嵌入技术(如Word2Vec、GloVe)解决了单个词语的向量表示问题,但面对句子或段落时,简单的词向量平均或拼接方法存在明显局限:
- 语义组合缺失:无法捕捉词语间的组合关系
- 词序忽略:"猫追狗"和"狗追猫"会被表示为相同向量
- 上下文无关:同一个词在不同语境下具有相同表示
提示:早期的词向量平均方法虽然简单,但在主题分类等粗粒度任务中仍能提供不错的基线性能。
1.2 句子嵌入的核心挑战
设计有效的句子嵌入方法需要解决几个关键问题:
- 变长输入处理:如何将不同长度的句子映射到相同维度的向量空间
- 语义保留:确保生成的向量能够反映句子的语义内容
- 计算效率:在实际应用中需要高效处理大量文本
- 迁移能力:训练得到的嵌入应能泛化到未见过的任务和领域
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 代表性句子嵌入方法
2.1 InferSent:基于自然语言推理的监督学习
2.1.1 模型架构
InferSent采用双向LSTM(BiLSTM)作为基础编码器,配合最大池化(Max Pooling)操作:
python复制class InferSentEncoder(nn.Module):
def __init__(self, vocab_size, embedding_dim, hidden_dim):
super().__init__()
self.embedding = nn.Embedding(vocab_size, embedding_dim)
self.lstm = nn.LSTM(embedding_dim, hidden_dim, bidirectional=True)
def forward(self, x):
embedded = self.embedding(x) # [seq_len, batch, emb_dim]
