Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのPyEnchantで誤字の修正候補を取得する方法

文章を書いていると、うっかり単語の綴り(スペル)を間違えてしまうことはよくあります。このような問題を解決するために、Pythonには「Enchant」モジュールが用意されています。PyEnchantは主に単語のスペルチェックを行い、誤った綴りの単語に対して修正候補を提示するために使われるライブラリです。

また、ispell、aspell、MySpellなど、多くの定番スペルチェッカーのバックエンドとしても採用されており、複数の辞書や複数の言語を非常に柔軟に扱える点が大きな特徴です。

インストール方法

インストールは、コマンドプロンプト(ターミナル)で以下のコマンドを実行するだけです。

pip install pyenchant

基本的な使い方:suggest()で修正候補を取得

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.suggest("prfomnc")
['prominence', 'performance', 'preform', 'Provence', 'preferment', 'proforma']

suggest()メソッドに誤った綴りの単語を渡すと、辞書に基づいた修正候補のリストが返されます。

応用例:最も近い単語を自動的に選ぶ

標準ライブラリのdifflibと組み合わせると、複数の候補の中から元の単語に最も類似度の高いものを自動的に選択できます。

import enchant, difflib

d = enchant.Dict("en_US")
my_word = "prfomnc"
result, max_ratio = {}, 0

candidates = set(d.suggest(my_word))
for word in candidates:
    ratio = difflib.SequenceMatcher(None, my_word, word).ratio()
    result[ratio] = word
    if ratio > max_ratio:
        max_ratio = ratio

print(result[max_ratio])

実行結果

performance

このように、「prfomnc」という曖昧な入力から「performance」という正しい単語を推測して表示できます。

Dictオブジェクトとは

DictオブジェクトはPyEnchantモジュールの中核となる最も重要なオブジェクトで、1つの辞書を表します。このオブジェクトを使って、単語のスペルが正しいかどうかの判定や、誤字への修正候補の取得を行います。

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

check()メソッドは、単語が正しければTrue、誤っていればFalseを返します。

言語タグによる辞書の指定

辞書は、チェック対象の言語を示す言語タグ(LANGUAGE TAG)を指定して作成できます。タグを省略した場合は、システムのデフォルトロケールに基づいた辞書が選択されます。

>>> d = enchant.Dict()
>>> d.tag
'en_AU'

辞書を操作する主な関数

enchantモジュールには、辞書を扱うための便利な関数がいくつか用意されています。

  • dict_exists … 指定した言語のDictが利用可能かどうかを確認する
  • request_dict … 新しいDictオブジェクトを構築して返す
  • list_languages … 利用可能なDictの一覧(対応言語)を表示する
>>> enchant.dict_exists("fake")
False
>>> enchant.dict_exists("en_US")
True
>>> d = enchant.request_dict("en_US")
>>> d
<enchant.Dict object at 0x2aaaabdffa50>
>>> enchant.list_languages()
['en', 'en_CA', 'en_GB', 'en_US', 'eo', 'fr', 'fr_CH', 'fr_FR']

  1. PythonでWebからファイルをダウンロードする方法|requestsライブラリの使い方を徹底解説

    Pythonには、urllibやrequestsなど、Webからファイルをダウンロードするためのさまざまなモジュールが用意されています。本記事では、その中でも定番のrequestsライブラリを使用して、URLから効率的にファイルをダウンロードする方法を、ステップごとにわかりやすく解説します。 requestsライブラリでファイルをダウンロードする基本手順 1. モジュールをインポートする import requests 2. ダウンロード対象のURLを指定する url = https://www.facebook.com/favicon.ico r = requests.get(url, al

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c