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

如何用Spacy/tiktoken通过关键词相似度检测多平台产品重复评论

相似产品评论识别方案:SpaCy与tiktoken的实践

一、用SpaCy实现相似度计算

SpaCy的预训练模型自带词向量,可以直接计算文本间的语义相似度,完全满足你识别用词相似重复评论的需求,无需关注情感倾向。

步骤与代码示例

  1. 安装依赖与模型
    pip install spacy
    python -m spacy download en_core_web_md  # 英文评论用此模型,中文替换为zh_core_web_md
    
  2. 预处理与相似度计算
    直接利用SpaCy的Doc对象计算余弦相似度,无需复杂特征工程:
    import spacy
    
    # 加载预训练模型
    nlp = spacy.load("en_core_web_md")
    
    # 示例评论数据集
    reviews = [
        "This phone has great battery life and clear display",
        "Great battery life and clear screen on this phone",
        "The camera quality of this phone is terrible",
        "This phone's camera is really bad"
    ]
    
    # 批量处理评论为Doc对象
    docs = list(nlp.pipe(reviews))
    
    # 设置相似度阈值(可根据需求调整,比如0.8)
    SIMILARITY_THRESHOLD = 0.8
    
    # 遍历所有评论对,筛选相似项
    for i in range(len(docs)):
        for j in range(i+1, len(docs)):
            similarity = docs[i].similarity(docs[j])
            if similarity >= SIMILARITY_THRESHOLD:
                print(f"评论{i+1}与评论{j+1}相似,相似度: {similarity:.2f}")
                print(f"评论{i+1}: {reviews[i]}")
                print(f"评论{j+1}: {reviews[j]}\n")
    
    输出会识别出前两条、后两条分别为相似评论。

注意事项

  • 处理非英文评论时,替换对应预训练模型即可(如中文用zh_core_web_md)。
  • 可根据实际数据调整阈值,阈值越高,识别出的重复评论匹配度越严格。

二、用tiktoken配合嵌入实现相似度计算

tiktoken是OpenAI推出的高效分词器,本身不直接提供相似度计算,但可以配合嵌入模型(本地或云端)生成文本向量,再计算相似度,适合需要和大模型生态结合的场景。

步骤与代码示例

  1. 安装依赖
    pip install tiktoken scikit-learn
    
  2. 分词与向量计算
    这里用tiktoken分词后,结合TF-IDF生成向量,再计算余弦相似度:
    import tiktoken
    from sklearn.feature_extraction.text import TfidfVectorizer
    from sklearn.metrics.pairwise import cosine_similarity
    
    # 选择tiktoken的分词器(对应gpt-3.5-turbo的分词器)
    tokenizer = tiktoken.get_encoding("cl100k_base")
    
    # 自定义分词函数,适配TF-IDF
    def tik_tokenizer(text):
        return tokenizer.encode(text, allowed_special={"<|endoftext|>"})
    
    # 示例评论数据集
    reviews = [
        "This phone has great battery life and clear display",
        "Great battery life and clear screen on this phone",
        "The camera quality of this phone is terrible",
        "This phone's camera is really bad"
    ]
    
    # 用tiktoken作为分词器构建TF-IDF向量
    tfidf = TfidfVectorizer(tokenizer=tik_tokenizer, lowercase=False)
    tfidf_matrix = tfidf.fit_transform(reviews)
    
    # 计算相似度矩阵
    similarity_matrix = cosine_similarity(tfidf_matrix)
    
    # 设置阈值筛选相似评论
    SIMILARITY_THRESHOLD = 0.7
    for i in range(len(reviews)):
        for j in range(i+1, len(reviews)):
            if similarity_matrix[i][j] >= SIMILARITY_THRESHOLD:
                print(f"评论{i+1}与评论{j+1}相似,相似度: {similarity_matrix[i][j]:.2f}")
                print(f"评论{i+1}: {reviews[i]}")
                print(f"评论{j+1}: {reviews[j]}\n")
    
    若有条件使用OpenAI的Embedding API,也可以用tiktoken分词后生成官方嵌入向量,相似度计算会更精准。

三、两种方案对比

  • SpaCy:开箱即用,无需额外嵌入服务,适合本地处理中小规模数据集,语义相似度计算准确。
  • tiktoken:分词效率极高,适合大规模数据或需要和大模型嵌入结合的场景,灵活性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:10:09