中文文本相似度计算的算法:

1、最长公共子串、编辑距离(基于原文本进行查找测试,)

可以进行改进

2、分词后进行集合操作。

Jaccard相似度、

1、分词,把需要判断文本分词形成这个文章的特征单词。最后形成去掉噪音词的单词序列并为每个词加上权重,我们假设权重分为5个级别(1~5)。比如:“ 美国“51区”雇员称内部有9架飞碟,曾看见灰色外星人 ” ==> 分词后为 “ 美国(4) 51区(5) 雇员(3) 称(1) 内部(2) 有(1) 9架(3) 飞碟(5) 曾(1) 看见(3) 灰色(4) 外星人(5)”,括号里是代表单词在整个句子里重要程度,数字越大越重要。

2、hash,通过hash算法把每个词变成hash值,比如“美国”通过hash算法计算为 100101,“51区”通过hash算法计算为 101011。这样我们的字符串就变成了一串串数字,还记得文章开头说过的吗,要把文章变为数字计算才能提高相似度计算性能,现在是降维过程进行时。hash算法的设置,就是python里面的字典。

3、加权,通过 2步骤的hash生成结果,需要按照单词的权重形成加权数字串,比如“美国”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区”的hash值为“101011”,通过加权计算为 “ 5 -5 5 -5 5 5”。

4、合并,把上面各个单词算出来的序列值累加,变成只有一个序列串。比如 “美国”的 “4 -4 -4 4 -4 4”,“51区”的 “ 5 -5 5 -5 5 5”, 把每一位进行累加, “4+5 -4+-5 -4+5 4+-5 -4+5 4+5” ==》 “9 -9 1 -1 1 9”。这里作为示例只算了两个单词的,真实计算需要把所有单词的序列串累加。

5、降维,把4步算出来的 “9 -9 1 -1 1 9” 变成 0 1 串,形成我们最终的simhash签名。 如果每一位大于0 记为 1,小于0 记为 0。最后算出结果为:“1 0 1 0 1 1”。

总结 simhash用于比较大文本,比如500字以上效果都还蛮好,距离小于3的基本都是相似,误判率也比较低

每篇文档得到SimHash签名值后,接着计算两个签名的海明距离即可。根据经验值,对64位的 SimHash值,海明距离在3以内的可认为相似度比较高。

海明距离的求法:异或时,只有在两个比较的位不同时其结果是1 ,否则结果为0,两个二进制“异或”后得到1的个数即为海明距离的大小。

Jaccard相似性系数

引用资料:http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html

(1)使用TF-IDF算法,找出两篇文章的关键词;

(2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);

(3)生成两篇文章各自的词频向量;

(4)计算两个向量的余弦相似度,值越大就表示越相似。

(5) 或者计算两个向量的欧几里德距离,值越小越相近

导入文档

1、分词(python jieba分词)

已安装、需要简单学习使用

2、用tf-idf计算词语权重 python scikit-learn计算tf-idf词语权重

简单理解tf-idf的原理,使用库函数

样例使用地址: http://www.tuicool.com/articles/U3uiiu

3、使用各个算法计算文档的相似度

python如何做文本相似性判断_文本相似度算法的整理和python实现相关推荐

  1. 文本相似度算法的对比及python实现

    文本相似度算法的对比及python实现 前言 通常我们有这样的需求:对两篇文章或者产品内容进行重复率查询. 为了解决类似的问题,罗列了一些常见的相似度算法,用python代码实现. 五种常见的相似度算 ...

  2. python英文文本情感分析_舆情信息浩如烟海?看看如何用Python进行英文文本的情感分析...

    市场每天都在生成海量的舆情信息,这些信息可以帮助我们识别市场情绪的转变.如果只是人工地去跟踪大量的舆论和研报显然缺乏效率.我们可以试试让机器来完成这个工作. 数据科学在数值领域中很常见,但这个不断壮大 ...

  3. python 适合做什么生意好_推荐 10 个有趣的 Python 练手项目

    想成为一个优秀的Python程序员,没有捷径可走,势必要花费大量时间在键盘后. 而不断地进行各种小项目开发,可以为之后的大开发项目积攒经验,做好准备. 但不少人都在为开发什么项目而苦恼. 因此,我为大 ...

  4. 学python后做什么工作好_学习完Python课程后可以做什么工作?

    Python作为人工智能.大数据的首选编程语言,也是进入编程世界的理想选择,已经成为了大家都在追求学习的语言,那么学习Python之后到底可以做什么呢?为您详细的介绍一下. 什么是Python?Pyt ...

  5. 世界之窗浏览器删除文本框信息_文本框——Excel里的便利贴

    工作表里面的单元格应该是足够我们来记录数据和信息了.但是文本框这个功能在工作表中还是存在,可以理解为便利贴功能. 插入文本框 1.点击"插入"选项卡. 2.然后点击"文本 ...

  6. python数据分析做什么作业好_知识星球 | 说说我为什么要做『python数据分析』社群...

    过去一段时间,很多人会问我: "现在的工作没有前途,该如何转行?" "我知道数据时代已经来了,我该如何学习,不让自己落伍?" "数据分析适用于生活和工 ...

  7. [转载] python模块的分类有哪些_整理了一份清单,常见Python问题的快速解答包

    参考链接: 使用随机数的自动井字游戏的Python实现 Python继续流行.同时,Web开发,数据科学和机器学习等领域的需求仍在不断增长,其中Python是这些领域中的通用编程语言. 随着对Pyth ...

  8. windows平台上编写的python无法在unix_【判断题】在Windows平台上编写的Python程序无法在Unix平台运行...

    [判断题]在Windows平台上编写的Python程序无法在Unix平台运行 更多相关问题 分别将下列物质滴入苯酚溶液中,产生白色沉淀的是A.浓溴水B.氢氧化钠溶液C.稀盐酸D.氯化铁溶液 有机物分子 ...

  9. python语言的实验心得体会_国产编程语言木兰被质疑换皮Python:当事人承认夸大、道歉...

    近日有报道称,中科院计算所的计算机体系结构国家重点实验室编译组成功研发了国产编程语言"木兰"(Mulan),主要面向物联网应用,可以成倍地提高应用执行效率,并且全面支持国产龙芯处理 ...

最新文章

  1. 全球智能驾驶产业全景图
  2. Hyper-V内存获取模式 内存权重
  3. api.dll自己的理解
  4. 知识图谱学习笔记-Cypher语句使用
  5. 2020牛客暑期多校训练营(第六场)H.Harmony Pairs 数位dp
  6. melogin.cn主页登录_melogin.cn登录官网
  7. 深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建
  8. ASP正则表达式对象 - New RegExp
  9. win10 mysql5.7.21_win10下mysql5.7.21解压版安装教程
  10. CSS word-wrap强制换行截断长字符串
  11. 第4.17章读书笔记
  12. UVA 12299 RMQ with Shifts 线段树
  13. 项目管理WBS工作分解如何做?【模板下载】
  14. 如何远程连接POSTGRESQL数据库
  15. .nsh 怎么样运行_如何在Ubuntu 18.04上使用nsh运行安全的远程命令
  16. Scala中Seq转Map的方法(:_*)
  17. c 语言程序设计复习,C语言程序设计复习题
  18. Gartner丨 边缘计算成熟度曲线 2019
  19. 玲珑oj 1032 (容斥原理或前缀和优化dp)
  20. [POI2005]DWU-Double-row

热门文章

  1. 【ArcGIS错误异常100问】之004:ArcGIS表转Excel超了65535限制解决办法
  2. 一次线上http连接被拒绝问题的排查
  3. 电商中常见的高并发怎么处理?
  4. 海尔转型启示录:制造业细分市场大有可为
  5. 托福考试可以用临时身份证吗?
  6. java反射无法获取_Java反射'无法设置'错误
  7. 10个完美的WordPress空白主题
  8. Android—Bitmap解析与应用
  9. 深入浅出--面向过程编程与面向对象编程
  10. mainui类JAVA什么意思_main ui是什么意思