问题标签 [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.
python - 比较一个csv的两列并在另一个csv中输出字符串相似率
我对python编程很陌生。我正在尝试获取一个包含两列字符串值的 csv 文件,并希望比较两列之间字符串的相似度。然后我想取值并将比率输出到另一个文件中。
csv 可能如下所示:
我希望输出文件为每一行显示第 1 列中的字符串与第 2 列的相似程度。我正在使用 difflib 输出比率分数。
这是我到目前为止的代码:
我得到错误:
我觉得我没有正确导入列列表并针对 sequencematcher 函数运行它。
python - difflib.SequenceMatcher isjunk 参数不考虑?
在 python difflib 库中,SequenceMatcher 类的行为是否异常,或者我是否误读了假定的行为?
为什么 isjunk 论点在这种情况下似乎没有任何区别?
我的理解是,如果省略空格,则比率应为1。
python - 使用 SequenceMatcher 进行列表对齐的自定义项
我正在使用 SequenceMatcher 来对齐两个列表。每个列表的项目是元组或整数。要求是,对于包含特定整数的元组被认为是相等的。例如:
为此,我决定重写元组的相等方法:
这是我的示例数据:
使用 SequenceMatcher,我预计比率将为 1.0(等于)。但结果如下:
但是当我尝试使用 '==' 运算符比较列表时,结果是相等的:
谁能指出出了什么问题?谢谢。
python - 近似名称匹配以合并两个数据框python
我正在使用两个数据框(df1 和 df2),我想根据名称匹配将 df2 合并到 df1 中,但两者之间的名称不完全匹配(例如:'JS Smith' 可能是“JS Smith ( Jr)") 和 df1 中的名称位于由“|”分隔的列表中 用于各种名称变体。
此外,我在 df2 中还有 1 列包含稍微不同的名称,如果原始列中没有匹配项,我想回退到这些名称。
最后,如果 df1 中有一个唯一匹配项,我只想从 df2 中引入数据,并且我不想覆盖之前引入的条目。
以下是 dfs 的示例:
df1(其中 N1 表示名称变量列表中的第一个名称)
df2
我想先在“Name Type 2”上进行匹配假设匹配是:
- 名称 0.1 -> N1|N2 中的名称之一(df1 的第 1 行)
- 名称 2.1 -> N1|N2|N3|N4 中的名称之一(df1 的第 0 行)
- 名称 1.1 -> 不匹配 df1 中的任何名称,然后我会检查与 N1|N2|N3 匹配的名称 1(df1 的第 2 行)
生成的新 df 如下所示:
我目前的做法是:
- 遍历 df2 中的每一行并使用搜索 df1
df1[df1['Name Variants'].contains('Name0.1')
- 如果存在唯一匹配项(在 df1 中找到 1 行)并且“匹配”未标记为“真”,那么我会提取数据
- 如果有多个匹配项,我不会提取数据
- 如果没有匹配项,我使用相同的方法搜索“名称 0”并再次运行相同的逻辑(1 个匹配项,当前没有合并数据等)
我的问题是:
- 考虑到这是非常耗时的
- 我不匹配,因为我可以给出最初描述的轻微拼写差异
这是我当前方法的代码:
python - 如何删除python中多个字符串之间的无效字符?
我正在使用西班牙语OCR 进行一个项目。相机在一行文本中捕捉不同的帧。文本行包含以下内容:
Este texto, es una prueba del dispositivo lector para no viidentes。
经过一些操作后,我得到了这样的字符串:
我想加入字符串,以便我可以在最终字符串中获取扫描行的文本,如下所示:
一开始我尝试SequenceMatcher
在两个字符串之间使用,但它没有效果:
结果包含无效字符,例如|
or !
:
之间s2
和s3
:
等等我在 Windows 7 上使用 python 2.7。
python - 在两组名称之间找到最接近的近似匹配
我有两组名称,我想找到两者之间最接近的匹配项,如果没有找到“足够接近”的匹配项,我想将名称与其自身匹配。
我目前的方法是创建一个包含所有可能组合的数据框,并使用 .apply 或列表来迭代并通过 SequenceMatcher(导入为 sm)计算相似度。
问题是我在两个列表中都有几千个名字,这导致了难以处理的运行时间。
理想情况下,我的匹配标准是 sm 比率 >= 0.85,第一个名字在第二个名字中作为一个整体出现。如果不满足这些条件,则名称应与其自身匹配。
我想实现的最后一步是用这些匹配的名称替换原始系列。
这是我当前方法的代码,如果不清楚,请告诉我如何帮助澄清:
r - R中的序列聚类
我正在尝试编写一个简单的 R 序列聚类/分组/简化解决方案。我是一个初学者,有一段时间没有使用 R,所以请原谅简单和愚蠢的问题/解决方案。任务取自 SAP,它们代表 P2P 流程的执行。
概述:
输入:经过一些建议,我认为输入数据应该涵盖单词而不是它们的 id(我们不想比较数字而是简化单词序列)
选项 1:SAP P2P 中的步骤序列,例如:
我的数据集包含大约 700 个序列(测试 100),它们既短(5 步)又长(甚至超过 50)。
问题是我(在结果解释期间)不想比较所有,即 700 个序列,但我想以某种方式区分相似的序列。通常,特别是对于长序列,在 20 步之后会发现差异,例如:
Seq1: PR > PO > GR > IR > GR > IR > GR > IR > 付款
Seq2: PR > PO > GR > IR > IR > GR > GR > IR > 付款
最后,它应该会导致发现流程执行中的低效率。我的问题是,你对我如何接近那个问题之王有什么建议吗?阅读您的评论后,我认为聚类方法不是正确的方法。我真的不在乎我们是否应该使用集群或其他东西,重要的是简化流程。
我将不胜感激任何提示,建议等。
测试数据(> 用作分隔符)。
python - 带有句子的 Difflib 序列匹配器
我有以下数据框
我想查找左边的单词/句子和右边的句子,如果最大前两个单词匹配(例如'potato la'并省略'best'),那么它会给出一个分数。
我已经使用了两种不同的方法:
和
我在互联网上找到的。
第二个工作正常,除了它试图匹配整个短语。如何将第一列中的单词与第二列中的句子匹配,以便最终给我一个“是”它们在句子中(或部分)或“不”它们不是。
python - Python 3.6 SequenceMatcher().get_matching_blocks() 是如何工作的?
我正在尝试使用SequenceMatcher.ratio()
来获取两个字符串的相似性:"86418648"
和"86488648"
:
返回的比率是0.5
,这比我预期的要低得多,因为两个字符串中只有一个字符不同。
似乎该比率是根据匹配块计算的。所以我尝试运行SequenceMatcher.get_matching_blocks()
:
但我预计结果是:
谁能帮忙解释为什么它与前 3 个数字不匹配"864"
?