python中的拼写检查时间过长

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]:

我有一个大约200000行的数据帧,每行大约有30个标记化单词。我正在努力纠正拼写错误,然后把它们用柠檬化

有些单词不在字典里,所以,如果频率太高,我只传递那个单词,如果没有,我就更正它

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秒。我没想到
拼写检查
需要那么多时间。