Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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_Pattern Matching_String Comparison_Difflib - Fatal编程技术网

Python 如何比较两个标题(字符串)以查看它们是否引用同一本书?

Python 如何比较两个标题(字符串)以查看它们是否引用同一本书?,python,string,pattern-matching,string-comparison,difflib,Python,String,Pattern Matching,String Comparison,Difflib,我试图比较同一本书的两个书名(来自不同来源),在一个庞大的书单中,每一本书,看看它们是否引用同一本书 这里是一个小背景。我在图书馆实习。这里的工作人员扫描了每本书的登录号和ISBN,并将其作为csv文件交给了我。由于人为错误,一些书的ISBN错误。我应该找到那些错误 对于每个登录号,我从我们的图书馆管理软件中知道正确的标题。对于每一个ISBN,我都从互联网上取下标题。现在我想比较一下这两本书的书名,看看是否扫描了另一本书的ISBN而不是真的 我目前使用difflib中的SequenceMatch

我试图比较同一本书的两个书名(来自不同来源),在一个庞大的书单中,每一本书,看看它们是否引用同一本书

这里是一个小背景。我在图书馆实习。这里的工作人员扫描了每本书的登录号和ISBN,并将其作为csv文件交给了我。由于人为错误,一些书的ISBN错误。我应该找到那些错误

对于每个登录号,我从我们的图书馆管理软件中知道正确的标题。对于每一个ISBN,我都从互联网上取下标题。现在我想比较一下这两本书的书名,看看是否扫描了另一本书的ISBN而不是真的

我目前使用
difflib
中的
SequenceMatcher
类执行以下操作:

def similar(seq1, seq2, strength):
    return (difflib.SequenceMatcher(a=seq1.lower(), b=seq2.lower()).ratio()
                > strength)
但我有很多误报,比如:

“通信网络:基本概念和关键架构” =>“通信网络”

“工程物理实验;实验室手册和工作簿>,带有Viva Voce”=>“工程物理实验”

“水:科学与问题”=>“水V1-V4”

“Schaum的统计理论与问题概述”=>“概率论与统计理论与问题”

有更好的方法吗


编辑:是我的程序输出的所有误报。我用“##”作为分隔符。

您的错误似乎是系统性的。因此,您可以检查a)整个序列或b)序列是否匹配,直到第一个“:”为止。如果您可以发布一些示例,即图书馆软件中的标题与互联网上的标题,这将有所帮助。如果不知道两者的区别是什么,很难提供帮助。@Rawing Done,谢谢你的建议…@NikolasRieble我在想,可能会有一些已经存在的智能算法可以做到这一点。你是对的,80%的误报都在你的描述中,如果我没有其他优雅的解决方案,我会这么做。我已经将我的示例扩展到包括其他案例,并且还发布了我整个输出的粘贴。我不知道有什么现有的算法可以解决这个问题,但我建议增加信息以进行比较。除了标题之外,您还可以根据几个属性计算相似性分数。此信息可能是:作者、出版商等。您的错误似乎是系统性的。因此,您可以检查a)整个序列或b)序列是否匹配,直到第一个“:”为止。如果您可以发布一些示例,即图书馆软件中的标题与互联网上的标题,这将有所帮助。如果不知道两者的区别是什么,很难提供帮助。@Rawing Done,谢谢你的建议…@NikolasRieble我在想,可能会有一些已经存在的智能算法可以做到这一点。你是对的,80%的误报都在你的描述中,如果我没有其他优雅的解决方案,我会这么做。我已经将我的示例扩展到包括其他案例,并且还发布了我整个输出的粘贴。我不知道有什么现有的算法可以解决这个问题,但我建议增加信息以进行比较。除了标题之外,您还可以根据几个属性计算相似性分数。这些信息可能是:作者、出版商等。