如何在python中高效地跨数百万条记录进行文本搜索和相似性计算

如何在python中高效地跨数百万条记录进行文本搜索和相似性计算,python,performance,full-text-search,similarity,processing-efficiency,Python,Performance,Full Text Search,Similarity,Processing Efficiency,我有两个表,每个表包含200万条记录。其中一个具有项目名称和其他项目描述以及其他属性。我必须将表1中的每个项目与表2中的每个描述进行匹配,以找到最大的相似性匹配。所以基本上,对于200万项中的每一项,我必须扫描另一个表以找到最佳匹配项。这就需要200万*200万次计算!如何在python中高效地完成这项工作?就目前情况而言,需要数年时间来计算 现在我采用的方法是正则表达式搜索,将每个项目名称拆分为列表中的单词,然后检查单词是否包含在描述中。如果是,则将匹配计数增加1,并使用该值计算相似度 因此,

我有两个表,每个表包含200万条记录。其中一个具有项目名称和其他项目描述以及其他属性。我必须将表1中的每个项目与表2中的每个描述进行匹配,以找到最大的相似性匹配。所以基本上,对于200万项中的每一项,我必须扫描另一个表以找到最佳匹配项。这就需要200万*200万次计算!如何在python中高效地完成这项工作?就目前情况而言,需要数年时间来计算

现在我采用的方法是正则表达式搜索,将每个项目名称拆分为列表中的单词,然后检查单词是否包含在描述中。如果是,则将匹配计数增加1,并使用该值计算相似度

因此,我的问题是:

  • 如何使我的计算速度更快?使用多线程,拆分 数据或类似的东西

  • 这里还有其他的相似性算法吗?请注意 我在另一边有描述,所以余弦相似性等不存在 因为字数不同而工作

  • 您可以尝试使用该软件包计算Levenshtein距离以获得相似性

    从文件中:

    比较字符串列表对于计算也很有用 文章或文章中句子、段落等之间的相似性 关于剽窃识别的书籍:

    或包装:

    您可以尝试使用该软件包计算Levenshtein距离以获得相似性

    从文件中:

    比较字符串列表对于计算也很有用 文章或文章中句子、段落等之间的相似性 关于剽窃识别的书籍:

    或包装:


    您也可以使用NLTK

    from nltk import *
    reference = 'DET NN VB DET JJ NN NN IN DET NN'.split()
    test    = 'DET VB VB DET NN NN NN IN DET NN'.split()
    print(accuracy(reference, test))
    print edit_distance("rain", "shine")
    

    您也可以使用NLTK

    from nltk import *
    reference = 'DET NN VB DET JJ NN NN IN DET NN'.split()
    test    = 'DET VB VB DET NN NN NN IN DET NN'.split()
    print(accuracy(reference, test))
    print edit_distance("rain", "shine")
    

    技术上什么是表?我从mongodb获取数据并将其放入python dataframe。技术上什么是表?我从mongodb获取数据并将其放入python dataframe。我尝试了这个。但正如我所说,另一端有描述,它并没有给我很好的相似性。我试过这个。但正如我所说,另一端有描述,它并没有给我很好的相似性。精度函数要求引用和测试长度相同。我没有相同长度的测试字符串。精度函数要求引用和测试的长度相同。我没有相同长度的测试字符串
    from nltk import *
    reference = 'DET NN VB DET JJ NN NN IN DET NN'.split()
    test    = 'DET VB VB DET NN NN NN IN DET NN'.split()
    print(accuracy(reference, test))
    print edit_distance("rain", "shine")