Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法定量比较两个字符串的相似性_Python_String - Fatal编程技术网

Python 有没有办法定量比较两个字符串的相似性

Python 有没有办法定量比较两个字符串的相似性,python,string,Python,String,我有两条线可以说: s_1 = "This is a bat" s_2 = "This is a bag" 从定性的角度看,它们可以是相似的1,也可以不是0,在上面的例子中,它们因为g而不相似,而从定量的角度看,我可以看到一定程度的差异,我如何使用python计算后一个g从s_1到s_2的这种差异 我写下一个简单的代码: Per_deff = float(((Number_of_mutated_sites)/len(s_1))*100) 这段代码告诉我们两个长度相同的字符串之间的per_de

我有两条线可以说:

s_1 = "This is a bat"
s_2 = "This is a bag"
从定性的角度看,它们可以是相似的1,也可以不是0,在上面的例子中,它们因为g而不相似,而从定量的角度看,我可以看到一定程度的差异,我如何使用python计算后一个g从s_1到s_2的这种差异

我写下一个简单的代码:

Per_deff = float(((Number_of_mutated_sites)/len(s_1))*100)

这段代码告诉我们两个长度相同的字符串之间的per_deff,如果它们的长度不相同会怎么样。我怎样才能解决我的问题

您要查找的内容称为编辑距离

Edit distance是对一个字符串进行编辑以使其成为另一个字符串所需的编辑次数

这里还有一个快速实现:


您要查找的内容称为“编辑距离”

Edit distance是对一个字符串进行编辑以使其成为另一个字符串所需的编辑次数

这里还有一个快速实现:


如果我理解正确,您需要进行模糊字符串匹配。为此存在多个Python库,其中之一是


如果我理解正确,您需要进行模糊字符串匹配。为此存在多个Python库,其中之一是


您可以使用标准python库


您可以使用标准python库


您想要的东西类似于Levenshtein距离。它提供两条字符串之间的距离,即使它们的长度不相等

若两个字符串完全相同,则距离为0;若两个字符串相似,则距离较小

示例代码来自:


您想要的东西类似于Levenshtein距离。它提供两条字符串之间的距离,即使它们的长度不相等

若两个字符串完全相同,则距离为0;若两个字符串相似,则距离较小

示例代码来自:


您需要定义相异性函数。下面是一个示例:您需要定义相异性函数。这里有一个例子:Dhanyawaad,我将尝试用pythonDhanyawaad翻译它,我将尝试用python翻译它
from fuzzywuzzy import fuzz
s_1 = "This is a bat"
s_2 = "This is a bag"
fuzz.ratio(s_1, s_2)  # returns 92
fuzz.ratio(s_1, s_1)  # returns 100 (max score)
from difflib import SequenceMatcher


s_1 = "This is a bat"
s_2 = "This is a bag"
matcher = SequenceMatcher()
matcher.set_seqs(s_1, s_2)
print matcher.ratio()
// len_s and len_t are the number of characters in string s and t respectively
int LevenshteinDistance(string s, int len_s, string t, int len_t)
{ int cost;

  /* base case: empty strings */
  if (len_s == 0) return len_t;
  if (len_t == 0) return len_s;

  /* test if last characters of the strings match */
  if (s[len_s-1] == t[len_t-1])
      cost = 0;
  else
      cost = 1;

  /* return minimum of delete char from s, delete char from t, and delete char from both */
  return minimum(LevenshteinDistance(s, len_s - 1, t, len_t    ) + 1,
                 LevenshteinDistance(s, len_s    , t, len_t - 1) + 1,
                 LevenshteinDistance(s, len_s - 1, t, len_t - 1) + cost);
}