我正在尝试使用Difflib.SequenceMatcher来计算两个文件之间的相似性。这两个文件几乎相同,只是一个包含一些额外的空格,空行和其他文件没有。我正在尝试使用
s=difflib.SequenceMatcher(isjunk,text1,text2)
ratio =s.ratio()
以此目的。
所以,问题是如何为这个isjunk方法编写lambda表达式,所以SequenceMatcher方法将折扣所有的空格,空行等。我试图使用参数lambda x:x ==“”,但结果不是太棒了 对于两个非常相似的文本,比率非常低。这非常反直觉。
出于测试目的,以下是您可以在测试时使用的两个字符串:
什么激励jwovu做好你的工作?好吧,这是一个试图赢得价值100美元的软件开发书籍的条目,尽管我不读 编程书籍。为了赢得奖品,你必须写一个条目,以及 什么激励fggmum做好你的工作。因此这篇文章。第一动机 钱。我知道,这对许多人来说听起来并不是一个很好的灵感,并说金钱是激励因素之一,可能会让我失去机会。 好像金钱是编程世界的禁忌。我知道有些人不能被钱所激励。嗯,另一方面,我生活在一个现实世界中, 房屋抵押支付,我自己喂和账单覆盖。所以我无法将钱从我的考虑中排除。如果我能得到一大笔钱 做得好,然后肯定会提高我的士气。我不在乎我是使用旧工作站,还是被迫与其他人共用房间或隔间 人们,或者不得不忍受讨厌的老板,或其他什么。事实上,在一天结束的时候,我将带着一大笔钱走下去就足够了 为了我克服所有的障碍,忍受所有的艰难感受和伤害自我,容忍一台缓慢的计算机,甚至忍受
这是另一个字符串
是什么激励你做好你的工作?好吧,这是一个试图赢得价值100美元的软件开发书籍的条目,尽管我不读编程书籍。为了赢得奖品,你必须写一个条目,并描述促使你做好工作的动力。因此这篇文章。 第一个动机,钱。我知道,这对许多人来说听起来并不是一个很好的灵感,并说金钱是激励因素之一,可能会让我失去机会。好像金钱是编程世界的禁忌。我知道有些人不能被钱所激励。感谢他们。另一方面,我生活在一个现实世界中,房屋抵押贷款支付,我自己饲料和账单。所以我无法将钱从我的考虑中排除。 如果我可以获得一大笔钱来做好工作,那那肯定会提振我的士气。我不在乎我是使用旧工作站,还是被迫与其他人共用房间或隔间,或者不得不忍受烦人的老板等等。事实上,在一天结束的时候,我将带着一大笔钱离开,这足以让我克服所有障碍,忍受所有的艰难感受和伤害自我,忍受慢速计算机,甚至忍受
我运行了上面的命令,并将isjunk设置为lambda x:x ==“”,比率仅为0.36。
发布于 2019-05-21 09:27:52
使用示例字符串:
>>> s=difflib.SequenceMatcher(lambda x: x == '\n', s1, s2)
>>> s.ratio()
0.94669848846459825
有趣的是,如果''也包含在垃圾中:
>>> s=difflib.SequenceMatcher(lambda x: x in ' \n', s1, s2)
>>> s.ratio()
0.7653142402545744
看起来新的线条比空间有更大的影响。
https://stackoverflow.com/questions/-100001179
复制相似问题