簡體   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