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

Python计算文本cosine similarity时字符串输入报float转换错误如何解决

错误原因
  • 调用cosine_similarity时直接传入了原始文本字符串,该函数仅支持接收数值型特征向量作为输入,这是报错的核心原因,和输入内容包含空格无关
  • 读取Excel的代码多写了一个多余的右括号,运行时会先触发语法错误
  • 已经在数据集上通过fit_transform拟合完成TF-IDF词典后,新输入文本不能再次执行fit操作,否则会出现特征维度不匹配的问题
修正后的完整代码
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 读取Excel文本列,修正语法错误并转成一维序列
text = pd.read_excel("Database1.xlsx", usecols='C').squeeze('columns')
new_input = input('Insert the sentence: ')

# 拟合TF-IDF向量器并转换数据集
tfidf_vectorizer = TfidfVectorizer(analyzer='word', stop_words='english')
tfidf_matrix = tfidf_vectorizer.fit_transform(text)
print(tfidf_matrix.shape)

# 将新输入转换为同维度TF-IDF向量
new_input_vec = tfidf_vectorizer.transform([new_input])
# 计算余弦相似度
similarity = cosine_similarity(new_input_vec, tfidf_matrix)
print(similarity)

# 可选功能:筛选相似度高于阈值的相似语句
threshold = 0.7
similar_res = text[similarity[0] > threshold]
print("匹配到的相似语句:")
print(similar_res)
关键修改说明
  • 新输入的文本不需要做float类型转换,完全保留输入空格,只需要用已经拟合好的TF-IDF向量器调用transform方法,转成和数据集维度一致的数值向量即可,注意输入要包裹在列表中,避免单字符串被按字符拆分
  • 用squeeze方法将读取到的单列DataFrame转成一维序列,适配TF-IDF向量器的输入要求
  • 所有导入语句统一放在代码顶部,符合Python编码规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:36:04