python PyEnchant(拼寫檢查)

weixin_34234823發表於2017-10-20

本文主要是記錄了一下pyenchant包的安裝以及簡單使用。這個包主要功能是對英語單詞進行拼寫檢查,並可以對拼寫錯誤的單詞推薦一些可能的正確單詞。

1 installing PyEnchant

使用pip直接安裝即可,指令如下:

pip install pyenchant

使用上述指令,如果安裝沒有錯誤就是安裝成功了,一般情況下(mac、ubuntu等系統)是沒有任何問題的。但是在亞馬遜的EC2機器上,使用上述指令會提示錯誤。主要原因是EC2系統上缺少enchant組建,這裡就需要在EC2機器上安裝該組建。使用如下指令:

sudo yum install enchant

安裝好enchant之後,在使用pip安裝pyenchant即可。但是在python中使用enchant時,會發現剛剛裝好的enchant沒有安裝預設字典。這就需要另外安裝常用英語字典,來支援pyenchant的正常使用,使用如下指令:

sudo yum install aspell-en
sudo yum install enchant-aspell

2 基礎用法

2.1 建立和使用Dictionary Object

在PyEnchant中最主要的就是Dict物件,我們可以使用它來檢查單詞的拼寫是否正確,同時還可以對拼寫錯誤的單詞提供幾個可能的正確拼寫。
首先介紹如何建立Dict物件,並用其檢查某個單詞的拼寫:

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False

建立Dict物件可以使用如下方式:

方法 描述
d = enchant.Dict(language) 使用指定語言建立Dict物件
d = enchant.request_dict(language) 使用指定語言建立Dict物件
d = enchant.request_pwl_dict(filename) 只用本地檔案中的詞彙建立Dict物件
d = enchant.DictWithPWL(language, filename) 將內建某語言以及本地檔案中的詞彙合併來建立Dict物件

注意上述方法中用到了本地檔案filename,檔案中每一行只存放一個單詞。

enchant模組還提供瞭如下幾個關於語言的方法:

方法 描述
enchant.dict_exits(language) 檢視當前enchant模組是否支援某種語言
enchant.list_languages() 檢視當前enchant模組支援的所有語言

Dict物件有如下方法與屬性方便使用者使用:

方法or屬性 描述
d = enchant.Dict(language) 指定語言建立一個Dict物件
d.tag 當前Dict使用的語言
d.check(word) 檢查word的拼寫是否正確
d.suggest(word) 對拼寫錯誤的word提供幾個正確拼寫的單詞
>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.tag
'en_US'
>>> d.check("Hello")
True
>>> d.check("Helo")
False
>>> d.suggest("helo")
['hole', 'hello', 'helot', 'halo', 'hero', 'hell', 'held', 'helm', 'help', 'he lo']
>>> enchant.dict_exists("aa")
False
>>> enchant.dict_exists("en_US")
True
>>> enchant.list_languages()
['de_DE', 'en_AU', 'en_GB', 'en_US', 'fr_FR']

2.2 檢查一段文字的拼寫

這裡使用enchant.checker中的SpellChecker類來解決對一整段文字中的單詞進行拼寫檢查

>>> from enchant.checker import SpellChecker
>>> chkr = SpellChecker("en_US")
>>> chkr.set_text("This is sme sample txt with erors.")
>>> for err in chkr:
...     print "ERROR", err.word
...
ERROR sme
ERROR txt
ERROR erors

2.3 英語分詞器(Tokenization)

將英語文字進行分詞,返回結果格式(word, pos),其中pos是word在整個文字中出現的位置

>>> from enchant.tokenize import get_tokenizer
>>> tknzr = get_tokenizer("en_US")
>>> [w for w in tknzr("this is some simple text.")]
[('this', 0), ('is', 5), ('some', 8), ('simple', 13), ('text', 20)]

3 更多enchant功能與用法,請檢視如下連結

http://pythonhosted.org/pyenchant/tutorial.html

相關文章