我正在处理一些字符串匹配问题,并使用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()
答案 0 :(得分:0)
假设:
choice
的字符串都相对较长(例如> 20个字符),并且它们也不尽相同(例如,只有一个或两个字符不同)然后我可能会使用trigrams为字符串建立索引,然后忽略查询中没有足够三连词的目标行
我一直在玩"20 newsgroup dataset",这需要我的笔记本电脑:
fuzzywuzzy.extractOne
只需45秒这是服用后:
我的代码很hacky,但我可以整理一下,可能会将所有67k查询字符串的总运行时间缩短到一天左右,如果与multiprocessing
并行执行,可能只需几个小时