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

如何修复Spacy获取相似词时的TypeError错误?

问题解决:Spacy获取相似词时TypeError错误修复

错误原因

你拿到的most_similar是一个三元组,包含三个核心元素:

  1. 相似词的哈希ID二维数组(形状(1, n))
  2. 向量索引数组
  3. 相似度得分数组

你的代码错误地遍历了整个三元组,并且试图用数组对象作为键去nlp.vocab.strings中查找单词,而nlp.vocab.strings只接受单个整数哈希ID,因此抛出TypeError: only size-1 arrays can be converted to Python scalars。

修复步骤

  1. 从most_similar中提取出第一个元素(哈希ID数组),将二维数组转换为一维列表
  2. 遍历每个哈希ID,通过nlp.vocab.strings[id]映射到对应的单词

修复后的代码

import spacy
import numpy as np

# 加载预训练模型
nlp = spacy.load("en_core_web_md")

# 获取目标词向量
word_vec = nlp("japan").vector
# 调整向量形状以匹配most_similar的输入要求
word_vec = np.reshape(word_vec, (1, -1))

# 获取Top3相似词的三元组结果
most_similar = nlp.vocab.vectors.most_similar(word_vec, n=3)

# 将二维ID数组展平为一维列表
similar_ids = most_similar[0].flatten()
# 逐个转换为对应的单词
similar_words = [nlp.vocab.strings[id] for id in similar_ids]

print(similar_words)

补充说明

  • 使用flatten()可以通用处理不同形状的ID数组,比手动写[0][0]更灵活
  • 如果需要同时获取相似度得分,可以提取第三个元素:scores = most_similar[2].flatten(),再和单词配对输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:42:51