iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
自我挑戰組

實驗室助理的技術文章自我整理系列 第 23

Python - PyEnchant 英文單字拼寫檢查套件參考筆記

Python - PyEnchant 英文單字拼寫檢查套件參考筆記

參考資料

參考資料:

說明

當初會寫這篇參考筆記,主要是因為,這篇教學文(python PyEnchant(拼写检查)),是大陸人寫的文章,因為不太喜歡看到簡體字和大陸用語,所以我就自己整理了繁體中文的版本(台灣價值w),再把裡面的大陸用語轉換成台灣用語(比如說把"對象"換成"物件")(先說我不是專業的,用詞錯誤請不要噴我w),增加或刪減一些文字,以方便肉眼閱讀XD。

特此撰寫本篇文章作為紀錄文件,用以方便後續有需要的時候,可以快速的重複查閱,雖然後面比較沒有什麼機會再用到,但也算是一個還不錯的經驗。

簡介

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

安裝 PyEnchant

使用 pip3 直接安装即可,指令如下:

pip3 install pyenchant

使用上述指令,如果安裝沒有錯誤就是安裝成功了,一般情況下(mac、ubuntu等系統)是沒有任何問題的。

基礎用法

創建和使用 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']

檢查一段文字的拼寫

這裡使用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

英語分詞器(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)]

上一篇
Python - Scrabble Word Finder - Python 爬蟲練習筆記
下一篇
Python - Python SimpleHTTPServerWithUpload 參考筆記
系列文
實驗室助理的技術文章自我整理30

尚未有邦友留言

立即登入留言