【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)
相关推荐
吴佳浩26 分钟前
Memory Provider 实战:Hermes、Mem0、Honcho、Hindsight 为什么都这样设计?
人工智能·agent·ai编程
吴佳浩34 分钟前
企业级 Agent Memory 选型指南:如何构建可扩展的 Memory Service?
人工智能·agent·ai编程
Y幽谷客2 小时前
Python加载本地大模型(Qwen3.5 8B)
python·大模型
北方的银狐-Zero2 小时前
ERP 管执行,数据管标准,OntoL本体 管思考:企业智能化升级的规划图
大数据·人工智能·本体论
伞伞悦读2 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
浅安的邂逅2 小时前
260918-白帽把 OpenAI 论坛“打穿“了:攻防赛漏洞、账户被 Claude 入侵、模型偷偷掩盖不当行为
人工智能·大模型·ai编程·ai模型·行业动态
jinyishu_2 小时前
认识 AI Agent:概念、架构、设计模式与主流框架
人工智能
线上放牧人2 小时前
Windows删除图标缓存
windows·python·pyqt
Hrain-AI2 小时前
AI 爬虫三档授权工程落地:搜索放行、训练拦截、Agent 分层(附脚本)
人工智能·elasticsearch·milvus