Автозаполнение или автодополнение слов — это функция, при которой приложение предсказывает остаток слова, которое набирает пользователь. В смартфонах Android и iOS [1] это называется предиктивным вводом текста . В графических пользовательских интерфейсах пользователи обычно могут нажать клавишу Tab , чтобы принять предложение, или клавишу со стрелкой вниз , чтобы принять одно из нескольких.
Автозаполнение ускоряет взаимодействие человека с компьютером , когда оно правильно предсказывает слово, которое пользователь намеревается ввести после ввода всего нескольких символов в поле ввода текста. Лучше всего оно работает в доменах с ограниченным количеством возможных слов (например, в интерпретаторах командной строки ), когда некоторые слова встречаются гораздо чаще (например, при адресации электронной почты ) или при написании структурированного и предсказуемого текста (например, в редакторах исходного кода ).
Многие алгоритмы автозаполнения изучают новые слова после того, как пользователь напишет их несколько раз, и могут предлагать альтернативы на основе усвоенных привычек отдельного пользователя.
Первоначальной целью программного обеспечения для предсказания слов было помочь людям с ограниченными физическими возможностями увеличить скорость набора текста, [2] а также помочь им сократить количество нажатий клавиш, необходимых для завершения слова или предложения. [3] Необходимость увеличения скорости отмечена тем фактом, что люди, которые используют устройства для генерации речи, обычно произносят речь со скоростью, которая составляет менее 10% от скорости людей, использующих устную речь. [4] Но эта функция также очень полезна для всех, кто пишет текст, особенно для людей, таких как врачи, которые часто используют длинную, труднопроизносимую терминологию, которая может быть технической или медицинской по своей природе.
Автозаполнение или завершение слов работает так, что когда писатель пишет первую букву или буквы слова, программа предсказывает одно или несколько возможных слов в качестве вариантов. Если предполагаемое слово включено в список, писатель может выбрать его, например, с помощью цифровых клавиш. Если слово, которое нужно пользователю, не предсказано, писатель должен ввести следующую букву слова. В это время выбор слов изменяется таким образом, чтобы предоставленные слова начинались с тех же букв, что и выбранные. Когда появляется слово, которое нужно пользователю, оно выбирается, и слово вставляется в текст. [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-х годов и доступно по сей день. Первоначально оно было разработано для медицинских транскрипционистов, работающих в WordPerfect для MS/DOS, но теперь оно работает для любого приложения в любой Windows или веб-программе.
Сокращение , также называемое Autoreplace, — это связанная функция, которая включает в себя автоматическую замену определенной строки на другую, обычно длинную и трудную для ввода, например, «myname» на «Lee John Nikolai François Al Rahman». Это также может незаметно исправить простые ошибки ввода , например, превратить « teh » в «the». Несколько программ автозаполнения, автономных или интегрированных в текстовые редакторы, основанных на списках слов, также включают функцию сокращения для часто используемых фраз. [ необходима цитата ]
Контекстное завершение — это функция текстового редактора, похожая на завершение слов, которая завершает слова (или целые фразы) на основе текущего контекста и контекста других похожих слов в том же документе или в некотором обучающем наборе данных. Главное преимущество контекстного завершения — возможность более точно предсказывать ожидаемые слова и даже без начальных букв. Главный недостаток — необходимость обучающего набора данных, который обычно больше для контекстного завершения, чем для более простого завершения слов. Наиболее распространенное использование контекстного завершения наблюдается в редакторах расширенных языков программирования и IDE , где обучающий набор данных изначально доступен, а контекстное завершение имеет больше смысла для пользователя, чем широкое завершение слов. [ необходима цитата ]
Дополнение строки — это тип контекстного завершения, впервые представленный Юраем Симловичем в TED Notepad в июле 2006 года. Контекстное завершение строки — это текущая строка, в то время как текущий документ выступает в качестве обучающего набора данных. Когда пользователь начинает строку, которая начинается с часто используемой фразы, редактор автоматически завершает ее до позиции, где похожие строки различаются, или предлагает список общих продолжений. [ необходима цитата ]
Дополнение действий в приложениях — это автономные инструменты, которые добавляют функциональность автозаполнения к существующим приложениям или всем существующим приложениям ОС на основе текущего контекста. Главное преимущество дополнения действий — возможность предсказывать ожидаемые действия. Главный недостаток — необходимость набора данных. Наиболее распространенное использование дополнения действий наблюдается в редакторах расширенных языков программирования и IDE . Но существуют также инструменты дополнения действий, которые работают глобально, параллельно, во всех приложениях всего ПК, не (очень) затрудняя завершение действий соответствующих приложений. [ необходима цитата ]
В веб-браузерах автозаполнение выполняется в адресной строке (используя элементы из истории браузера) и в текстовых полях на часто используемых страницах, таких как поле поиска поисковой системы . Автозаполнение для веб-адресов особенно удобно, поскольку полные адреса часто длинные и их трудно набрать правильно. HTML5 имеет атрибут формы автозаполнения. [ необходима цитата ]
В программах электронной почты автозаполнение обычно используется для заполнения адресов электронной почты предполагаемых получателей. Обычно существует небольшое количество часто используемых адресов электронной почты, поэтому относительно легко использовать автозаполнение для выбора среди них. Как и веб-адреса, адреса электронной почты часто длинные, поэтому вводить их полностью неудобно. [ необходима цитата ]
Например, Microsoft Outlook Express найдет адреса по имени, которое используется в адресной книге. Gmail от Google найдет адреса по любой строке, которая встречается в адресе или сохраненном имени. [ необходима цитата ]
В поисковых системах функции автозаполнения пользовательского интерфейса предоставляют пользователям предлагаемые запросы или результаты по мере ввода запроса в поле поиска. Это также обычно называется автопредложением или инкрементальным поиском . Этот тип поиска часто опирается на алгоритмы сопоставления, которые прощают ошибки ввода, такие как фонетические алгоритмы Soundex или независимый от языка алгоритм Левенштейна . Проблема остается в поиске больших индексов или популярных списков запросов менее чем за несколько миллисекунд, чтобы пользователь видел всплывающие результаты во время ввода.
Автозаполнение может иметь неблагоприятные последствия для отдельных лиц и предприятий, когда при поиске предлагаются отрицательные поисковые термины. Автозаполнение теперь стало частью управления репутацией , поскольку компании, связанные с отрицательными поисковыми терминами, такими как мошенничество, жалобы и мошенничество, стремятся изменить результаты. Google, в частности, перечислил некоторые аспекты, которые влияют на работу их алгоритма, но это область, которая открыта для манипуляций. [19]
Автодополнение исходного кода также известно как автодополнение кода . В редакторе исходного кода автодополнение значительно упрощается за счет регулярной структуры языка программирования . Обычно существует только ограниченное количество слов, имеющих смысл в текущем контексте или пространстве имен, таких как имена переменных и функций. Примером автодополнения кода является разработка Microsoft IntelliSense . Она включает в себя показ всплывающего списка возможных автодополнений для текущего входного префикса, чтобы позволить пользователю выбрать правильный. Это особенно полезно в объектно-ориентированном программировании , поскольку часто программист не будет точно знать, какие члены есть у конкретного класса . Поэтому автодополнение затем служит формой удобной документации , а также методом ввода.
Еще одной полезной функцией автозаполнения исходного кода является то, что оно побуждает программиста использовать более длинные, более описательные имена переменных, тем самым делая исходный код более читабельным. Ввод больших слов, которые могут содержать CamelCase , numberOfWordsPerParagraph
может быть сложным, но автозаполнение позволяет программисту завершить ввод слова, используя часть нажатий клавиш.
Автодополнение в инструментах запросов к базе данных позволяет пользователю автоматически дополнять имена таблиц в операторе SQL и имена столбцов таблиц, на которые ссылается оператор SQL. По мере ввода текста в редактор контекст курсора в операторе SQL указывает, требуется ли пользователю автодополнение таблицы или автодополнение столбца таблицы. Автодополнение таблицы предоставляет список таблиц, доступных на сервере базы данных, к которому подключен пользователь. Автодополнение столбца предоставляет список столбцов только для таблиц, на которые ссылается оператор SQL. SQL Server Management Studio предоставляет автодополнение в инструментах запросов. [ необходима цитата ]
Во многих программах обработки текстов автодополнение сокращает время, затрачиваемое на ввод повторяющихся слов и фраз. Исходный материал для автодополнения собирается либо из остальной части текущего документа, либо из списка общих слов, определенного пользователем. В настоящее время Apache OpenOffice , Calligra Suite , KOffice , LibreOffice и Microsoft Office включают поддержку этого вида автодополнения, как и продвинутые текстовые редакторы, такие как Emacs и Vim .
В интерпретаторе командной строки , таком как sh или bash в Unix , или cmd.exe или PowerShell в Windows , или в аналогичных интерфейсах командной строки , автозаполнение имен команд и файлов может быть выполнено путем отслеживания всех возможных имен вещей, к которым пользователь может получить доступ. Здесь автозаполнение обычно выполняется нажатием клавиши после ввода первых нескольких букв слова. Например, если единственный файл в текущем каталоге, который начинается с x, — это xLongFileName, пользователь может предпочесть ввести x и автозаполнение до полного имени. Если бы в той же области было другое имя файла или команда, начинающиеся с x, пользователь бы ввел больше букв или нажал бы клавишу Tab несколько раз, чтобы выбрать соответствующий текст.Tab ↹
Хотя исследования показали, что программное обеспечение для прогнозирования слов действительно уменьшает количество необходимых нажатий клавиш и повышает производительность письма у детей с ограниченными возможностями, [2] существуют неоднозначные результаты относительно того, действительно ли прогнозирование слов увеличивает скорость вывода. [20] [21] Считается, что причина, по которой прогнозирование слов не всегда увеличивает скорость ввода текста, заключается в повышенной когнитивной нагрузке и необходимости переводить взгляд с клавиатуры на монитор. [2]
Чтобы уменьшить эту когнитивную нагрузку, можно использовать такие параметры, как сокращение списка до пяти вероятных слов и вертикальное расположение этих слов. [2] Вертикальное расположение призвано свести движения головы и глаз к минимуму, а также дает дополнительные визуальные подсказки, поскольку длина слова становится очевидной. [22] Хотя многие разработчики программного обеспечения считают, что если список предсказаний слов следует за курсором , это уменьшит движения глаз, [2] в исследовании детей с spina bifida , проведенном Tam, Reid, O'Keefe & Nauman (2002), было показано, что набор текста был более точным, и что дети также предпочитали, когда список появлялся в нижнем крае экрана, на средней линии. Несколько исследований показали, что производительность и удовлетворение от предсказания слов увеличиваются, когда список слов находится ближе к клавиатуре, из-за уменьшения количества необходимых движений глаз. [23]
Программное обеспечение с функцией прогнозирования слов выпускается несколькими производителями. Программное обеспечение можно купить как дополнение к обычным программам, таким как Microsoft Word (например, WordQ+SpeakQ , Typing Assistant, [24] Co:Writer, [ нужна цитата ] Wivik, [ нужна цитата ] Ghotit Dyslexia), [ нужна цитата ] или как одну из многих функций на устройстве AAC (Pathfinder от PRC, [ нужна цитата ] Dynavox Systems, [ нужна цитата ] Saltillo's ChatPC products [ нужна цитата ] ). Некоторые известные программы: Intellicomplete, [ нужна цитата ] которая доступна как в бесплатной, так и в платной версии, но работает только с программами, которые созданы для работы с ней. Letmetype [ нужна цитата ] и Typingaid [ нужна цитата ] — это бесплатные программы, которые работают в любом текстовом редакторе.
Ранняя версия автодополнения была описана в 1967 году Х. Кристофером Лонге-Хиггинсом в его книге «Компьютерная пишущая машинка» (CAT) [25] : «Такие слова, как «BEGIN» или «PROCEDURE», или идентификаторы, введенные программистом, автоматически завершались CAT после того, как программист ввел только один или два символа».