【Educoder数据挖掘实训】用SMC相似度计算文本之间的相似度

【Educoder数据挖掘实训】用SMC相似度计算文本之间的相似度

开挖!

还是计算文本之间相似度的实训,跟前两关区别不大。

需要注意的是 S M C SMC SMC的计算方式 s = f 11 + f 00 f 11 + f 00 + f 10 + f 01 s = \frac{f11+f00}{f11+f00+f10+f01} s=f11+f00+f10+f01f11+f00

代码如下:

python 复制代码
import numpy as np  
import jieba  
jieba.setLogLevel(jieba.logging.INFO)  
  
def smc_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 ##########
    # 3. 统计各个文本在词典里出现词的次数  
    ########## Begin ##########
    word_counts_1 = np.array([len([word for word in seg1 if word==w]) for w in word_list])  
    word_counts_2 = np.array([len([word for word in seg2 if word==w]) for w in word_list])  
    ########## End ##########
    # 4. 余弦公式  
    ########## Begin ##########
    f00 = np.sum((word_counts_1 == 0) & (word_counts_2 == 0))  
    f01 = np.sum((word_counts_1 == 0) & (word_counts_2 != 0))  
    f10 = np.sum((word_counts_1 != 0) & (word_counts_2 == 0))  
    f11 = np.sum((word_counts_1 != 0) & (word_counts_2 != 0))  
    smc = (f00 + f11) / (f01 + f10 + f00 + f11)  
    ########## End ##########
      
    return smc  
  
str1 = "我爱北京天安门"  
str2 = "天安门雄伟壮阔让人不得不爱"  
  
sim1 = smc_similarity(str1, str2)  
  
print(sim1)
相关推荐
hans汉斯23 分钟前
【人工智能与机器人研究】基于力传感器坐标系预标定的重力补偿算法
人工智能·算法·机器人·信号处理·深度神经网络
cver12331 分钟前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
rui锐rui32 分钟前
商品销售数据分析实验
vue.js·数据挖掘·数据分析
FreeBuf_35 分钟前
新型BERT勒索软件肆虐:多线程攻击同时针对Windows、Linux及ESXi系统
人工智能·深度学习·bert
彭泽布衣43 分钟前
python2.7/lib-dynload/_ssl.so: undefined symbol: sk_pop_free
python·sk_pop_free
强哥之神1 小时前
Meta AI 推出 Multi - SpatialMLLM:借助多模态大语言模型实现多帧空间理解
人工智能·深度学习·计算机视觉·语言模型·自然语言处理·llama
成都极云科技1 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆1 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
一个处女座的测试2 小时前
Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
python·mysql·pytest
ai_xiaogui2 小时前
AIStarter用户与创作者模式详解:一键管理Stable Diffusion项目!
人工智能·stable diffusion·一键发布ai项目·熊哥aistarter教程·开发者必备aistarter