0

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

cur.execute("SELECT distinct product_type FROM cloth_table")
Product_type_list = cur.fetchall()

现在 Product_type_list 是描述 product_type 的字符串列表,如下所示

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

在 product_type_list 中,T 恤有 3 个重复条目,每条牛仔裤和衬衫有 2 个重复条目。

现在我希望我的 Product_type_list 是这样的

Product_type_list=['T_shirt' , 'Jeans', 'Shirt']

我认为我们可以使用 Difflib.Sequencematcher 的 quickratio。但是如何做到这一点

4

2 回答 2

0

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

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

于 2013-07-30T06:34:45.330 回答
0

我不太了解 Difflib.Sequencematcher 包。但是对于这种模糊匹配将通过使用 MySql 全文搜索概念来完成。

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

使用 FTS,我们得到比较分数,就像排名一样,我们将根据排名过滤我们的列表。我使用 SQL Server FTS 完成了类似的任务。

于 2013-07-30T06:31:16.973 回答