【发布时间】:2021-05-12 20:56:54
【问题描述】:
我有一个 pandas 数据框,其中包含名为 Potential Word、Fixed Word 的两列。 Potential Word 列包含不同语言的单词,其中包含拼写错误单词和正确单词,Fixed Word 列包含与Potential Word 对应的正确单词。
下面我分享了一些样本数据
| Potential Word | Fixed Word |
|---|---|
| Exemple | Example |
| pipol | People |
| pimple | Pimple |
| Iunik | unique |
我的 vocab Dataframe 包含 600K 唯一行。
我的解决方案:
key = given_word
glob_match_value = 0
potential_fixed_word = ''
match_threshold = 0.65
for each in df['Potential Word']:
match_value = match(each, key) # match is a function that returns a
# similarity value of two strings
if match_value > glob_match_value and match_value > match_threshold:
glob_match_value = match_value
potential_fixed_word = each
问题
我的代码的问题是需要花费大量时间来修复每个单词,因为循环运行在大型词汇列表中。当词汇上漏掉一个单词时,解决一个 10 ~ 12 个单词的句子几乎需要 5 或 6 秒。 match 函数执行得很好,因此达到了优化的目标。
我需要优化的解决方案帮助我
【问题讨论】:
-
你有多少个独特的
keys? -
也许你可以用
match函数做得更好。可以分享一下吗? -
@ghchoi 我们有 600K 唯一密钥
-
还有 600K 潜在词和固定词对?
标签: python dataframe optimization pattern-matching string-matching