用Python計算文本的相似度

因為后期會需要用到這方面的知識,所以先提前准備准備;如何判斷網頁返回內容的相似度?

找到了幾個Python的方法和庫:

還有高大上的“TF-IDF方法”{之前在《數學之美》中看到過,但這里我就不考慮了}

下面主要記錄用不同的Python庫來計算兩段文本之間的相似度(最后要得到的就是一個百分比):

方法一:difflib12345678910

>>>importdifflib>>>difflib.SequenceMatcher(None,'abcde','abcde').ratio()1.0>>>difflib.SequenceMatcher(None,'abcde','zbcde').ratio()0.80000000000000004>>>difflib.SequenceMatcher(None,'abcde','zyzzy').ratio()0.0

方法二:Levenshtein

import Levenshtein 報錯:ImportError: No module named Levenshtein

於是去:python-Levenshtein 下載源碼進行安裝(在http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein其實也有編譯好的exe),第一次安裝的時候報錯:error: Unable to find vcvarsall.bat ,但其實我是裝了VS2010的,所以執行如下步驟正常安裝:

1.設置環境變量,執行:

SET VS90COMNTOOLS=%VS100COMNTOOLS%

2.再去安裝:

setup.py install

就可以正常,編譯,安裝了。123456789101112131415161718192021222324252627282930313233

$python>>>importLevenshtein>>>help(Levenshtein.ratio)ratio(...)Computesimilarityoftwostrings.ratio(string1,string2)Thesimilarityisanumberbetween0and1,it's usually equal orsomewhat higher than difflib.SequenceMatcher.ratio(), becuase it'sbasedonrealminimaleditdistance.Examples:>>>ratio('Hello world!','Holly grail!')0.58333333333333337>>>ratio('Brian','Jesus')0.0>>>help(Levenshtein.distance)distance(...)ComputeabsoluteLevenshteindistanceoftwostrings.distance(string1,string2)Examples(it's hard to spell Levenshtein correctly):>>> distance('Levenshtein', 'Lenvinsten')4>>> distance('Levenshtein', 'Levensthein')2>>> distance('Levenshtein', 'Levenshten')1>>> distance('Levenshtein', 'Levenshtein')01234567891011121314151617181920212223242526

gitclonegit://github.com/seatgeek/fuzzywuzzy.git fuzzywuzzycdfuzzywuzzypythonsetup.pyinstall>>>fromfuzzywuzzyimportfuzz>>>fromfuzzywuzzyimportprocessSimpleRatio>>>fuzz.ratio("this is a test","this is a test!")96PartialRatio>>>fuzz.partial_ratio("this is a test","this is a test!")100TokenSortRatio>>>fuzz.ratio("fuzzy wuzzy was a bear","wuzzy fuzzy was a bear")90>>>fuzz.token_sort_ratio("fuzzy wuzzy was a bear","wuzzy fuzzy was a bear")100TokenSetRatio>>>fuzz.token_sort_ratio("fuzzy was a bear","fuzzy fuzzy was a bear")84>>>fuzz.token_set_ratio("fuzzy was a bear","fuzzy fuzzy was a bear")100123456789101112131415

importdiff_match_patchtextA="the cat in the red hat"textB="the feline in the blue hat"dmp=diff_match_patch.diff_match_patch()  #create a diff_match_patch objectdiffs=dmp.diff_main(textA,textB)   # All 'diff' jobs start with invoking diff_main()d_value=dmp.diff_levenshtein(diffs)printd_valuemaxLenth=max(len(textA),len(textB))printfloat(d_value)/float(maxLenth)similarity=(1-float(d_value)/float(maxLenth))*100printsimilarity

上面這段代碼的思路也是先計算Levenshtein距離,然后再將其和兩字符串的最大長度相除,得到相似度(不清楚這樣和直接使用Levenshtein擴展有什么區別,畢竟那個直接是用C寫成的,速度可能還要快一些,直接一些)

python 拼音相似度_python 計算文本的相似度相关推荐

  1. java 余弦定理_Java實現余弦定理計算文本相似度

    相似度度量(Similarity),即計算個體間的相似程度,相似度度量的值越小,說明個體間相似度越小,相似度的值越大說明個體差異越大. 對於多個不同的文本或者短文本對話消息要來計算他們之間的相似度如何 ...

  2. MOSFET SOA評估與Tj溫度的計算

    SOA與Tj通常是用來評估MOSFET操作是否安全可靠的二個判斷機制,甚至當MOSFET發生損壞時,也會使用SOA與Tj來加以確認其計算結果是否在MOSFET所定義的規格之內 ~SOA(安全操作區域) ...

  3. python余弦定理求角_python实现的文本相似度算法(余弦定理)

    只对汉字进行相似度分析,以单个字为向量,然后每个字在章节中出现的次数,便是以此字向量的值.现在我们假设: 章节1中出现的字为:Z1c1,Z1c2,Z1c3,Z1c4--Z1cn:它们在章节中的个数为: ...

  4. python 文本相似度_python实现的文本相似度算法(余弦定理)

    只对汉字进行相似度分析,以单个字为向量,然后每个字在章节中出现的次数,便是以此字向量的值.现在我们假设: 章节1中出现的字为:Z1c1,Z1c2,Z1c3,Z1c4--Z1cn:它们在章节中的个数为: ...

  5. python 拼音姓名排序_Python一秒将全部中文姓名转为拼音!

    有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例! 一.xpinyin 开门见山,Python中文字转拼音可 ...

  6. python两条曲线图片相似度_Python比较两个图片相似度的方法

    本文实例讲述了Python比较两个图片相似度的方法.分享给大家供大家参考.具体分析如下: 这段代码实用pil模块比较两个图片的相似度,根据实际实用,代码虽短但效果不错,还是非常靠谱的,前提是图片要大一 ...

  7. python二十四点_Python秒算24点,行还是不行?

    周末闲来无事,看到隔壁家的老王在和隔壁家的媳妇玩24点,就进屋看了看.发现老王是真不行啊,那不行,这也不行. 就连个24点都玩不过他媳妇,给他媳妇气的,啥都不能满足,这不能,那也不能. 我坐下来和他媳 ...

  8. python输出箭头代码_python matplotlib 注释文本箭头简单代码示例

    注释文本箭头 结果展示: 完整代码示例: import numpy as np import matplotlib.pyplot as plt fig,ax = plt.subplots(figsiz ...

  9. python情感分析中文_Python有趣|中文文本情感分析

    前言 前文给大家说了python机器学习的路径,这光说不练假把式,这次,罗罗攀就带大家完成一个中文文本情感分析的机器学习项目,今天的流程如下: 数据情况和处理 数据情况 这里的数据为大众点评上的评论数 ...

最新文章

  1. 人工智能们再也不用担心撞上玻璃橱窗了
  2. 计组—双端口与多模块存储器
  3. SQL(八)- python执行SQL语句
  4. java c 基本类型_java 基本数据类型
  5. Mysql学习总结(52)——最全面的MySQL 索引详解
  6. phpMyadmin出现错误提示
  7. 分布式、微服务与集群的区别
  8. angular4自定义组件非input元素实现ngModel双向数据绑定(转载)
  9. 凯撒密码中有数字怎么办_密码学入门之密码
  10. win10商店下载位置_win10应用商店下载的东西在哪
  11. 博通网卡管理软件Linux,博通网卡管理软件
  12. Clothes size calculation-衣服尺寸计算
  13. 实战无成本搭建php社工库,简单、高效、几T数据随便查,高效社工库搭建与数据库整理–深夜福利...
  14. 华为方舟编译器官网正式上线,写一篇你应该知道的科普文章
  15. 如何选择数字档案系统
  16. 分析社交电商运营模式_电商代运营
  17. Windows系统完全卸载删除 Node.js
  18. 目前宽带的接入方式有哪些
  19. 万达商业再递招股书:上半年派息35亿 腾讯与碧桂园是股东
  20. 小学数学计算机整合课后反思,2020小学数学教研组工作总结_小学数学教学反思心得五篇...

热门文章

  1. 关于Java加载类顺序的问题
  2. 【ubuntu】修改文件所属用户
  3. 小白安装Ubuntu 18.04 LTS
  4. 2021年美容师(高级)考试内容及美容师(高级)找解析
  5. 这8大信用卡秘密!银行绝不会说
  6. opencv 使用直方图匹配数字
  7. STS 编辑器与Myeclipse工作空间冲突问题
  8. C语言实现冒泡排序(图解)
  9. 浅聊OpenSL ES音频开发
  10. 2022年阿里云双十一金秋云创季:轻量应用服务器2核2G,1年低至49.68元