hunspell の使い方&動かない時の対処方法

スペルチェッカーの hunspell の使い方です

スペルチェッカーといえば

  • ispell
  • aspell
  • hunspell
  • enchant

あたりが定番です.2022年の時点でデファクトは hunspell ?という状況です

hunspell は Linux環境だと特に問題なく”普通"に使えますが,自分でビルドしたり,Windows環境で使う場合は,少しハマります.

以下,トラブルシューティングの方法も含めて,hunspell の使い方をメモしておきます

hunspell の使い方(コマンドラインから)

コマンドラインで使用するのは動作確認時ぐらいでしょう

オプション -d で辞書を指定して起動します

$ hunspell -d en_US

例えば hatena のスペルを確認してみます

$ hunspell -d en_US
Hunspell 1.3.2
hatena
& hatena 3 0: Athena, hate, Nate

stdinに"hatena"と入力すると, Athena, hate, Nateのスペルミスじゃない?って回答が出ます.

これが正常な動作です

hunspellの使い方(Emacsから)

必要最低限な設定は以下の通り

(use-package ispell
    :init
  (setq ispell-program-name "hunspell")
  (setq ispell-really-hunspell t)
  (setq ispell-local-dictionary "en_US")
  ;; 日本語交じりの文書を扱う
  (add-to-list 'ispell-skip-region-alist '("[^\000-\377]+"))
  )

Emacsに標準付属の ispell.el が hunspell にも対応しています.注意すべきポイントは

  • aspell や ispell などのコマンドがインストールされていると,hunspell ではなく,そちらを使う(場合がある)
  • hunspell に固定する場合は,以下の二つの設定が必要
  (setq ispell-program-name "hunspell")
  (setq ispell-really-hunspell t)

動作しない場合

ここからが本題です. Windowsや自分でビルドした場合はうまく動作しないことがあります.その対処方法をまとめます

状況を確認する

hunspellが動作しない原因の大半は,辞書が見つからないことに起因します.


hunspell の動作の仕組みとしては,まずhunspellの動作には辞書ファイルが必要です.例えば en_US の辞書が指定されると,hunspellは SEARCH PATHにある en_US.aff をサーチして,最初に見つかったファイルを利用します.

オプション"-D"をつけて hunspellを起動すると,この動作の確認ができます

$ hunspell -D 
  • SEARCH PATH に検索パス
  • AVAILABLE DICTIONARIES に利用可能な辞書の一覧

が表示されます

必要な辞書が見つからない場合は,辞書をインストールし忘れてないか?インストール先ディレクトリは間違ってないか?確認しましょう

辞書の検索パスを変更する

環境変数 DICPATH で SEARCH PATHを変更できます

$ export DICPATH=辞書のディレクトリ名

デフォルトの辞書を変更する

環境変数 DICTIONARY で辞書が指定できます

$ export DICTIONARY=en_US

Emacs で辞書を指定する場合は

(setq ispell-local-dictionary "en_US")

です