You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spacy中Token与Embedding向量空间的映射机制问询

Spacy中Token与Embedding的映射逻辑及端到端工作流

核心关联实体:字符串哈希表(StringStore)

Spacy中连接Token与Embedding的核心是StringStore——一个全局的字符串-哈希值映射表,同时也是向量表的索引来源。所有被处理的文本(包括Token的原文本、词元lemma等)都会被转换为唯一的32位哈希值,这个哈希值直接对应向量表中的索引位置,是Token与Embedding绑定的关键。

Spacy Token的存储形式

Token是一个包含多属性的数据结构,而非单纯的数字。每个Token对象包含text(原文本)、lemma_(词元)、hash(文本的哈希值)、vector(对应的嵌入向量)等属性。其中hash属性是连接到Embedding的数字标识,而Token本身是封装了分词、语法等信息的实体。

内部Token到Embedding的端到端映射流程

以Spacy内置向量模型为例,完整工作流如下:

  1. 模型初始化:加载Spacy模型时,会同时加载配套的向量表(如vectors.bin)和对应的StringStore。StringStore中预先存储了所有向量词的哈希映射,向量表则以哈希对应的索引为键存储向量值。
  2. 分词生成Token:输入文本经Spacy分词器处理后,生成Token对象列表。每个Token会自动计算text的哈希值,若配置了词元映射,也会计算lemma_的哈希值。
  3. 哈希查询与向量匹配:根据模型配置(默认使用Tokentext的小写形式哈希),用哈希值查询StringStore,得到对应的向量表索引。
  4. 向量赋值:若索引存在(即该词在向量空间中),从向量表中取出对应向量赋值给Token的vector属性;若不存在(未登录词OOV),则根据模型策略生成向量(如拼接子词向量、使用随机向量,或依赖模型的预训练OOV逻辑)。

与非Spacy生成Embedding(如Word2Vec)的关联逻辑

当导入外部Embedding(如Word2Vec模型)时,核心是字符串归一化与哈希对齐,步骤如下:

  1. 归一化外部词表:按照Spacy的文本处理规则(默认小写),对Word2Vec的词表进行归一化处理。
  2. 哈希映射对齐:将归一化后的每个词计算Spacy哈希值,查询StringStore:
    • 若词已存在于StringStore,将Word2Vec向量覆盖到向量表对应索引位置;
    • 若词不存在,将词添加到StringStore并分配新索引,同时将Word2Vec向量存入向量表的新索引位置。
  3. Token映射:后续分词生成的Token,会按照相同的归一化规则计算哈希,直接匹配到导入的Word2Vec向量。

例如:Word2Vec词表中有"cat"的向量,导入Spacy后,"cat"的哈希值会对应向量表的某个索引。当Spacy分词得到Token"Cat"时,默认会将其文本转为小写"cat"并计算哈希,从而匹配到对应的Word2Vec向量。

关于词元(Lemma)的映射说明

Spacy默认使用Token的原文本(归一化后)进行哈希映射,而非词元。若需要基于词元匹配Embedding,需通过自定义组件或修改模型配置,强制使用Token的lemma_属性计算哈希值,再关联到向量空间。

内容的提问来源于stack exchange,提问作者Satya R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:05:20