为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中的字符串系列中替换不正确单词的有效方法

在 Python 中的字符串系列中替换不正确单词的有效方法

BIG阳 2022-01-18 17:51:25
我正在处理手写的文本数据,所以它有很多拼写错误。我目前正在清理数据,并且当单词不存在时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)}


查看完整回答
反对 回复 2022-01-18
?
慕容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)


查看完整回答
反对 回复 2022-01-18
  • 2 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信