ソフトウェアにおいて、スペルチェッカー(またはスペルチェック)とは、テキスト内のスペルミスをチェックするソフトウェア機能のことです。スペルチェック機能は、ワープロソフト、メールクライアント、電子辞書、検索エンジンなどのソフトウェアやサービスに組み込まれていることがよくあります。
スペルチェッカーがあるんだ、 僕のピーシーに付いてきたんだ。 僕のレビュー ミスステーキ4つにリーマークをつけて、海を結び付けることもできる。僕は 埠頭を叩いて、ブンブンと入力して、 それが2つを測って、 僕が書いたものが間違っているかどうか 教えてくれる。それはすぐに重さを教えてくれる。 僕はこの詩をそれに通したんだ、 君の岸辺は本当に喜んでいるよ。 それは重さの中でとても磨かれている。 僕のチェッカーは僕に縫い物を教えてくれた。 チェッカーは祝福されたものだ、 それはたくさんのタイムを凍らせる。 それは僕があらゆるスタイルの書き方を正しくするのに役立ち、 僕が韻を踏むときにも助けてくれる。 それぞれのほつれが僕のスクリーンにポーズをとってくる、 僕はジュールになるのを縛られている。 チェッカーはすべての単語に注ぎ込み、 2つのチェックサムスペルルール。

基本的なスペルチェッカーは、以下の処理を実行します。
形態論的分析(単語の文法的な役割に応じて多くの形態を許容する)が英語にとって大きな利点をもたらすかどうかは不明であるが、ドイツ語、ハンガリー語、トルコ語のような高度に統語的な言語にとっては、その利点は明らかである。
これらの構成要素に加えて、プログラムのユーザーインターフェースでは、ユーザーが交換部品を承認または拒否したり、プログラムの動作を変更したりすることができます。
スペルチェッカーは、レーベンシュタイン距離などの近似文字列照合アルゴリズムを使用して、スペルミスのある単語の正しいスペルを見つけることができます。[ 1 ]別のタイプのスペルチェッカーは、正しいスペルの単語ではなく、 n-gramなどの統計情報のみを使用してエラーを認識します。このアプローチでは、十分な統計情報を取得するために通常多くの労力が必要です。主な利点としては、実行時のストレージが少なくて済むことと、辞書に含まれていない単語のエラーを修正できることが挙げられます。[ 2 ]
スペルチェッカーによっては、スペルミスのリストと、それらのスペルミスに対する修正候補が固定されている場合があります。このような柔軟性に欠ける方法は、百科事典の「関連項目」など、紙媒体の訂正方法でよく用いられます。
クラスタリングアルゴリズムは、音韻情報と組み合わせてスペルチェックにも使用されています[ 3 ] [ 4 ] 。
1961年、この新興技術の研究を率いていたレス・アーネストは、10,000の許容単語のリストにアクセスする最初のスペルチェッカーを含める必要があると考えました。 [ 5 ]当時アーネストの指導を受けていた大学院生のラルフ・ゴリンは、1971年2月にスタンフォード大学人工知能研究所で、一般的な英語テキスト用のアプリケーション プログラムとして(研究用ではなく)書かれた最初の真のスペル チェッカー プログラム、DEC PDP-10 用の SPELL を作成しました。 [ 6 ] ゴリンは、より高速な動作のためにアセンブリ言語でSPELL を作成しました。彼は、単語リストから 1 文字または隣接する文字の転置によって異なるもっともらしい正しいスペルを検索し、それをユーザーに提示することで、最初のスペル コレクターを作成しました。ゴリンは、ほとんどの SAIL (スタンフォード人工知能研究所) のプログラムと同様に、SPELL を一般に公開し、パーソナル コンピュータが一般に使用される約 10 年前に、新しい ARPANET を介してすぐに世界中に広まりました。[ 7 ] SPELL、そのアルゴリズムとデータ構造は、Unixのispellプログラムに影響を与えた。
最初のスペルチェッカーは1970年代後半にメインフレームコンピュータで広く利用可能になった。ジョージタウン大学の6人の言語学者グループがIBM社向けに最初のスペルチェックシステムを開発した。[ 8 ]
ヘンリー・クチェラは1981年にデジタル・イクイップメント・コーポレーションのVAXマシン用にそれを発明した。[ 9 ]
Unixで一般的に使用されている国際版Ispellプログラムは、RE GorinのSPELLをベースにしています。MITのPace WillissonによってC言語に変換されました。[ 10 ]
GNUプロジェクトには、スペルチェッカーGNU Aspellがあります。Aspellの主な改良点は、スペルミスのある英単語に対して、より正確な正しい代替案を提案できることです。[ 11 ]
従来のスペルチェッカーでは複雑な屈折語の単語をチェックできないため、ハンガリー人のラースロー・ネーメトは、膠着語や複雑な複合語をサポートするスペルチェッカーであるHunspellを開発しました。Hunspell は辞書に Unicode も使用しています。 [ 12 ] Hunspell はバージョン 2.0.2 でOpenOffice.orgの 以前のMySpellに取って代わりました。
Enchant は、 AbiWordから派生した別の汎用スペルチェッカーです。その目的は、Aspell、Hunspell、Nuspell、Hspell (ヘブライ語)、Voikko (フィンランド語)、Zemberek (トルコ語)、AppleSpell など、さまざまな言語をサポートするプログラムを 1 つのインターフェースに統合することです。[ 13 ]
パーソナルコンピュータ向けの最初のスペルチェッカーは1980年に登場し、例えばコモドールシステム向けの「WordCheck」は1980年後半にリリースされ、1981年1月に広告が掲載された。[ 14 ] Maria Mariani [ 8 ]やRandom House [ 15 ]などの開発者は、急速に拡大するソフトウェア市場にOEMパッケージやエンドユーザー向け製品を急いで投入した。Windows以前のPCでは、これらのスペルチェッカーはスタンドアロンプログラムであり、十分なメモリを備えたPCでは、その多くがワープロパッケージ内から終了して常駐モードで実行できた。
しかし、スタンドアロンパッケージの市場は短命に終わった。1980年代半ばまでに、WordStarやWordPerfectといった人気ワープロソフトの開発者は、主に上記の企業からライセンス供与を受けて、自社のパッケージにスペルチェッカーを組み込んだ。これらの企業は、英語だけでなく、多くのヨーロッパ言語、そして最終的にはアジア言語まで、対応範囲を急速に拡大した。しかし、これにはソフトウェアの形態素解析ルーチンの高度化が必要となり、特にハンガリー語やフィンランド語のような膠着語が多い言語ではその傾向が顕著だった。アイスランドのような国ではワープロソフト市場の規模がスペルチェッカーの実装に投資するほどの規模ではなかったかもしれないが、WordPerfectのような企業は、グローバルマーケティング戦略の一環として、できるだけ多くの国市場向けにソフトウェアをローカライズしようと努めた。
AppleがMac OS X向けに「システム全体のスペルチェッカー」を開発し、「オペレーティングシステムがスペルチェックを引き継ぐ」ようにしたとき[ 16 ]、それは画期的なことでした。つまり、「プログラムごとに個別のスペルチェッカーを維持する必要がなくなった」のです[ 17 ] 。Mac OS Xのスペルチェックは、ほぼすべてのバンドルアプリケーションとサードパーティ製アプリケーションをカバーしています。
1994 年に導入されたVisual Tools のVT Speller は、「Windows をサポートするアプリケーションの開発者向けに設計された」ものでした。[ 18 ] [ 19 ]辞書が付属していましたが、二次辞書を作成して使用することもできました。[ 20 ]
FirefoxやGoogle ChromeなどのWebブラウザは、 Hunspellを使用してスペルチェック機能を提供しています。Hunspellを使用する前は、FirefoxとChromeはそれぞれMySpellとGNU Aspellを使用していました。[ 21 ]
スペルチェッカーの中には、医療ミスを防ぐために医療辞書を別途サポートしているものもあります。[ 22 ] [ 23 ] [ 24 ]
初期のスペルチェッカーは「修正者」ではなく「検証者」でした。スペルミスに対して修正候補を提示することはなく、タイプミスには役立ちましたが、論理的または音韻的な誤りにはあまり役立ちませんでした。開発者が直面した課題は、スペルミスに対して有用な修正候補を提示することの難しさでした。そのためには、単語を骨格構造にまで分解し、パターンマッチングアルゴリズムを適用する必要がありました。
スペルチェック辞書に関しては、「大きければ大きいほど良い」、つまり正しい単語が誤りとしてマークされないようにするのが論理的に思えるかもしれません。しかし実際には、英語の場合、最適な単語数は約9万語のようです。これより多いと、スペルミスのある単語が他の単語と間違えられて見落とされてしまう可能性があります。例えば、言語学者はコーパス言語学に基づいて、 「baht」という単語がタイの通貨を指すよりも、 「bath」や「bat」のスペルミスであることが多いと判断するかもしれません。したがって、タイの通貨について書いている少数の人が多少不便を感じる方が、風呂について書いている大多数の人のスペルミスが見過ごされるよりも、一般的にはより有益でしょう。

初期のMS-DOSスペルチェッカーは、主にワープロソフト内の校正モードで使用されていました。文書を作成した後、ユーザーはテキストをスキャンしてスペルミスを探しました。[ 25 ]しかしその後、Oracleの短命に終わったCoAuthorなどのパッケージでバッチ処理が提供され、ユーザーは文書処理後に結果を表示し、間違っていることがわかっている単語だけを修正できるようになりました。メモリと処理能力が豊富になると、1987年にリリースされたSector SoftwareのSpellboundプログラムや、 Word 95以降のMicrosoft Wordのように、対話形式でバックグラウンドでスペルチェックが実行されるようになりました。
スペルチェッカーはますます高度化し、文法エラーを認識できるようになりました。しかし、たとえ最高のものであっても、テキスト内のすべてのエラー(同音異義語のエラーなど)を検出できることは稀で、新語や外国語をスペルミスとして警告します。それでも、スペルチェッカーは、非ネイティブの言語学習者が目標言語でのスペルミスを検出して修正するために頼ることができる外国語ライティング支援の一種と考えることができます。[ 26 ]
英語は、一部の専門用語や変形語を除き、フォーマルな文章で使用される単語のほとんどが、一般的な辞書に載っている単一の綴りを持つという点で独特です。多くの言語では、単語が連結されて新しい単語の組み合わせが作られることがよくあります。ドイツ語では、複合名詞が既存の名詞から頻繁に作られます。一部の文字体系では、単語が明確に区切られていないため、単語分割アルゴリズムが必要になります。これらのそれぞれが、英語以外の言語のスペルチェッカーにとって特有の課題となります。
周囲の単語の文脈に基づいて、単語自体が語彙に含まれている場合でも、スペルミスを認識できるアルゴリズムの開発に関する研究が行われています。これにより、上記の詩にあるような単語を検出できるだけでなく、辞書の拡大による悪影響を軽減し、より多くの単語を認識できるようになります。たとえば、ThaiやThailandと同じ段落にあるbaht は、 bathのスペルミスとして認識されません。このようなシステムで検出されるエラーの最も一般的な例は、次の文の太字で示されている単語のような同音異義語のエラーです。
これまでで最も成功したアルゴリズムは、1999 年に発表された Andrew Golding と Dan Roth の「Winnowベースのスペル訂正アルゴリズム」[ 27 ]で、通常の非単語スペルエラーに加えて、文脈依存のスペルエラーの約 96% を認識できます。文脈依存のスペルチェッカーは、現在ではサービス終了しているMicrosoft Office 2007 [ 28 ]とGoogle Wave [ 29 ]に搭載されていました。
文法チェッカーは、スペルミスだけでなく、不適切な単語の選択など、文法上の問題を修正しようと試みます。
-SPELLER