
baby st部分的に入力された検索語が、さまざまな候補に自動補完される例オートコンプリート、または単語補完とは、アプリケーションがユーザーが入力している単語の残りの部分を予測する機能です。AndroidおよびiOS [ 1 ]スマートフォンでは、これは予測テキストと呼ばれます。グラフィカルユーザーインターフェースでは、ユーザーは通常、タブキーを押して候補を受け入れるか、下矢印キーを押して複数の候補のうちの 1 つを受け入れることができます。
オートコンプリートは、テキスト入力フィールドに数文字入力しただけで、ユーザーが入力しようとしている単語を正しく予測することで、人間とコンピュータのやり取りを高速化します。これは、使用可能な単語の数が限られている場合(コマンドラインインタープリタなど)、特定の単語が非常に頻繁に使用される場合(電子メールの宛名書きなど)、または構造化されていて予測可能なテキストを作成する場合(ソースコードエディタなど)に最も効果的です。
多くのオートコンプリートアルゴリズムは、ユーザーが単語を数回入力した後に新しい単語を学習し、個々のユーザーの学習された習慣に基づいて代替案を提案することができる。
単語予測ソフトウェアの本来の目的は、身体障害のある人がタイピング速度を上げるのを助けること[ 2 ]、そして単語や文章を完成させるために必要なキーストロークの数を減らすのを助けることでした[ 3 ] 。速度を上げる必要性は、音声生成装置を使用する人が一般的に口頭で話す人の10%未満の速度で発話するという事実によって示されています[ 4 ]。しかし、この機能は、特に医師など、技術的または医学的な性質を持つ長くて綴りの難しい用語を頻繁に使用する人など、テキストを書くすべての人にとって非常に役立ちます。
オートコンプリートまたは単語補完は、書き手が単語の最初の文字を入力すると、プログラムが候補として 1 つ以上の単語を予測するように機能します。意図した単語がリストに含まれている場合は、書き手はたとえば数字キーを使用してそれを選択できます。ユーザーが望む単語が予測されない場合は、書き手は単語の次の文字を入力する必要があります。このとき、単語の選択肢は、選択された単語と同じ文字で始まる単語が表示されるように変更されます。ユーザーが望む単語が表示されると、それが選択され、単語がテキストに挿入されます。[ 5 ] [ 6 ]別の形式の単語予測では、最近使用された単語のペアに基づいて、直前に入力された単語の後に続く可能性が最も高い単語が予測されます。[ 6 ] 単語予測は言語モデリングを使用し、セットされた語彙内で最も出現する可能性の高い単語が計算されます。[ 7 ] 言語モデリングに加えて、AACデバイスでの基本的な単語予測は、AAC ユーザーが最近頻繁に使用した単語が予測される可能性が高くなる頻度モデルと組み合わされることがよくあります。 [ 4 ] 単語予測ソフトウェアでは、ユーザーが直接、または書かれた単語を「学習」することによって、独自の単語を単語予測辞書に入力することもよくあります。[ 5 ] [ 6 ]性器やその他の卑猥な用語に関連する検索結果は、病的な用語と同様に、オートコンプリート技術から除外されることがよくあります。[ 8 ] [ 9 ]
オートコンプリートと予測テキスト技術は、中国語のタイプライターの入力効率の悪さを解決するために、1950年代に中国の科学者と言語学者によって発明されました。[ 10 ]入力プロセスでは、トレイ上の何千もの表意文字を探して選択する必要があり、 [ 11 ]ワード処理速度が大幅に低下していました。[ 12 ] [ 13 ]
1950年代、タイピストたちは文字配列を標準的な辞書配列から、よく使われる単語やフレーズのグループに再配置するようになった。[ 14 ]中国のタイプライターのエンジニアたちは、単語予測によって可能な限り最速でアクセスできる一般的な文字にアクセスするメカニズムを革新した。この技術は今日、コンピュータの中国語入力方法や、多くの言語のテキストメッセージで使用されている。スタンフォード大学の歴史家トーマス・ムラニーによれば、1960年代から1970年代にかけての現代中国語タイプライターの開発は、現代のコンピュータワードプロセッサの開発に影響を与え、コンピュータ自体の開発にも影響を与えた。[ 15 ] [ 11 ] [ 14 ]
既存のアプリケーションにオートコンプリート機能を追加するスタンドアロンツールがあります。これらのプログラムは、ユーザーのキーストロークを監視し、最初に入力された文字に基づいて単語のリストを提案します。例としては、Typingaid と Letmetype があります。[ 16 ] [ 17 ]フリーウェアの LetMeType は、もはや開発されていません。作者はソースコードを公開しており、誰でも開発を継続できます。同じくフリーウェアの TypingAid は、活発に開発されています。フリーウェアと有料ウェアの両方で利用できる IntelliComplete は、IntelliComplete サーバープログラムにフックする特定のプログラムでのみ動作します。[ 18 ]最初のオートコンプリートソフトウェアは Smartype で、1980 年代後半に遡り、現在でも利用可能です。当初は MS/DOS 用の WordPerfect で作業する医療転写者向けに開発されましたが、現在では Windows または Web ベースのプログラムのあらゆるアプリケーションで機能します。
自動修正は、特定の文字列を別の文字列(通常は「myname」を「Lee John Nikolai François Al Rahman」に置き換えるなど、より長く入力しにくい文字列)に自動的に置き換える関連機能です。また、「teh」を「the」に変換するなど、単純な入力ミスも自動的に修正します。単語リストに基づいた、スタンドアロンまたはテキストエディタに統合された多くのオートコンプリートプログラムには、よく使うフレーズの短縮機能も含まれています。
コンテキスト補完は、単語補完と同様に、テキストエディタの機能の一つで、現在の文脈や、同じドキュメント内または学習データセット内の類似単語の文脈に基づいて、単語(またはフレーズ全体)を補完します。コンテキスト補完の主な利点は、最初の文字がなくても、予測される単語をより正確に予測できることです。主な欠点は、学習データセットが必要となることで、コンテキスト補完の場合は、より単純な単語補完よりも一般的に大きなデータセットが必要になります。コンテキスト補完が最もよく使用されるのは、高度なプログラミング言語エディタやIDEです。これらの環境では、学習データセットが最初から利用可能であり、ユーザーにとって、広範な単語補完よりもコンテキスト補完の方が理にかなっているからです。
行補完は、コンテキスト補完の一種で、2006年7月にJuraj Simlovic氏がTED Notepadで初めて紹介しました。行補完におけるコンテキストは現在の行であり、現在の文書は学習データセットとして機能します。ユーザーが頻繁に使用されるフレーズで始まる行を開始すると、エディタは類似の行が異なる位置まで自動的に補完するか、一般的な続きのリストを提示します。

ウェブブラウザでは、アドレスバー(ブラウザの履歴から項目を選択)や、検索エンジンの検索ボックスなど、よく使うページのテキストボックスでオートコンプリート機能が利用できます。ウェブアドレスのオートコンプリートは、アドレス全体が長くて正確に入力するのが難しい場合が多いため、特に便利です。
オートコンプリート、または「オートフィル」は、ウェブブラウザによく見られる機能で、ウェブフォームへの自動入力に使用されます。ユーザーがフォームにデータを入力して送信すると、ウェブブラウザはデフォルトでフォームの内容を保存することがよくあります。
この機能は、ログイン認証情報を入力するのによく使われます。ただし、パスワードフィールドが検出されると、Webブラウザは通常、パスワードをパスワードストアに保存する前にユーザーに明示的な確認を求めます。多くの場合、組み込みのパスワードマネージャーで保護されており、認証情報が自動入力される前に「マスターパスワード」を使用できるようにしています。[ 19 ]
Internet ExplorerやGoogleツールバーなど、ほとんどの場合、入力内容はフォームフィールドの名前に依存します。これは、姓のフィールドに番地名を入力したり、その逆を行ったりしないようにするためです。このような用途において、以前のHTML 5仕様では、このようなフォームフィールドの提案された名前は参照されなくなり、名前の選択は各ブラウザの実装に委ねられることになりました。
Operaなどの一部のウェブブラウザは、クレジットカード情報や住所を自動的に入力します。[ 20 ]
個々のウェブページでは、ブラウザの自動入力機能をデフォルトで有効または無効にすることができます。これは、HTMLの<form>要素またはその対応するフォーム要素autocomplete内の属性によって設定します。<form>
<!-- オートコンプリートはデフォルトで有効になっています --> < form autocomplete = "on" ><!-- このフォーム要素ではオートコンプリートが有効になっています --> < input name = "username" autocomplete = "on" ><!-- これは親フォームの値を継承します --> < input name = " password" type = " password" > </form>現代のブラウザの自動入力機能は、隠しフォームフィールドを使用したフィッシング攻撃で悪用され、ユーザーの電話番号などの個人情報を収集できることが示されています。 [ 21 ]
HTMLには、datalist入力要素にオートコンプリート機能を与えるために使用できる要素があります。[ 22 ]
< label for = "ice-cream-choice" >フレーバーを選択してください: </label> < input list = "ice-cream-flavors" id = "ice-cream-choice" name = " ice - cream-choice" />< datalist id = "ice-cream-flavors" > < option value = "Chocolate" > </option> < option value = " Coconut" > </option> < option value = " Mint " > </option> < option value = " Strawberry " > </option> < option value = " Vanilla " > </option> </datalist>デスクトップアプリケーションでは、オートコンプリートは、ユーザーが入力する際にテキストを予測して補完することでユーザーを支援します。これは、入力の手間を減らし、入力速度を向上させ、一貫性を高めるために、ライティングアシスタント、コードエディタ、オフィスソフトウェア、メモアプリ、メッセージングクライアント、その他の生産性向上ツールで一般的に使用されています。最新のAI搭載オートコンプリートシステムは、周囲のテキストとユーザーの現在のタスクに基づいて、文脈を考慮した単語、フレーズ、または文の補完を生成できます。[ 23 ]
メールプログラムでは、通常、オートコンプリート機能を使って宛先のメールアドレスを自動入力します。一般的に、よく使うメールアドレスは少数なので、オートコンプリート機能を使ってその中から選択するのは比較的簡単です。ウェブアドレスと同様に、メールアドレスも長いことが多く、手入力するのは非常に面倒です。
例えば、Microsoft Outlook Expressはアドレス帳に登録されている名前に基づいてアドレスを検索します。Google のGmailは、アドレスまたは保存されている名前に含まれる任意の文字列に基づいてアドレスを検索します。
オートコンプリート(予測検索とも呼ばれる)は、買い物客が検索バーに入力する際に、関連する商品、カテゴリ、またはクエリを提案するために使用されます。この機能は、入力の手間を軽減し、ユーザーを人気のある検索語やコンバージョン率の高い検索語へと導きます。多くのeコマースシステムは、最近の検索データやトレンド商品に基づいてこれらの提案を動的に生成し、速度と発見性の両方を向上させています。[ 24 ]
検索エンジンでは、オートコンプリート機能によって、ユーザーが検索ボックスにクエリを入力する際に、候補となるクエリや検索結果が表示されます。これは一般的にオートサジェストまたはインクリメンタル検索とも呼ばれます。この種の検索は、音声認識アルゴリズムであるSoundexや言語に依存しないレーベンシュタイン距離アルゴリズムなど、入力ミスを許容するマッチングアルゴリズムに依存することがよくあります。課題は、大規模なインデックスやよく使われるクエリリストを数ミリ秒以内に検索し、ユーザーが入力中に検索結果をポップアップ表示できるようにすることです。
検索時に否定的な検索語が提案されると、オートコンプリートは個人や企業に悪影響を及ぼす可能性があります。詐欺、苦情、不正などの否定的な検索語に関連付けられている企業が結果を変更しようとするため、オートコンプリートは評判管理の一部となっています。特にGoogleは、アルゴリズムの動作に影響を与えるいくつかの側面をリストアップしていますが、これは操作可能な領域です。[ 25 ]

ソースコードの自動補完は、コード補完とも呼ばれます。ソースコードエディタでは、プログラミング言語の規則的な構造によって自動補完が大幅に簡素化されます。通常、現在のコンテキストまたは名前空間で意味を持つ単語は限られており、変数名や関数名などが含まれます。コード補完の一例として、MicrosoftのIntelliSenseが挙げられます。これは、現在の入力プレフィックスに対して候補となる補完候補をポップアップリストで表示し、ユーザーが適切な候補を選択できるようにするものです。オブジェクト指向プログラミングでは、プログラマーが特定のクラスにどのようなメンバーがあるかを正確に把握していないことが多いため、これは特に役立ちます。したがって、自動補完は入力方法であると同時に、便利なドキュメントとしても機能します。
ソースコードのオートコンプリートのもう一つの利点は、プログラマーがより長く、より分かりやすい変数名を使うように促し、結果としてソースコードの可読性を高めることです。キャメルケースを含む長い単語を入力するのはnumberOfWordsPerParagraph難しい場合がありますが、オートコンプリートを使えば、少ないキー操作で単語の入力を完了できます。
データベースクエリツールのオートコンプリート機能を使用すると、 SQLステートメント内のテーブル名と、そのSQLステートメントで参照されているテーブルの列名を自動補完できます。エディタにテキストを入力すると、SQLステートメント内のカーソルの位置によって、テーブル補完が必要か、テーブル列補完が必要かが示されます。テーブル補完では、ユーザーが接続しているデータベースサーバーで使用可能なテーブルの一覧が表示されます。列補完では、SQLステートメントで参照されているテーブルのみの列の一覧が表示されます。SQL Server Management Studioでは、クエリツールにオートコンプリート機能が備わっています。
多くのワープロソフトでは、オートコンプリート機能によって、繰り返し入力する単語やフレーズの入力時間を短縮できます。オートコンプリートの候補となる単語は、現在の文書の残りの部分から取得されるか、ユーザーが定義したよく使う単語のリストから取得されます。現在、Apache OpenOffice、Calligra Suite、KOffice、LibreOffice、Microsoft Officeは、 EmacsやVimなどの高度なテキストエディタと同様に、この種のオートコンプリートをサポートしています。

Unixのshやbash、Windowsのcmd.exeやPowerShell、あるいは同様のコマンドライン インターフェイスなどのコマンドライン インタプリタでは、コマンド名やファイル名のオートコンプリートは、ユーザーがアクセスする可能性のあるすべての名前を追跡することで実現できます。通常、オートコンプリートは、単語の最初の数文字を入力した後、キーを押すことで実行されます。たとえば、現在のディレクトリで x で始まるファイルが xLongFileName しかない場合、ユーザーは x と入力して完全な名前をオートコンプリートする方が都合が良いでしょう。同じスコープ内に x で始まる別のファイル名やコマンドがある場合は、ユーザーはさらに文字を入力するか、Tab キーを繰り返し押して適切なテキストを選択します。Tab ↹
研究によると、単語予測ソフトウェアは必要なキーストローク数を減らし、障害のある子供の文章作成能力を向上させることが示されているが、[ 2 ]単語予測が実際に出力速度を向上させるかどうかについては結果がまちまちである。[ 26 ] [ 27 ] 単語予測が必ずしもテキスト入力速度を向上させるとは限らない理由は、認知負荷の増加と、視線をキーボードからモニターに移動させる必要性があるためと考えられている。[ 2 ]
この認知負荷を軽減するために、候補となる単語を 5 つに絞り、それらの単語を縦に並べるなどのパラメータが使用されることがあります。[ 2 ] 縦に並べることで、頭と目の動きを最小限に抑え、単語の長さがわかるため、視覚的な手がかりも増えます。[ 28 ] 多くのソフトウェア開発者は、単語予測リストがカーソルに追従すれば目の動きが減ると考えていますが、[ 2 ] Tam、Reid、O'Keefe、Nauman (2002) による二分脊椎症の子供を対象とした研究では、リストが画面の下端の中央に表示される方がタイピングの精度が高く、子供たちもその方を好むことが示されました。いくつかの研究では、単語リストがキーボードに近いほど目の動きが少なくなるため、単語予測のパフォーマンスと満足度が向上することがわかっています。[ 29 ]
単語予測機能を備えたソフトウェアは、複数のメーカーによって開発されています。このソフトウェアは、 Microsoft Wordなどの一般的なプログラムのアドオンとして購入することも(たとえば、WordQ+SpeakQ、Typing Assistant、[ 30 ] Co:Writer、Wivik、Ghotit Dyslexia)、AAC デバイスの多くの機能の 1 つとして購入することもできます (PRC の Pathfinder、Dynavox Systems、Saltillo の ChatPC 製品)。よく知られているプログラムには、フリーウェア版と有料版の両方がある Intellicomplete がありますが、これは、それと連携するように作られたプログラムでのみ動作します。Letmetypeと Typingaid はどちらも、任意のテキスト エディタで動作するフリーウェア プログラムです。
オートコンプリートの初期バージョンは、1967年にH.クリストファー・ロンゲ=ヒギンズがコンピュータ支援タイプライター(CAT)[ 31 ]で説明した。「『BEGIN』や『PROCEDURE』などの単語、またはプログラマーが入力した識別子は、プログラマーが1つか2つの記号を入力するだけでCATによって自動的に補完される」。