问题标签 [sequencematcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
407 浏览

python - 在 Excel 电子表格中查找“相似”字符串的最佳搜索算法

我试图找出在 excel .xlsx 文档的指定列(不是所有列)中查找特定单元格的相似值的最有效方法。我目前的代码假定所有字符串都是未排序的。但是,我正在使用的文件和我将使用的文件都具有从 AZ 排序的字符串。因此,与其进行线性搜索,我想知道我可以使用什么其他搜索算法以及能够修复我的编码,例如(二进制搜索等)。

到目前为止,我已经创建了一个函数:find(). 在函数运行之前,程序从用户输入中获取一个值,然后将其设置为工作表名称。我在 excel 文档中打印出所有可用的工作表名称只是为了帮助用户。我创建了一个空数组results[]来存储好......结果。我创建了一个仅遍历 A 列的 for 循环,因为我只想遍历自定义列。我创建了一个名为start的变量,它是A 列中的第一个坐标,例如(A1 或 A400),这将根据循环所在的迭代而改变。我创建了一个名为next的变量,它将与start进行比较。接下来是技术上只是start + 1,但是由于我无法将 +1 添加到字符串中,因此我连接并键入强制转换所有内容,以便迭代变为A1-100的范围,或者在 A 列中有许多单元格。我的函数getVal()使用两个参数调用,坐标我们正在使用的单元格和工作表。从返回的值getVal()也在我的函数内部传递Similar(),该函数只是一个调用SequenceMatcher() from difflib. 相似只返回两个字符串相似程度的百分比。例如。similar(hello, helloo)返回 int 90 或类似的东西。如果字符串的相似度高于 40%,则调用相似函数后,会将坐标附加到results[]数组中。

这是一些看起来很讨厌的代码,所以我提前道歉。预期的结果应该只是“相似”的字符串列表。

0 投票
2 回答
52 浏览

python - 如何将一个变量中包含的文本与另一个变量匹配

所以,假设我有这行代码

现在,返回的比率是 0.47191011235955055,这是公平的。

我的问题是 - x 完全存在于 y 中。我希望得到一个失败的高匹配。换个角度看,我基本上是在寻找某种剽窃检测。

更新:更具体。在上面的示例中,我预计匹配率为 100%,因为 x 完全存在于 y 中。但是,在每个示例中,这可能不是一个明确的案例。

另一个例子:

这里 x 有一个额外的词,所以一些匹配方法会给我一个不太理想的匹配百分比(比如 90%),因为在 x 中只有一个名为“Herbert”的额外词在 y 中不存在。

0 投票
1 回答
203 浏览

python - 如何将一组二进制数组中的每个数组与该集合之外的数组进行比较

我有一组数组。我还有一个单独的数组 (T) 来比较集合中的每个数组。我尝试使用 SequenceMatcher 来执行此操作,但不知道如何循环它,以便将集合中的每个数组与 T 进行比较。

这是针对遗传算法的适应度函数。我是 python 新手,已经尝试了几件事。下面的代码可能是可笑的!

我希望输出是

以及每个数组与 T 的相似性百分比。
但我得到以下信息:

0 投票
0 回答
85 浏览

python - SequenceMatcher 无法区分“替换”和“插入”

第一个例子:

正确返回insert ff

现在,我想get_opcodes()找到 a'insert'旁边的 a 'replace'... 但它无法。

第二个例子:

返回:

在下一个示例中,我们强制识别差异。我添加了填充......令人惊讶的是它被忽略了......这太神奇了,因为'kk'在第一个示例中充当填充,阻止'gd'vs'hh'被视为'ff'插入的一部分

第三个例子:

返回:

再一次,当它明显存在时无法识别插入值ff 。

0 投票
4 回答
2316 浏览

python - 两个字符串匹配多少百分比?

我有 2 列疾病名称,我必须尝试匹配最佳选项。我尝试在 python 中使用“SequenceMatcher”模块和“fuzzywuzzy”模块,结果令人惊讶。我在下面粘贴了结果和我的疑问:

考虑有一种疾病“肝脏肿瘤”,我需要匹配最佳匹配名称“癌症,肝脏”或“癌症,乳房”。现在很明显,由于肝脏是一个匹配词,它应该很容易选择“癌症,肝脏”作为答案,但这并没有发生。我想知道在python中匹配的原因和更好的方法。

我的疑问是癌症,乳房如何比癌症,肝脏更匹配。我可以使用哪些其他技术来正确完成这项工作?

谢谢 :)

0 投票
0 回答
121 浏览

python - 使用 SequenceMatcher 在 python 中使用 numba 加速

尝试使用 numba 加速时遇到错误。还有什么加速的方法吗?注意“a”和“b”是熊猫数据框。我也有一个gtx1070ti,还有什么方法可以使用gpu吗?

0 投票
1 回答
284 浏览

python-3.x - 在 Python 中删除一列的相似文本行

输出:

我想用来difflib.SequenceMatcher删除低于80行的相似度分数,只保留一个。

如何在 Python 中获得如下预期结果?您可以使用difflib或其他 python 包。谢谢你。

0 投票
0 回答
81 浏览

python - 尝试根据三个常见列匹配两个 df,但它们都不相同

我有两个df

df1

df2

我想要的结果是 df2 中与 df1 几乎匹配的所有行

我尝试使用 for 循环的变体,使用SequenceMatcher并将阈值设置为 0.8 以上的匹配,但没有任何运气。

任何建议或指导将不胜感激。

0 投票
1 回答
97 浏览

python - 熊猫数据帧之间的 if 和语句

我有 2 个数据集,使用来自 df1 的数据我想使用 4 个条件识别 df2 中的重复数据。

  • 条件:

如果 df1 'Name' 列的一行与 df2 中 'Name' 列的任何行匹配超过 80%

(和)

(df1['Class'] == df2['Class'] (OR) df1['Amt $'] == df2['Amt $'])

(和)

如果 df1 中 'Category' 列的行与 df2 中 'Category' 列的任何行项匹配超过 80%

  • 结果:

如果满足所有条件,则仅保留 df2 中的新数据并删除其他行。

df1

df2


  • 我试过的代码:

所需的输出数据框应如下所示:

请帮助我找到最佳解决方案!:)

0 投票
0 回答
78 浏览

python - 如何为 2 个 excel 数据框创建 SequenceMatcher 循环

Hej 我目前有来自 2 个不同 excel 文件的 2 个数据帧

  • a=df_Web_Customer
  • b=df_Batchlog

例子

我有一个可以相互比较 2 个输入的函数:SequenceMatcher

我如何一次从 Dataframe a 中取出一个单元格并将其与 Dataframe b 中的每个单元格匹配?

我的最终目标是开发一个 if 语句对最大匹配进行排序,但我无法在堆栈上找到任何类似的案例,所以我希望可以提供任何帮助:)

编码: