Введение
Автозаполнение, или завершение слова, — это функция, при которой приложение предсказывает оставшуюся часть слова, которое набирает пользователь. На смартфонах Android и iOS это называется предиктивным текстом. В графических пользовательских интерфейсах пользователи обычно могут нажать клавишу Tab, чтобы принять предложение, или клавишу со стрелкой вниз, чтобы выбрать одно из нескольких. Автозаполнение ускоряет взаимодействие человека с компьютером, когда оно правильно предсказывает слово, которое пользователь собирается ввести, после ввода лишь нескольких символов в поле ввода текста. Оно наиболее эффективно в областях с ограниченным набором возможных слов (например, в интерпретаторах командной строки), когда некоторые слова встречаются значительно чаще (например, при написании адреса электронной почты) или при создании структурированного и предсказуемого текста (как в редакторах исходного кода). Многие алгоритмы автозаполнения запоминают новые слова после того, как пользователь несколько раз их ввёл, и могут предлагать альтернативы, основываясь на усвоенных привычках конкретного пользователя.
Autocomplete, or word completion, is a feature in which an application predicts the rest of a word a user is typing. In Android and iOS smartphones, this is called predictive text. In graphical user interfaces, users can typically press the tab key to accept a suggestion or the down arrow key to accept one of several. Autocomplete speeds up human computer interactions when it correctly predicts the word a user intends to enter after only a few characters have been typed into a text input field. It works best in domains with a limited number of possible words (such as in command line interpreters), when some words are much more common (such as when addressing an e mail), or writing structured and predictable text (as in source code editors). Many autocomplete algorithms learn new words after the user has written them a few times, and can suggest alternatives based on the learned habits of the individual user.
Первоначальная цель
Первоначальная цель программного обеспечения для предсказания слов заключалась в том, чтобы помочь людям с физическими ограничениями увеличить скорость набора текста и уменьшить количество нажатий клавиш, необходимых для завершения слова или предложения. Необходимость повышения скорости подтверждается тем, что люди, использующие устройства синтеза речи, обычно говорят со скоростью, которая менее чем в 10 раз ниже, чем у людей, использующих устную речь. Однако эта функция также очень полезна для всех, кто пишет текст, особенно для специалистов – например, врачей – которые часто используют длинные, сложные в написании термины технического или медицинского характера.
Описание
Автозаполнение или завершение слова работает следующим образом: когда пользователь начинает вводить слово с первой буквы или нескольких букв, программа предсказывает одно или несколько возможных вариантов. Если нужное слово есть в списке, пользователь может выбрать его, например, с помощью цифровых клавиш. Если программа не предсказала нужное слово, пользователь должен ввести следующую букву. При этом список вариантов изменяется, чтобы отображать слова, начинающиеся с тех же букв, которые уже введены. Когда нужное слово появляется в списке, пользователь выбирает его, и оно вставляется в текст. В другой форме предсказания слов программа предсказывает слова, которые наиболее вероятно последуют за только что написанным, основываясь на недавно использованных парах слов. Помимо языкового моделирования, базовое предсказание слов на устройствах AAC часто сочетается с моделью частотности, при которой слова, которые пользователь AAC использовал недавно и часто, имеют более высокую вероятность быть предсказанными.
История
Технология автоматического завершения и предсказания текста была изобретена китайскими учеными и лингвистами в 1950-х годах для решения проблемы неэффективности ввода на китайской пишущей машинке, поскольку процесс набора текста включал поиск и выбор тысяч иероглифических символов на панели, что значительно замедляло скорость обработки текста. В 1950-х годах машинистки стали перестраивать раскладку символов от стандартной словарной к группам часто используемых слов и фраз. Инженеры, работавшие над китайскими пишущими машинками, разработали механизмы для быстрого доступа к наиболее распространенным символам с помощью предсказания слов – техники, которая сегодня используется в китайских методах ввода для компьютеров и в текстовых сообщениях на многих языках. По словам историка Стэнфордского университета Томаса Муллани, развитие современных китайских пишущих машин в 1960-х – 1970-х годах оказало влияние на разработку современных компьютерных текстовых процессоров и даже на развитие самих компьютеров. LetMeType, бесплатное программное обеспечение, больше не поддерживается, но автор опубликовал исходный код, позволяя любому желающему продолжить его разработку. Typingaid, также бесплатное программное обеспечение, активно развивается. Intellicomplete, доступный как в бесплатной, так и в платной версии, работает только в определенных программах, подключающихся к серверной программе Intellicomplete. Многие программы автозаполнения также можно использовать для создания списка сокращений. Изначальной программой для автоматического завершения была Smartype, появившаяся в конце 1980-х годов и доступная до сих пор. Она была первоначально разработана для медицинских транскрипционистов, работающих в WordPerfect для MS/DOS, но теперь функционирует с любым приложением в любой программе для Windows или в веб-браузере.
Скриншот
Автозамена, также называемая Autoreplace, — это сопутствующая функция, которая предполагает автоматическую замену определенной строки на другую, обычно более длинную и сложную для ввода, например, "myname" на "Lee John Nikolai François Al Rahman". Она также может незаметно исправлять простые опечатки, например, заменять "teh" на "the". Многие программы автозаполнения, как отдельные, так и встроенные в текстовые редакторы, основанные на словарях, также включают функцию автозамены для часто используемых фраз.
Завершение контекста
Контекстное завершение — это функция текстового редактора, аналогичная автозавершению слов, которая завершает слова (или целые фразы) на основе текущего контекста и контекста других похожих слов в том же документе или в некотором наборе обучающих данных. Основное преимущество контекстного завершения — возможность более точно предсказывать ожидаемые слова, даже без ввода начальных букв. Основной недостаток — необходимость в наборе обучающих данных, который обычно больше для контекстного завершения, чем для простого автозавершения слов. Наиболее часто контекстное завершение используется в продвинутых редакторах языков программирования и IDE, где набор обучающих данных изначально доступен, и контекстное завершение имеет больший смысл для пользователя, чем простое автозавершение слов. Завершение строки — это тип контекстного завершения, впервые представленный Юраем Симловичем в TED Notepad в июле 2006 года. Контекстом в завершении строки является текущая строка, а текущий документ выступает в качестве набора обучающих данных. Когда пользователь начинает строку, начинающуюся с часто используемой фразы, редактор автоматически завершает её до позиции, где похожие строки различаются, или предлагает список наиболее вероятных продолжений. Завершение действий в приложениях — это автономные инструменты, добавляющие функциональность автозавершения к существующим приложениям или ко всем приложениям операционной системы, основываясь на текущем контексте. Основное преимущество завершения действий — возможность предсказывать ожидаемые действия. Основной недостаток — необходимость в наборе данных. Наиболее часто завершение действий используется в продвинутых редакторах языков программирования и IDE. Однако существуют также инструменты завершения действий, которые работают глобально, параллельно, во всех приложениях всего компьютера, практически не мешая автозавершению действий в отдельных приложениях.
В веб-браузерах
В веб-браузерах автозаполнение происходит в адресной строке (с использованием элементов из истории браузера) и в полях ввода на часто посещаемых страницах, например, в поле поиска поисковой системы. Автозаполнение веб-адресов особенно удобно, поскольку полные адреса часто бывают длинными и их сложно правильно ввести. В HTML5 существует атрибут `autocomplete` для форм.
В электронных программах
В программах электронной почты автоматическое заполнение обычно используется для подстановки адресов электронной почты предполагаемых получателей. Как правило, существует небольшое количество часто используемых адресов электронной почты, поэтому относительно легко использовать автозаполнение для выбора из них. Подобно веб-адресам, адреса электронной почты часто бывают длинными, что делает их полный ввод неудобным. Например, Microsoft Outlook Express находит адреса на основе имени, указанного в адресной книге. Gmail от Google находит адреса по любой строке, содержащейся в адресе или сохраненном имени.
В поисковых системах
В поисковых системах функции автозаполнения пользовательского интерфейса предлагают пользователям варианты запросов или результатов по мере ввода запроса в строку поиска. Это также часто называют автоподсказкой или инкрементным поиском. Этот тип поиска часто использует алгоритмы сопоставления, устойчивые к ошибкам ввода, такие как фонетические алгоритмы Soundex или не зависящий от языка алгоритм Левенштейна. Задача состоит в том, чтобы осуществлять поиск в больших индексах или популярных списках запросов менее чем за несколько миллисекунд, чтобы пользователь видел результаты, появляющиеся в процессе набора текста. Автозаполнение может негативно сказываться на частных лицах и компаниях, когда в качестве подсказок предлагаются негативные поисковые запросы. Автозаполнение теперь стало частью управления репутацией, поскольку компании, связанные с негативными поисковыми терминами, такими как «мошенничество», «жалобы» и «обман», стремятся изменить выдачу. Google в частности опубликовал некоторые факторы, влияющие на работу его алгоритма, однако эта область подвержена манипуляциям.
В редакторах исходного кода
Автозаполнение исходного кода также известно как завершение кода. В редакторе исходного кода автозаполнение значительно упрощается благодаря регулярной структуре языка программирования. Обычно в текущем контексте или пространстве имен существует лишь ограниченное количество значимых слов, таких как имена переменных и функций. Примером завершения кода является технология IntelliSense от Microsoft, которая предполагает отображение всплывающего списка возможных вариантов завершения для текущего введенного префикса, позволяя пользователю выбрать подходящий. Это особенно полезно в объектно-ориентированном программировании, поскольку программист часто не знает точно, какими членами обладает конкретный класс. Таким образом, автозаполнение служит удобной формой документации и способом ввода данных. Еще одним преимуществом автозаполнения исходного кода является то, что оно побуждает программиста использовать более длинные и описательные имена переменных, что повышает читаемость кода. Ввод больших слов, содержащих camel case, например, numberOfWordsPerParagraph, может быть затруднительным, но автозаполнение позволяет программисту завершить ввод слова, используя лишь небольшое количество нажатий клавиш.
В инструментах запроса базы данных
Автозаполнение в инструментах запросов к базе данных позволяет пользователю автоматически завершать имена таблиц в SQL-запросе и имена столбцов таблиц, на которые ссылается этот запрос. По мере ввода текста в редактор, контекст положения курсора в SQL-запросе указывает, требуется ли пользователю автозаполнение имени таблицы или имени столбца. Автозаполнение таблицы предоставляет список таблиц, доступных на сервере базы данных, к которому подключен пользователь. Автозаполнение столбца предоставляет список столбцов только для тех таблиц, на которые есть ссылки в SQL-запросе. SQL Server Management Studio обеспечивает автозаполнение в инструментах запросов.
В интерпретаторах командной строки
В интерпретаторе командной строки, таком как sh или bash в Unix, cmd.exe или PowerShell в Windows, или в подобных интерфейсах командной строки, автозаполнение имен команд и файлов может быть реализовано путем отслеживания всех возможных имен объектов, к которым пользователь имеет доступ. Обычно автозаполнение выполняется нажатием клавиши после ввода первых нескольких букв слова. Например, если единственный файл в текущем каталоге, начинающийся с x, — это xLongFileName, пользователь может предпочесть ввести x и выполнить автозаполнение до полного имени. Если в той же области видимости есть другие имена файлов или команды, начинающиеся с x, пользователь вводит больше букв или многократно нажимает клавишу Tab, чтобы выбрать нужный текст.
Исследования
Хотя исследования показали, что программное обеспечение для предсказания слов действительно уменьшает количество нажатий клавиш и повышает продуктивность письма детей с ограниченными возможностями, считается, что причина, по которой предсказание слов не всегда увеличивает скорость ввода текста, заключается в возросшей когнитивной нагрузке и необходимости переводить взгляд с клавиатуры на монитор. Несмотря на то, что многие разработчики программного обеспечения полагают, что следование списка предсказаний слов за курсором уменьшит движения глаз, программное обеспечение с предсказанием слов выпускается различными производителями. Это программное обеспечение можно приобрести как дополнение к распространенным программам, таким как Microsoft Word (например, WordQ+SpeakQ, Typing Assistant, Co:Writer, Wivik, Ghotit Dyslexia), или как одна из множества функций на устройствах альтернативной и дополнительной коммуникации (AAC) – Pathfinder от PRC, Dynavox Systems, продукты ChatPC от Saltillo. Среди известных программ: Intellicomplete, доступная как в бесплатной, так и в платной версии, но работающая только с программами, поддерживающими ее. Letmetype и Typingaid – бесплатные программы, работающие в любом текстовом редакторе. Ранняя версия автозаполнения была описана в 1967 году Х. Кристофером Лонгетом Хиггинсом в его компьютерной машинке для набора текста (CAT): «такие слова, как 'BEGIN' или 'PROCEDURE', или идентификаторы, введенные программистом, будут автоматически завершены CAT после того, как программист введет один или два символа».
Software with word prediction is produced by multiple manufacturers. The software can be bought as an add on to common programs such as Microsoft Word (for example, WordQ+SpeakQ, Typing Assistant, Co:Writer, Wivik, Ghotit Dyslexia), or as one of many features on an AAC device (PRC's Pathfinder, Dynavox Systems, Saltillo's ChatPC products). Some well known programs: Intellicomplete, which is available in both a freeware and a payware version, but works only with programs which are made to work with it. Letmetype and Typingaid are both freeware programs which work in any text editor. An early version of autocompletion was described in 1967 by H. Christopher Longuet Higgins in his Computer Assisted Typewriter (CAT), "such words as 'BEGIN' or 'PROCEDURE' or identifiers introduced by the programmer, would be automatically completed by the CAT after the programmer had typed only one or two symbols."