Levenshtein计算相似度距离

使用Levenshtein计算相似度距离,装下模块,调用下函数就好。

拿idf还得自己去算权重,而且不一定准确度高,一般做idf还得做词性归一化,把动词形容词什么全部转成名词,很麻烦。

Levenshtein.distance(str1,str2)

计算编辑距离(也称Levenshtein距离)。是描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换。如

例如将eeba转变成abac:

① eba(删除第一个e)

② aba(将剩下的e替换成a)

③ abac(在末尾插入c)

所以eeba和abac的编辑距离就是3

备注:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein

1. Levenshtein.hamming(str1, str2)

计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字符的个数。如

2. Levenshtein.distance(str1, str2)

计算编辑距离(也成Levenshtein距离)。是描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入删除替换。如

算法实现 参考动态规划整理:http://www.cnblogs.com/kaituorensheng/archive/2013/05/15/3080990.html

3. Levenshtein.ratio(str1, str2)

计算莱文斯坦比。计算公式  r = (sum - ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离

注意:这里的类编辑距离不是2中所说的编辑距离,2中三种操作中每个操作+1,而在此处,删除、插入依然+1,但是替换+2

这样设计的目的:ratio(‘a‘, ‘c‘),sum=2,按2中计算为(2-1)/2 = 0.5,’a‘,‘c‘没有重合,显然不合算,但是替换操作+2,就可以解决这个问题。

4. Levenshtein.jaro(s1, s2)

计算jaro距离,

其中的m为s1, s2的匹配长度,当某位置的认为匹配 当该位置字符相同,或者在不超过

t是调换次数的一半

5. Levenshtein.jaro_winkler(s1, s2)

计算Jaro–Winkler距离

时间: 2024-10-15 05:03:14

Levenshtein计算相似度距离的相关文章

Levenshtein Distance莱文斯坦距离算法来计算字符串的相似度

转 理解起来不难,但是很实用. 核心公式就是下面:             (1) 1.百度百科介绍: Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数. 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance. 2.用途 模糊查询 3.实现过程 a.首先是有两个字符串,这里写一个简单的 abc和abe b.将

Levenshtein计算字符串的相似度

static void Main(string[] args) { Levenshtein(@"今天天气不错", @"今天的天气不错啊"); Console.Read(); } /// <summary> /// 字符串相似度计算 /// </summary> /// <param name="str1"></param> /// <param name="str2">

Java根据两点的经纬度来计算之间的距离

import java.util.HashMap; import java.util.Map; public class MapDistance { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 根据两个位置的经纬度,来计算两地的距离(单位为KM) * 参数为String类型 * @param lat1

计算经纬度、距离、方位角

1.根据两点经纬度计算其间距离,发现有3种公式,结果区别不是很大. 2.根据一点的经纬度与到另外一点的距离.方位角,计算另一点的经纬度,误差不是很大. 1 package com.zhs.util; 2 3 /** 4 * 5 * 计算经纬度.距离.方位角 6 * 7 * @author lillian.he 8 * @time 2016-06-02 9 * */ 10 public class CalculationLogLatDistance { 11 /** 12 * 地球赤道半径(km)

C#面向对象思想计算两点之间距离

题目为计算两点之间距离. 面向过程的思维方式,两点的横坐标之差,纵坐标之差,平方求和,再开跟,得到两点之间距离. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Classes_2_point_distance { class Program { static void Main(string[

余弦方法计算相似度算法实现

http://blog.csdn.net/cscmaker/article/details/7990600 余弦方法计算相似度算法实现 (1)余弦相似性 通过测量两个向量之间的角的余弦值来度量它们之间的相似性.0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1.从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向.所以,它通常用于文件比较. 详见百科介绍(点击打开链接) (2)算法实现的中未使用权重(IDF ---逆文档频率),使用词项的出现次数作为向量空间的值

模式识别之相似度计量---余弦计算相似度度量关于两句话的相似度

余弦计算相似度度量 相似度度量(Similarity),即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大. 对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何,一个好的做法就是将这些文本中词语,映射到向量空间,形成文本中文字和向量数据的映射关系,通过计算几个或者多个不同的向量的差异的大小,来计算文本的相似度.下面介绍一个详细成熟的向量空间余弦相似度方法计算相似度 向量空间余弦相似度(Cosine Similarity) 余弦相似度用向

基于谷本系数计算相似度

//这段程序写的是忽略偏好值基于谷本系数计算相似度 //这个算法是基于谷本系数. //这个值也叫做Jaccard系数,由两个用户共同表达过偏好的物品数目除以至少 //一个用户表达过偏好的物品数目而得(就是两者得交集除以两者得并集) package byuser; import java.io.File; import java.io.IOException; import org.apache.mahout.cf.taste.common.TasteException; import org.a

Mahout基于对数似然比更好的计算相似度

//基于对数似然比更好的计算相似度(量用户) //所谓对数似然比为选取两个用户进行比较的时后进行筛选 //相似性为可以解释为发生重叠为发生重叠的非偶然概率 package byuser; import java.io.File; import java.io.IOException; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.Recommender