Python 如何删除“;类似的“;但MySQL数据库中的内容不同

Python 如何删除“;类似的“;但MySQL数据库中的内容不同,python,mysql,algorithm,string,Python,Mysql,Algorithm,String,假设我有这张桌子: ID | description ------------------- 5 | The bird flew over the tree. 2 | The birds, flew over the tree 这两行具有“相似”的内容。如何删除#2 “相似”文本应该使用什么算法 我将如何使用Python实现这一点 谢谢 通常,对于每个值,您都会创建一个“简化”值(删除任何不必要的东西…在您的示例中,标点符号和复数),然后比较简化值是否相等。您可以使用 你可以试着去掉必要的

假设我有这张桌子:

ID | description
-------------------
5  | The bird flew over the tree.
2  | The birds, flew over the tree
这两行具有“相似”的内容。如何删除#2

  • “相似”文本应该使用什么算法
  • 我将如何使用Python实现这一点

  • 谢谢

    通常,对于每个值,您都会创建一个“简化”值(删除任何不必要的东西…在您的示例中,标点符号和复数),然后比较简化值是否相等。

    您可以使用


    你可以试着去掉必要的标点符号,把每个句子都用a(例如a)来表示

    一旦你有了这个句子的词干版本,你就可以把它存储在另一列中进行比较。但是,如果句子很长(例如,平均超过40个字符),您可能会发现散列词干句子更节省空间

    任何共享相同词干句子或哈希的行都很可能是等效的——您可以自动删除它们,或者创建一个用户界面,让用户能够快速批准每一行


    以下是一个。

    您可以将两个字符串之间的差异定义为编辑距离,即将一个字符串更改为另一个字符串所需的操作数。操作集可以是您想要的任何内容,但如果比较中两个字符串的大小不同,则必须执行插入和删除操作

    我推荐

    然后设置一个编辑距离阈值,指示两个字符串相似,例如2次编辑或3次编辑

    但是,如果您的数据库很大,这可能不是一个好主意

    在伪代码中,您基本上会说

    if editDist(stringA, stringB) > editThreshold
        remove stringA %or stringB
    end
    

    只需为词干句子编写一个简短的“代码”,以避免过多的开销。将修改答案以澄清,谢谢您提出。Alex,需要删除多少行?成百上千上百万等等。。。?
    if editDist(stringA, stringB) > editThreshold
        remove stringA %or stringB
    end