优化两个列表之间的元素明智模糊匹配

拉朱拉杰

我有两个需要统一的不同格式的公司列表(较长列表中的> 2k个条目)。我知道这两种格式大约有80%的时间共享存根,因此我正在使用模糊匹配来比较两个列表:

def get_fuzz_score(str1, str2):

    from fuzzywuzzy import fuzz
    partial_ratio = fuzz.partial_ratio(str1, str2)
    return partial_ratio


a = ['Express Scripts', 'Catamaran Corp', 'Banmedica SA (96.7892%)', 'WebMD', 'ODC', 'Caremerge LLC (Stake%)']
b = ['Doctor on Demand', 'Catamaran', 'Express Scripts Holding Corp', 'ODC, Inc.', 'WebMD Health Services', 'Banmedica']

for i in b:
    for j in a:
        if get_fuzz_score(i, j) > 80:
            # process

我很欣赏关于如何优化此任务以提高性能的想法(例如,不必为循环使用2)。

坦率

我假设您同时安装了Fuzzywuzzy和python-Levenshtein。第二个软件包的安装失败,因此我收到一条消息:

warnings.warn('使用慢速纯Python SequenceMatcher。安装python-Levenshtein删除此警告')

您可以使用itertools.product创建笛卡尔乘积:

from itertools import product
from fuzzywuzzy import fuzz

def get_fuzz_score(str1, str2):
    partial_ratio = fuzz.partial_ratio(str1, str2)
    return partial_ratio


a = ['Express Scripts', 'Catamaran Corp', 'Banmedica SA (96.7892%)', 'WebMD', 'ODC', 'Caremerge LLC (Stake%)']
b = ['Doctor on Demand', 'Catamaran', 'Express Scripts Holding Corp', 'ODC, Inc.', 'WebMD Health Services', 'Banmedica']

for first, second in product(a, b):
    if get_fuzz_score(first, second) > 80:
        # process

如果您的函数get_fuzz_score没有增长,则可以使其过时:

from itertools import product
from fuzzywuzzy import fuzz  # 

a = ['Express Scripts', 'Catamaran Corp', 'Banmedica SA (96.7892%)', 'WebMD', 'ODC', 'Caremerge LLC (Stake%)']
b = ['Doctor on Demand', 'Catamaran', 'Express Scripts Holding Corp', 'ODC, Inc.', 'WebMD Health Services', 'Banmedica']

for first, second in product(a, b):
    if fuzz.partial_ratio(first, second) > 80:
        pass  # process

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个DataFrame之间的缓慢模糊匹配

来自分类Dev

提高两个列表中模糊匹配词的速度

来自分类Dev

匹配列表的前两个元素

来自分类Dev

列表之间的两个公共元素

来自分类Dev

Python匹配两个列表之间的列表元素中的部分字符串

来自分类Dev

如何连接两个列表元素 - 明智并制作一个新列表?

来自分类Dev

获取两个大列表之间的所有不匹配元素

来自分类Dev

Clojure中两个列表之间的键上的过滤元素不匹配

来自分类Dev

元素明智的concat与Python中的两个列表列表

来自分类Dev

R匹配两个列表并找到匹配的元素

来自分类Dev

两个列表之间的公共元素并保留两个列表中元素的顺序

来自分类Dev

对两个二进制列表进行OR元素明智的操作

来自分类Dev

查找两个列表之间的匹配值

来自分类Dev

如何返回两个列表之间的不匹配项

来自分类Dev

几乎相同的两个列表的匹配元素

来自分类Dev

计算两个列表中匹配元素的数量

来自分类Dev

查找两个列表的匹配元素的索引

来自分类Dev

在两个以上的列表中找到匹配的元素

来自分类Dev

Perl-两个列表匹配元素

来自分类Dev

如何匹配Scala中两个列表中的元素?

来自分类Dev

返回列表中两个变量索引之间的元素

来自分类Dev

在列表中的两个元素之间创建链接

来自分类Dev

比较两个列表之间的元素-Haskell

来自分类Dev

查找两个列表的相应元素之间的差异的索引

来自分类Dev

在两个列表之间找到共同的元素?

来自分类Dev

两个列表之间的重复项/公共元素

来自分类Dev

两个列表之间没有重复的公共元素

来自分类Dev

如何获得两个元素的两个子列表的列表之间的对称差异?

来自分类Dev

在python中的两个列表之间交换两个元素

Related 相关文章

  1. 1

    两个DataFrame之间的缓慢模糊匹配

  2. 2

    提高两个列表中模糊匹配词的速度

  3. 3

    匹配列表的前两个元素

  4. 4

    列表之间的两个公共元素

  5. 5

    Python匹配两个列表之间的列表元素中的部分字符串

  6. 6

    如何连接两个列表元素 - 明智并制作一个新列表?

  7. 7

    获取两个大列表之间的所有不匹配元素

  8. 8

    Clojure中两个列表之间的键上的过滤元素不匹配

  9. 9

    元素明智的concat与Python中的两个列表列表

  10. 10

    R匹配两个列表并找到匹配的元素

  11. 11

    两个列表之间的公共元素并保留两个列表中元素的顺序

  12. 12

    对两个二进制列表进行OR元素明智的操作

  13. 13

    查找两个列表之间的匹配值

  14. 14

    如何返回两个列表之间的不匹配项

  15. 15

    几乎相同的两个列表的匹配元素

  16. 16

    计算两个列表中匹配元素的数量

  17. 17

    查找两个列表的匹配元素的索引

  18. 18

    在两个以上的列表中找到匹配的元素

  19. 19

    Perl-两个列表匹配元素

  20. 20

    如何匹配Scala中两个列表中的元素?

  21. 21

    返回列表中两个变量索引之间的元素

  22. 22

    在列表中的两个元素之间创建链接

  23. 23

    比较两个列表之间的元素-Haskell

  24. 24

    查找两个列表的相应元素之间的差异的索引

  25. 25

    在两个列表之间找到共同的元素?

  26. 26

    两个列表之间的重复项/公共元素

  27. 27

    两个列表之间没有重复的公共元素

  28. 28

    如何获得两个元素的两个子列表的列表之间的对称差异?

  29. 29

    在python中的两个列表之间交换两个元素

热门标签

归档