凤凰山笔记

使用PyEnchant库进行单词拼写检查

尝试想象这样一个业务场景:有人收集了一个庞大的、快要到期的域名列表,想从其中筛选出来适合作为自己域名的域名,因为确实存在很多无意义的垃圾域名,如果肉眼去寻找的话,非常费力气。

好的域名的一个标准就是最好是一个完整的英文单词,或者有意义的英文单词组合。

如果仅将这个作为一个校验原则,那么需要一种API将这些域名列表进行拼写校验,将有意义的域名筛选出来,这里推荐使用python中的PyEnchant库进行单词拼写检查。

PyEnchant安装

官网有安装教程,附上链接http://pythonhosted.org/pyenchant/download.html
这里主要碰到的问题是,官方仅提供了32bit的windows安装包,安装之后64位windows系统会报错

64位系统报错信息:

1
2
3
4
5
6
7
8
Traceback (most recent call last):
File "_test.py", line 1, in <module>
import enchant
File "C:\Python27\lib\site-packages\enchant\__init__.py", line 92, in <module>
from enchant import _enchant as _e
File "C:\Python27\lib\site-packages\enchant\_enchant.py", line 102, in <module>
raise WinError()
WindowsError: [Error 193] <no description>

所以最好使用Linux或者Mac作为开发系统…

PyEnchant简单使用

示例1:仅使用en_US库进行校验

python代码:

1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-
import enchant

en_dict = enchant.Dict("en_US")

# sample worldshift.net
print en_dict.check("worldshift")
print en_dict.suggest("worldshift")

输出结果:
python domain_check.py
False
[‘world shift’, ‘world-shift’, ‘worldliest’, ‘redshift’, ‘afterworld’, ‘Wordsworth’, ‘Waldensian’, ‘validation’]

结果说明这个域名不错是两个单词的拼接

示例2:使用自定义词库

my_words.txt 是本地的词库,里面只有一行记录就是 “OK”

1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-
import enchant

my_dict = enchant.request_pwl_dict("my_words.txt")

# sample ok666.com
print my_dict.check("OK666")
print my_dict.suggest("OK666")

输出结果:
python domain_check.py
False
[‘OK’]

结果说明符合了自己定义的词库规则,是一个符合某种条件的域名

示例3:多种词库混合使用

提供示例

1
2
3
4
5
6
# -*- coding: utf-8 -*-
import enchant

d2 = enchant.DictWithPWL("en_US","mywords.txt")
d2.check("Hello")
d2.suggest("Hello")

以上,希望对您的工作和学习有帮助

cloudroc wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
很惭愧,只做了些微小的工作,您的支持将鼓励我继续努力创作!