f4n*_*4nt 6 python spell-checking pyenchant
令人惊讶的是,我一直无法找到真正做到这一点的人,但肯定有人有.我正在研究一个python项目,目前涉及拼写检查大约16000个单词.不幸的是,这个词数只会增长.现在我从Mongo中拉出单词,遍历它们,然后用pyenchant拼写检查它们.我已经删除了mongo作为潜在的瓶颈,首先抓住我的所有物品.这让我有大约20分钟的时间处理16k字,这显然比我想花的时间长.这给我留下了一些想法/问题:
显然,我可以利用线程或某种形式的并行性.即使我将其切成4块,我仍然会在大约5分钟内看到最佳性能.
有没有办法告诉刻录库Enchant在pyenchant下面使用了什么?Enchant的网站似乎暗示它会在拼写检查时使用所有可用的拼写库/词典.如果是这样,那么我可能通过三到四个拼写单词运行每个单词.这可能是我的问题,但我很难证明情况就是这样.即使它是,我的选择真的是卸载其他库?听起来很不幸.
那么,关于如何从中挤出至少更多性能的任何想法?我把它切成并行任务很好,但我仍然希望在我做之前让它的核心部分更快一些.
编辑:对不起,在早晨咖啡之前发帖...如果单词拼写错误,附魔会为我生成一个建议列表.这似乎是我花费大部分时间在这个处理部分的地方.
我认为我们同意这里的性能瓶颈是附魔; 对于这个大小的数据集,它几乎是瞬间做一个布尔值isSpeltCorrectly.那么,为什么不呢:
使用Enchant所做的字典或获取自己的字典(例如OpenOffice),在内存中拼写正确拼写的单词.
可选地,通过将文档放入文档中来统一文档的单词set.这可能不会为你节省很多.
检查每个单词是否在集合中.这很快,因为它只是一组查找.(可能O(log N)在N是单词的数量?假设set通过哈希进行存储并进行二进制搜索...... Python大师可以在这里纠正我.)
如果不是,那么请附魔推荐一个词来形容它.这必然很慢.
这假设您的大多数单词拼写正确; 如果他们不是,你必须更聪明.
| 归档时间: |
|
| 查看次数: |
3621 次 |
| 最近记录: |