一.词项相似度 elasticsearch支持拼写纠错,其建议词的获取就需要进行词项相似度的计算:今天我们来通过不同的距离算法来学习一下词项相似度算法: 二.数据准备 计算词项相似度,就需要首先将词项向量化:我们可以使用以下两种方法 字符向量化,其将每个字符映射为一个唯一的数字,我们可以直接使用字符编码即可: import numpy as np def vectorize_words(words): lower_words = [word.lower() for word in words]
Levenshtein:莱文斯坦距离 Levenshtein的经典算法,参考http://en.wikipedia.org/wiki/Levenshtein_distance的伪代码实现的,同时参考了一些C++的实现,求字符串相似度. 下面求出结果是0.0~100.0, 表示为0%~100%. static inline int min(int a, int b) { return a < b ? a : b; } +(float)likePercentByCompareOriginText
一个如何识别相似语句的问题,于是上网找了找,一个叫Levenshtein Distance的算法比较简单,就写了段代码实现了一下,效果还不错. 这个算法是一个俄国人Lvenshtein提出的,用于计算两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.次数越少,表示两个字符串相似度越高. 用实例来讲解算法最直观,我们假设有两个字符串:test和est,需要经过以下几个步骤来获取LD值. 1.初始化一个矩阵 ┌──┬───────────┐ │ │test t e s t │ ├──┼───