我正在处理手写的文本数据,所以它有很多拼写错误。我目前正在清理数据,并且当单词不存在时pyspellchecker,我正在使用该方法查找最可能的单词。correct()我的方法是创建一个字典,其中所有写得不好的单词作为键,最有可能的单词作为值:dic={}for i in df.text: misspelled = spell.unknown(i.split()) for word in misspelled: dic[word]=spell.correction(word)尽管这是有效的,但它的速度非常缓慢。因此,我想知道是否有更快的选择来实现这一点。你有什么想法?编辑:df.text 中有 10571 行,字符串通常有 5-15 个字长。每个循环大约需要 3-5 秒,这使得运行整个循环总共需要大约 40000 秒。
2 回答
冉冉说
TA贡献1877条经验 获得超1个赞
如果您只想创建一个从您遇到的拼写错误的单词到他们的建议的映射,您可以通过删除重复的单词来减小数据集的大小。spell.unknown这将最大限度地减少对and的调用次数,spell.correction并防止对字典内容进行不必要的更新。
uniquewords = set().union(*(sentence.split() for sentence in df.text))
corrections = {word: spell.correction(word) for word in spell.unknown(uniquewords)}
慕容3067478
TA贡献1773条经验 获得超3个赞
您可以尝试 pd.apply 而不是循环:
eng = pd.Series(['EmpName', 'EMP_NAME', 'EMP.NAME', 'EMPName', 'CUSTOMIR', 'TIER187CAST', 'MultipleTIMESTAMPinTABLE', 'USD$'])
eng = eng.str.lower()
eng = eng.str.split()
spell = SpellChecker()
def msp(x):
return spell.unknown(x)
eng.apply(msp)
添加回答
举报
0/150
提交
取消