スペルチェッカ Ispell
since Aug. 2 2002

Apr. 24 2005 Aspell 追加
 

概要

UNIX の世界のスペルチェッカは Ispell が有名である.ここでは Ispell ロシア語辞書パッケージを利用する方法について紹介する.

Ispell のロシア語辞書のなかでは, Neal Dalton 氏が礎を築いて以降拡張を経て,現在見出し語 9 万余語,変化形含め 90 万に及ぶ規模のものがメジャーなのではないかと思う.

Ispell はロシア語用仮想端末で KOI8-R テキストに対しスペルの検査を行うことができるが,最も使い勝手を発揮するのはテキストエディタ上での利用であると思う.ここでは Emacs 上で Ispell を利用することを想定して,概略を述べる.

 

インストール

Ispell 用ロシア語辞書も,いまや FreeBSD russian ports が用意されてインストールはいとも簡単である.

# cd /usr/ports/textproc/ispell
# make install
# cd ../../russian/rus-ispell
# make install
	

Emacs の項で述べた環境が前提である.

 

利用

Ispell が参照する辞書をロシア語用に切替えるためには,
    M-x ispell-change-dictionary
russian を応答する.本稿で述べたインストールを行っている場合,選択できる辞書の一覧を下図に示す.

以下に Ispell の代表的な起動方法を示す.

  • スペルチェックしたいテキストを読込んでおき,
        M-x ispell-buffer
    と入力するとテキスト全体に対して Ispell が起動する.
  • ある範囲でのみ適用したいならば,リージョン ("C-スペース" を押した位置から現在のカーソルの位置の間のテキスト) を指定した後,
        M-x ispell-region
    とする.
  • 入力しつつスペルチェックするモードも用意されており,
        M-x ispell-minor-mode
    とすると,単語を入力するつど,辞書にない場合警告してくれる.
  • ある単語にカーソルを合わせて
        M-$
    とすると,当該単語のみスペルチェックする.

 

Ispell Dictionary

 

スペルチェックをしている様子を下図に示す.辞書にない単語がハイライト表示される.

 

Ispell

 

Ispell の提案に対しどのように応答すべきかの概略仕様を以下にあげる.上図の状態において "C-h" もしくは "?" を入力すると一定時間簡易ヘルプを参照することができる.詳細は Emacs-info やインターネット・リソースを参照いただきたい.

  • スペース
    単語をスキップする.ここでは変更しない.
  • 番号
    単語を Ispell が提案する番号の単語に置換える.
  • a
    単語を正しいものとする.以降この単語は検査されない.
  • r 文字列 RET
    単語を文字列で置換える.ロシア単語を入力する場合,あらかじめ Leim インプットメソッドを cyrillic-yawerty などに切替えて,キリル文字が入力できる状態にしておく必要がある.Leim については Emacs の項を参照.
  • R 文字列 RET
    単語を文字列で置換える.他の箇所の同じ単語も置換するか問い合わせを行う.
  • i
    単語を正しいものとして個人辞書に登録する.
  • x
    検査を終了し,検査開始の位置に戻る.
  • q
    検査を終了し,ispell プロセスを停止する.
  • C-g
    検査を停止する.C-u M-$ で再開できる.

Emacs 上のロシア語での利用については,対象のロシア語テキストファイルのエンコードは KOI8-R であれ ISO 8859-5 であれ,きちんとチェックしてくれる.また UTF-8 のように日本語と混在していてもロシア語の部分を検査してくれ,たいへん優れている.(2004.12 追記: これは Emacs 20 + Mule-UCS または oc-unicode での話.Emacs 21 + Mule-UCS では UTF-8 のロシア語部分は検知されないようである.

.emacs に以下の行を追加しておくと,Emacs Ispell の標準の辞書として russian 辞書を用いるようになる.日本語以外にメインの欧文としてロシア語を利用するユーザにはお勧めである.もちろん,M-x ispell-change-dictionary によって,いつでも他の言語辞書に切替えることが可能である.また個人辞書の設定もあげておく.


  ;; 標準辞書 ロシア語
  (setq ispell-dictionary "russian")
  ;; 個人辞書
  (setq ispell-personal-dictionary "~/.ispell-dict-personal")
	   

 

ロシア語用仮想端末の設定」で述べたロシア語仮想端末において,
    % ispell -d russian koi8-r-text-file
として,koi8-r-text-file(KOI8-R テキストファイル)のスペルチェックも可能である.操作も上記 Emacs での応答仕様とほぼ同様である.

Ispell のロシア語辞書は旧正書法の文書をチェックできるものすら公開されている.その他どのような言語の辞書が入手できるかは,以下のインターネット・リソースが参考になる.
    http://fmg-www.cs.ucla.edu/geoff/ispell-dictionaries.html

 

Aspell — Emacs21以降
(05.4.24)

Emacs 21(+ MuleUCS)または Emacs 22 では,UTF-8 多言語テキストバッファを上記 Ispell でチェックできない.この場合,Aspell と,UTF-8 対応パッチで調整された Ispell.el(3.7 beta)を用いる.

Aspell-0.60 とロシア語辞書は FreeBSD ports からインストールできる.ispell.el-3.7 beta 及び UTF-8 対応パッチはリンクからダウンロードする.

# cd /usr/ports/russian/aspell
# make install
# cd ~/tmp (ダウンロードしたディレクトリ)
# ls
ispell.el-3.7.gz    ispell-new.diff.gz
# gzip -d ispell.el-3.7.gz ispell-new.diff.gz
# cp -p ispell.el-3.7 ispell.el
# patch < ispell-new.diff
# emacs -batch -f batch-byte-compile ispell.el
# cp ispell.el* /usr/local/share/emacs/.../ (ispell旧版を置換)
	

.emacs に以下の行を追加しておく.ただし前項の Ispell 設定とは混在できない.Emacs 上の操作は Ispell と同じと考えてよい.

Aspell は LANG 環境変数で各国語辞書の切替えを行う仕組みになっている.「各国語用設定」以降のような関数を記述をしておくと,M-x ru-ispell(露語)のように呼び出して,露英仏独語のスペルチェックを切替えられるので,参考にしていただきたい.


  ;; aspell 附属の ispell を使う
  (setq ispell-program-name "/usr/local/lib/aspell-0.60/ispell")
  ;; 個人辞書
  (setq ispell-personal-dictionary "~/.ispell-dict-personal")

  ;; 各国語用設定
  ;;; ロシア語
  (defun ru-ispell () "Russian aspell for UTF-8"
   (interactive)
   (setenv "LANG" "ru_RU")
   (ispell-buffer)
   )

  ;;; 英語
  (defun en-ispell () "English aspell for UTF-8"
   (interactive)
   (setenv "LANG" "en_EN")
   (ispell-buffer)
   )

  ;;; 仏語
  (defun fr-ispell () "French aspell for UTF-8"
   (interactive)
   (setenv "LANG" "fr_FR")
   (ispell-buffer)
   )

  ;;; 独語
  (defun de-ispell () "German aspell for UTF-8"
   (interactive)
   (setenv "LANG" "de_DE")
   (ispell-buffer)
   )