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

使用SpaCy实现电影推荐:获取最高相似度电影时遇TypeError问题

问题解决思路

你代码里有两个核心问题:

  • 错误遍历了输入描述x的每个字符(for token in x),导致每次处理单个字符而非整段描述,完全偏离了相似度计算的目标
  • 没有将相似度值与对应电影存入可迭代容器,直接对单个float值调用max()必然触发报错

修正后的代码

def movie_recommendation(x):
    # 读取并清理电影列表,去掉换行符
    with open("movies.txt", "r", encoding='utf-8') as file_read:
        movie_list = [line.strip() for line in file_read.readlines()]
    
    # 处理输入的整段电影描述,生成SpaCy文档对象
    input_doc = nlp(x)
    similarity_pairs = []
    
    # 计算每个电影与输入描述的相似度,存储为(相似度, 电影描述)元组
    for movie_desc in movie_list:
        movie_doc = nlp(movie_desc)
        similarity = input_doc.similarity(movie_doc)
        similarity_pairs.append((similarity, movie_desc))
    
    # 提取相似度最高的电影(元组比较优先匹配第一个元素)
    max_similarity, recommended_movie = max(similarity_pairs)
    
    print(f"推荐电影:{recommended_movie}")
    print(f"相似度:{max_similarity}")
    return recommended_movie

关键说明

  • 用列表推导式简化电影列表的读取和清理,比原循环更简洁高效
  • 直接将整段输入描述传入nlp()生成文档对象,避免了遍历单个字符的错误
  • 用similarity_pairs列表存储所有相似度与电影的配对,让max()可以遍历找到最大值
  • 元组比较时会优先对比第一个元素(相似度值),因此max(similarity_pairs)能直接返回相似度最高的电影条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:20:48