【Educoder数据挖掘实训】用Cosine计算相似度

【Educoder数据挖掘实训】用Cosine计算相似度

开挖挖挖挖

这个题目跟上一个实训很类似,区别在于本关旨在计算文本的相似度。

这里虽然说的是文本相似度但是却没有提及顺序的问题,比如否定句"不喜欢"和疑问句"喜欢不"在本实训中认为是完全相同的。

首先计算方式是基于 j i e b a jieba jieba库中的函数 j i e b a . c u t jieba.cut jieba.cut,把句子拆分成不同的单词,喜欢不和不喜欢都会被拆分成"不"和"喜欢"。

然后将两个句子的词取并集作为词库,而后进行数量统计。

最后用 c o s i n e cosine cosine计算相似度即可。

计算公式为:
c o s = x 1 ∗ x 2 + y 1 ∗ y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 cos = \frac{x_1*x_2 + y_1 * y_ 2}{\sqrt{x_1^2 +y_1^2}\sqrt{x_2^2 + y_2^2}} cos=x12+y12 x22+y22 x1∗x2+y1∗y2

代码如下:

python 复制代码
import numpy as np
import jieba
def cosine_similarity(sentence1: str, sentence2: str) -> float:
    #1.实现文本分词
    ########## Begin ##########
    seg1 = [word for word in jieba.cut(sentence1)]
    seg2 = [word for word in jieba.cut(sentence2)]
    ########## End ##########
    #2.建立词库
    ########## Begin ##########
    word_list = list(set([word for word in seg1 + seg2]))#建立词库
    ########## End ##########
    word_count_vec_1 = []
    word_count_vec_2 = []
    for word in word_list:
        #3.统计各个文本在词典里出现词的次数
        ########## Begin ##########
        word_count_vec_1.append(seg1.count(word))
        word_count_vec_2.append(seg2.count(word))
        ########## End ##########
    vec_1 = np.array(word_count_vec_1)
    vec_2 = np.array(word_count_vec_2)
    #4.余弦公式
    ########## Begin ##########
    num = vec_1.dot(vec_2.T)
    denom = np.linalg.norm(vec_1) * np.linalg.norm(vec_2)
    cos = num / denom
    ########## End ##########
    return cos
str1="湖南是一个好地方"
str2="湖南好吃的在哪里"
sim1=cosine_similarity(str1,str2)
print(sim1)
相关推荐
机器人零零壹6 小时前
专访越擎科技创始人: 外骨骼的设计与仿真该如何入门
人工智能·具身智能·机器人仿真·离线编程·irobotcam·人形机器人设计
Cha0DD7 小时前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD7 小时前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain
2601_949221037 小时前
Splashtop赋能企业级远程办公全场景安全连接成选型优选
运维·人工智能·安全
阿拉斯攀登7 小时前
YOLO 视觉检测全栈核心名词指南:从训练调参到边缘部署,商用落地必懂
人工智能·yolo·计算机视觉·视觉检测·bytetrack
AAAAA92407 小时前
2026年车载机器人行业:技术突破与生态融合加速发展
人工智能·机器人·制造
科研实践课堂(小绿书)7 小时前
机器学习在智能水泥基复合材料中的应用与实践
人工智能·机器学习·复合材料·水泥基·混凝土
AI医影跨模态组学8 小时前
Hepatology(IF=16.8)复旦大学附属中山医院孙惠川、徐彬等团队:基于MRI影像组学动态变化预测HCC免疫治疗后病理完全缓解
人工智能
百万蹄蹄向前冲8 小时前
让TypeScript 再次伟大:愚人节前夜Claude Code意外开源与OpenClaw小龙虾打造 AI 原生开发新纪元
人工智能·typescript·node.js
智算菩萨8 小时前
【Tkinter】4 Tkinter Entry 输入框控件深度解析:数据验证、密码输入与现代表单设计实战
python·ui·tkinter·数据验证·entry·输入框