繁体   English   中英

有什么方法可以更快地运行循环吗?

[英]Is there any way to run loop faster?

我正在解决一些字符串匹配问题并使用fuzzywuzzy 模块来获得分数。

我的目标数据约为 67K,参考数据几乎为 4M,我创建了循环,一次迭代大约需要 +- 19 分钟。 有什么办法可以让我的循环运行得更快?

%%timeit
df11['NEW'] = ""
for i in range(0, 4):
    df11['NEW'] = process.extractOne(df11['Desc 1'][i], df['Description 2'])

df11.head()

假设:

  1. 目标/ choice字符串都比较长(例如 >20 个字符)并且它们不是都非常相似(例如只有一两个字符不同)
  2. 查询和“最佳”目标之间的编辑距离相对较小(例如修改的字符<10%)

那么我可能会使用三元组来索引字符串,然后忽略查询中没有足够三元组的目标行

我一直在玩“20 个新闻组数据集” ,它需要我的笔记本电脑:

  • 使用这些行作为选择/目标运行 45 秒fuzzywuzzy.extractOne
  • 0.3 秒使用三元组找到最近的字符串

这是服用后:

  1. 6 秒从 18828 封电子邮件中加载 477948 行文本
  2. 15 秒将台词变成包含 317324 个三元组的字典

我的代码很老套,但我可以整理一下,可能会将所有 67k 查询字符串的总运行时间减少到一天左右,如果您与multiprocessing并行执行此操作,可能只需几个小时

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM