python中的拼写检查时间过长
我有一个大约200000行的数据帧,每行大约有30个标记化单词。我正在努力纠正拼写错误,然后把它们用柠檬化 有些单词不在字典里,所以,如果频率太高,我只传递那个单词,如果没有,我就更正它python中的拼写检查时间过长,python,pandas,nlp,spell-checking,lemmatization,Python,Pandas,Nlp,Spell Checking,Lemmatization,我有一个大约200000行的数据帧,每行大约有30个标记化单词。我正在努力纠正拼写错误,然后把它们用柠檬化 有些单词不在字典里,所以,如果频率太高,我只传递那个单词,如果没有,我就更正它 spell = SpellChecker() def spelling_mistake_corrector(word): checkedWord = spell.correction(word) if freqDist[checkedWord] >= freqDist[word]:
spell = SpellChecker()
def spelling_mistake_corrector(word):
checkedWord = spell.correction(word)
if freqDist[checkedWord] >= freqDist[word]:
word = checkedWord
return word
def correctorForAll(text):
text = [spelling_mistake_corrector(word) for word in text]
return text
lemmatizer = WordNetLemmatizer()
def lemmatize_words(text):
text = [lemmatizer.lemmatize(word) for word in text]
text = [word for word in text if len(word) > 2] #filtering 1 and 2 letter words out
return text
def apply_corrector_and_lemmatizer(text):
return lemmatize_words(correctorForAll(text))
df['tokenized'] = df['tokenized'].apply(apply_corrector_and_lemmatizer)
问题是:这段代码在colab上运行了3个小时,我应该做些什么来提高运行时间?谢谢 如果代码正常工作,这可能是在codereview上,而不是
柠檬化和拼写检查是昂贵的操作。即使时间复杂度不会改变,您也可以通过做一些更改来稍微加快代码的速度。。首先,在每个文本上迭代两次。有两种列表理解,它们真的有必要吗?你不能在一个循环中完成这一切吗?此外,您正在使用.apply
,对于非矢量化操作,这可能比列表理解本身更昂贵。由于操作是独立的,所以您可以考虑在多个CORESY上并行执行操作,感谢答复,只有LeMeM化在整个数据文件中花费40秒。我没想到拼写检查
需要那么多时间。如果代码有效,这应该在codereview上进行。因此柠檬化
和拼写检查
是昂贵的操作。即使时间复杂度不会改变,您也可以通过做一些更改来稍微加快代码的速度。。首先,在每个文本上迭代两次。有两种列表理解,它们真的有必要吗?你不能在一个循环中完成这一切吗?此外,您正在使用.apply
,对于非矢量化操作,这可能比列表理解本身更昂贵。由于操作是独立的,所以您可以考虑在多个CORESY上并行执行操作,感谢答复,只有LeMeM化在整个数据文件中花费40秒。我没想到拼写检查需要那么多时间。