当前位置:  开发笔记 > 编程语言 > 正文

Difflib.SequenceMatcher isjunk可选参数查询:如何忽略空格,制表符,空行?

如何解决《Difflib.SequenceMatcherisjunk可选参数查询:如何忽略空格,制表符,空行?》经验,为你挑选了1个好方法。

我正在尝试使用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.



1> Florian Bösc..:

如果匹配所有空格,则相似性更好:

difflib.SequenceMatcher(lambda x: x in " \t\n", doc1, doc2).ratio()

但是,difflib对于这样的问题并不理想,因为这些是两个几乎完全相同的文档,但是拼写错误会导致difflib的差异,而人类不会看到很多.

尝试阅读tf-idf,贝叶斯概率,向量空间模型和w-shingling

我写了一个tf-idf的实现,将它应用于向量空间,并使用点积作为距离度量来对文档进行分类.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有