參考資料:
當初會寫這篇參考筆記,主要是因為,這篇教學文(python PyEnchant(拼写检查)),是大陸人寫的文章,因為不太喜歡看到簡體字和大陸用語,所以我就自己整理了繁體中文的版本(台灣價值w),再把裡面的大陸用語轉換成台灣用語(比如說把"對象"換成"物件")(先說我不是專業的,用詞錯誤請不要噴我w),增加或刪減一些文字,以方便肉眼閱讀XD。
特此撰寫本篇文章作為紀錄文件,用以方便後續有需要的時候,可以快速的重複查閱,雖然後面比較沒有什麼機會再用到,但也算是一個還不錯的經驗。
本文主要是記錄 pyenchant 套件的安裝以及使用。這個套件的主要功能是對英文單字進行拼寫檢查,並可以對拼寫錯誤的單詞推荐一些可能的正確單詞。
使用 pip3 直接安装即可,指令如下:
pip3 install pyenchant
使用上述指令,如果安裝沒有錯誤就是安裝成功了,一般情況下(mac、ubuntu等系統)是沒有任何問題的。
在 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']
這裡使用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
將英語句子進行分詞,輸出結果格式:(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)]