[智能体-281]:静态词向量表的内容、使用方法详解、代码示例
静态词向量表Word2Vec/GloVe/FastText特点一个词语永久对应唯一向量不随上下文变化一、静态词向量表组成内容由两部分词索引字典嵌入权重矩阵vocab 字典word → index包含PAD、UNK、常规词汇emb_matrixshape[词总数 V, 向量维度 d]每行是一个词向量示例d3 维表格indexwordvector0[PAD][0.,0.,0.]1[UNK][0.1,-0.2,0.3]2苹果[0.52,0.13,-0.61]3香蕉[0.48,0.15,-0.59]4汽车[-0.72,0.33,0.11]二、使用方法1. 文本预处理步骤1分词 → 词语列表2词语查表转 id存在取index不存在→UNK(1)3短句补长→多余位置填PAD(0)4id 列表去词向量表索引对应向量得到句子矩阵示例苹果 汽车1. 分词[苹果,汽车]2. 转 id[2,4]3. 固定长度 5 补 PAD[2,4,0,0,0]4. 查表取出对应 3 维向量三、Python 简易代码示例python运行import numpy as np # 1.构造静态词向量表字典通过单词的名称找到其索引。 vocab { [PAD]:0, [UNK]:1, 苹果:2, 香蕉:3, 汽车:4 } # 词向量矩阵 V5, dim3通过索引找到其对应的N维向量。 emb_matrix np.array([ [0.0, 0.0, 0.0], # PAD [0.1, -0.2, 0.3], # UNK [0.52, 0.13, -0.61], # 苹果 [0.48, 0.15, -0.59], # 香蕉 [-0.72, 0.33, 0.11] # 汽车 ]) # 2.句子转id函数 def text2ids(word_list, max_len5): ids [] for w in word_list: if w in vocab: ids.append(vocab[w]) else: ids.append(vocab[[UNK]]) # 截断补PAD if len(ids) max_len: ids ids[:max_len] else: ids [vocab[[PAD]]]*(max_len-len(ids)) return np.array(ids) # 3.根据id取词向量 def ids2emb(ids): return emb_matrix[ids] # 测试 sent [苹果,汽车,飞机] #飞机不在词表→UNK word_ids text2ids(sent,max_len5) sent_emb ids2emb(word_ids) print(词语id,word_ids) print(句子向量\n,sent_emb)四、输出结果说明plaintext词语id [2 4 1 0 0] 句子向量 [[ 0.52 0.13 -0.61] [-0.72 0.33 0.11] [ 0.1 -0.2 0.3 ] [ 0. 0. 0. ] [ 0. 0. 0. ]]飞机无词汇→UNK(1)向量后两位补PAD(0)全零向量五、真实预训练词向量使用补充Word2vec/GloVe 文件加载读取 txt 词向量文件构建vocab字典emb矩阵两种使用模式冻结模式训练模型时词向量表固定不变经典静态用法微调模式下游任务反向更新词向量数值不再是原始静态向量词向量表数值含义静态词向量词向量里每一个浮点数代表词语在某一个隐语义维度上的权重 / 坐标整体 d 个数字 词语在 d 维语义空间的坐标。1. 一句话总结plaintext[0.52, 0.13, -0.61]苹果 三个数 3维语义空间的(x,y,z)坐标正数在该语义维度偏向正向特征负数在该语义维度偏向反向特征绝对值大小该词语在这个语义特征上强弱程度2. 具象举例3 个维度人为释义方便理解假设实际是神经网络模型推算出来的并不是人为定义的预先隐含 3 个语义维度维度 1水果属性维度 2电子产品属性维度 3交通工具属性表格词语向量释义拆解苹果[0.52, 0.13, -0.61]水果分高 (0.52)、微弱电子 (0.13)、非交通工具 (-0.61)香蕉[0.48, 0.15, -0.59]水果分高和苹果维度数值接近→空间距离近、语义相近汽车[-0.72, 0.33, 0.11]水果极低 (-0.72)、偏交通工具 (0.11)模型不会人为定义维度含义维度是模型自学习出来的隐含语义特征人没法直接看懂单个维度代表什么。3. 数值的来源数值由无监督训练Word2Vec/GloVe通过词语上下文共现规律学习得到经常出现在相同上下文的词在词向量表中各维度数值整体接近向量距离小几乎不共现的词各维度数值差异大向量距离大。4. 数值作用算相似度两个词向量做余弦距离数值越贴近词义越像送入神经网络作为词语的数字化特征供分类、分词、翻译等任务计算。5. 特殊向量数值含义PAD[0,0,0]填充占位无任何语义信息UNK 随机小数未知词的平均语义表征。补充单个数字没有独立语义不能单独拿某一位数字解释词义语义是整组向量共同组合表达。例只看第一个数 0.52 不知道含义结合全部 3 个数才能定位词语在空间位置。