当前位置: 首页 > news >正文

文本相似度计算--余弦定理和广义Jaccard系数

7.9余弦定理+空间向量--我的数学3 中简单地说了一下利用余弦定理来计算文本相似度。下面是利用余弦定理和广义Jaccard系数来计算文本相似度。

简单介绍一下Jaccard系数:广义Jaccard系数可以用于文档数据,并在二元属性情况下归约为Jaccard系数。广义Jaccard系数又称Tanimoto系数。(有另一种系数也称为Tanimoto系数)。该系数用EJ表示,由下式定义:
EJ(x,y)=(x*y)/(||x|*||x||+||y||*||y||-x*y)
其公式与余弦相似度的计算有点相似

ClusterUsingKmeans.rar 代码下载。

代码解析如下:
 class Word 表示一个词,来自于中文分词后的结果,其属性包括词频和特征值(关于特征值的计算会在以后介绍)

class Document 表示一个文档,对文档进行中文分词后,分别计算词的词频和特征值。
public double SimilitudeValueToDocumentUsingCos(Document Doc)  通过余弦定理计算相似度
public double SimilitudeValueToDocumentUsingGeneralizedJaccardCoefficient(Document Doc) 通过广义Jaccard计算相似度

public class LoadDict用于加载词库,词库使用sogou的 互联网词库 ,完全简单化计算词的特征。

class WordSegment为中文分词的简单封装,替换成网络上的中文分词组件即可。


实验结果下载  实验报告与数据.rar   77.txt为原始文档,77.txt对比其他文档得到的相似度报告可以在 实验报告.doc中查看
如下所示

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

使用COS(名词和成语)

使用COS(无限制)

使用Jaccard (名词和成语)

使用Jaccard (无限制)

53.txt

0.75956909998699

0.695630243577844

0.560566883431663

0.4670868864554

57.txt

0.832549281197672

0.784451145860574

0.711498783220936

0.635179493763215

75.txt

0.723232861947749

0.705986655123678

0.515174136459287

0.494265265766382

94.txt

0.944456910179154

0.864040767357343

0.624237679218324

0.760073520562129




PS: 通过查看文本的内容,可以发现五个文本之间都存在一定的相似。能得到文本的相似度之后,可以采用K-means等聚类算法对文本数据进行聚类。
K-means的算法过程可以通过网络得到。

转载于:https://www.cnblogs.com/TtTiCk/archive/2007/08/04/842819.html

相关文章:

  • 结构型模型Bridge
  • PHP实现程序单例执行
  • Visual C#.Net网络程序开发-Tcp篇(3)
  • [New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
  • ajax.net 我曾经轻视了他,郁闷。
  • 彻底去除Win10“快速访问”
  • 网络服务器时间发布地址
  • 《Python地理数据处理》——2.3 变量
  • 只能使用数组初始值设定项表达式为数组类型赋值。请尝试改用新的表达式
  • 《Total Commander:万能文件管理器》——12.3.高人高见
  • 在C#中应用哈希表(Hashtable)
  • 《Python数据可视化编程实战》——5.2 创建3D柱状图
  • c#.net中参数修饰符ref,out ,params的区别
  • 《JavaScript设计模式》——9.10 Factory(工厂)模式
  • 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
  • 时间复杂度分析经典问题——最大子序列和
  • ➹使用webpack配置多页面应用(MPA)
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • ERLANG 网工修炼笔记 ---- UDP
  • ES10 特性的完整指南
  • Fastjson的基本使用方法大全
  • go append函数以及写入
  • java概述
  • MaxCompute访问TableStore(OTS) 数据
  • PHP的类修饰符与访问修饰符
  • react 代码优化(一) ——事件处理
  • React组件设计模式(一)
  • SAP云平台里Global Account和Sub Account的关系
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 电商搜索引擎的架构设计和性能优化
  • 基于组件的设计工作流与界面抽象
  • 山寨一个 Promise
  • 深入浅出webpack学习(1)--核心概念
  • 树莓派 - 使用须知
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • Spring第一个helloWorld
  • 阿里云API、SDK和CLI应用实践方案
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # .NET Framework中使用命名管道进行进程间通信
  • # 计算机视觉入门
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)(1.11) SiK Radio v2(一)
  • (2)Java 简介
  • (6)STL算法之转换
  • (pytorch进阶之路)扩散概率模型
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (独孤九剑)--文件系统
  • (剑指Offer)面试题34:丑数
  • (力扣)循环队列的实现与详解(C语言)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core MongoDB数据仓储和工作单元模式封装