Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 使用Difflib从字符串列表中删除几乎重复的字符串_Python_Difflib - Fatal编程技术网

Python 使用Difflib从字符串列表中删除几乎重复的字符串

Python 使用Difflib从字符串列表中删除几乎重复的字符串,python,difflib,Python,Difflib,我正在使用python和mysql。这是我的密码 cur.execute("SELECT distinct product_type FROM cloth_table") Product_type_list = cur.fetchall() 现在Product_type_list是一个描述产品类型的字符串列表,如下所示 product_type_list =['T_shirts', 'T_shirt', 'T-shirt', 'Jeans', 'Jean', 'Formal Shirt' 'S

我正在使用python和mysql。这是我的密码

cur.execute("SELECT distinct product_type FROM cloth_table")
Product_type_list = cur.fetchall()
现在Product_type_list是一个描述产品类型的字符串列表,如下所示

product_type_list =['T_shirts', 'T_shirt', 'T-shirt', 'Jeans', 'Jean', 'Formal Shirt' 'Shirt']
Product_type_list=['T_shirt' , 'Jeans', 'Shirt']
在产品类型列表中,t恤有3个重复条目,牛仔裤和衬衫各有2个重复条目

现在我希望我的产品类型列表如下

product_type_list =['T_shirts', 'T_shirt', 'T-shirt', 'Jeans', 'Jean', 'Formal Shirt' 'Shirt']
Product_type_list=['T_shirt' , 'Jeans', 'Shirt']

我想我们可以使用Difflib.Sequencematcher的quickratio。但是如何做到这一点,我对Difflib.Sequencematcher包知之甚少。但对于这种模糊匹配,将使用MySql全文搜索概念来完成

尝试获取FTS匹配逻辑并解决此问题。DB和Python中也有一些Soundex概念


使用FTS,我们可以获得类似排名的比较分数,根据排名我们将筛选列表。我使用SQL Server FTS完成了类似的任务。

我认为,您可以定义自己的算法来解决这个问题,因为大多数内容都依赖于域,我认为您的产品类型没有那么大。例如,根据您的要求,您的正式衬衫中的正式内容将被忽略,而在其他领域中可能并非如此。因此,首先定义您自己的停止词(在产品名称中可以忽略的词),删除结尾的“s”,并修剪空格和“-”、“"”类非字母,然后转换为大写。鉴于此,您可以构建自己的匹配算法来解决此问题。我遇到了这样一个问题,在尝试了几个现有的库之后,我用自己的实现解决了这个问题


你应该继续改进你的算法,因为它是基于启发式和假设的

感谢您的回答@karthikeyan,但您建议的解决方案,如triming's'.''-'或space,并不是永久的解决方案,因为这里我给了您产品类型的示例列表,以便更好地理解我的问题,但在制作过程中,有成千上万的记录,当时我可能不知道两个不同的字符串有什么不同,但在英语中有相似的含义。请注意,我建议使用Lucene这样的文本处理引擎,您可以在其中融入我提出的想法。如果你需要使用NLP来识别相似或相同的单词。这也不简单:)谢谢你的回答,但我对Fts匹配逻辑一无所知。你能给我提供一些我可以获得知识的链接吗?如前所述,我在SQL Server中像一个任务一样工作。找到这个链接,它可能会给出一些FTS等级和soundex逻辑,