gpt4 book ai didi

python - Python 中的 "Large"scale 拼写检查

转载 作者:太空狗 更新时间:2023-10-29 22:28:08 27 4
gpt4 key购买 nike

令人惊讶的是,我找不到其他人真正这样做过,但肯定有人这样做过。我目前正在从事一个 python 项目,该项目涉及拼写检查大约 16,000 个单词。不幸的是,这个词的数量只会增加。现在我正在从 Mongo 中提取单词,遍历它们,然后用 pyenchant 对它们进行拼写检查。我已经通过首先从那里获取我的所有项目来删除 mongo 作为潜在的瓶颈。这让我有大约 20 分钟的时间来处理 16k 个单词,这显然比我想花的时间要长。这给我留下了几个想法/问题:

  1. 显然,我可以利用线程或某种形式的并行机制。即使我将它分成 4 block ,假设达到最佳性能,我仍然需要大约 5 分钟的时间。

  2. 有没有办法判断 Enchant 在 pyenchant 下使用的是什么拼写库? Enchant 的网站似乎暗示它会在拼写检查时使用所有可用的拼写库/词典。如果是这样,那么我可能会通过三到四个拼写字典来运行每个单词。这可能是我的问题,但我很难证明情况确实如此。即使是,我的选择真的是卸载其他库吗?听起来很不幸。

那么,关于如何至少从中挤出更多性能的任何想法?我很乐意将它分解成并行任务,但我仍然希望在我这样做之前让它的核心部分更快一点。

编辑:抱歉,早上喝咖啡之前发帖...如果单词拼写错误,Enchant 会为我生成一个建议列表。这似乎是我在此处理部分花费大部分时间的地方。

最佳答案

我认为我们同意这里的性能瓶颈是附魔;对于这种大小的数据集,执行 bool 值 isSpeltCorrectly 几乎是即时的。那么,为什么不呢:

  1. 使用 Enchant 使用的词典或获取您自己的词典(例如 OpenOffice's),建立一个正确拼写单词的 memset 。

    可选地,将文档中的单词统一化,比如将它们放在一个集合中。这可能不会为您节省很多。

  2. 检查每个单词是否在集合中。这很快,因为它只是一个集合查找。 (可能是 O(log N),其中 N 是单词的数量?假设 set buckets by hash 并进行二进制搜索……Python 大师可以在这里纠正我。 )

  3. 如果不是,然后让 Enchant 为它推荐一个词。这必然很慢。

这假设您的大部分单词都拼写正确;如果不是,您就必须变得更聪明。

关于python - Python 中的 "Large"scale 拼写检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com