Предиктивный ввод текста (через англ. predictive «предсказывающий», «предвещающий» из лат. praedictīvus) — система ускоренного ввода текста в цифровые устройства, при которой программное обеспечение устройства в процессе набора предлагает варианты окончания слов и фраз, основываясь на имеющихся в его словаре, а также может предлагать исправлять распространённые ошибки.

Применение править

Мобильные устройства править

Предиктивный ввод текста распространён на мобильных устройствах (прежде всего на телефонах), на которых ввод текста затруднён, например, при написании SMS-сообщений. В основном применяются две системы предиктивного ввода: автозамена и T9.

Редакторы для программистов править

Редактор проводит анализ текста и выводит меню, в котором предлагается окончание вводимого ключевого слова или идентификатора. Либо, например, при вводе тэга HTML предлагает на выбор все его параметры.

В большинстве редакторов меню предиктивного ввода вызывается либо при короткой паузе набора, либо по кнопке Ctrl-Пробел.

Редакторы документов править

При вводе текста система предлагает окончание вводимого слова. Например, это может помочь при вводе таблиц, в которых содержимое ячеек часто повторяется. В редакторах документов разработчики используют предиктивный ввод очень осторожно, так как ошибки предсказания здесь особенно часты.

Проблемы править

Общие править

В языках с развитой системой окончаний (как в русском) плохо работает система, предлагающая окончание слова по его началу — нет гарантии, что слово получится в том падеже, в котором надо.

Применительно к мобильным устройствам править

В языках с большим количеством коротких слов (английский) предиктивный набор предлагает слишком много альтернатив. Да и в других языках одна и та же комбинация клавиш может выдать несколько слов, и если не смотреть на экран, можно отправить сообщение с ошибкой. Наиболее занимательные ошибки телефона служат объектом коллекционирования, а иногда входят в подростковый сленг, например:

  • название водки Smirnoff T9 превращало в Poisoned — «отравлен»;
  • английские антонимы select и reject («выбрать» и «отвергнуть») находятся на одних и тех же кнопках телефона;
  • русские слова тело и ужин в большинстве телефонов находятся на одних и тех же кнопках, отчего возможна ошибка «приедешь домой — в холодильнике лежит ужин» → «приедешь домой — в холодильнике лежит тело»
  • так же совпадают «номер мобилки — номер могилки»;
  • но наиболее распространенной и неприятно двусмысленной ошибкой Т9 является подмена слова «тебя» на «себя». Особенно во фразе «Я люблю тебя»;
  • ещё на телефонах Nokia, Sony Ericsson фраза «поцелую в шейку, почешу за ушком» превращается в «поцелую в щёлку, почешу за рылом».
  • На некоторых телефонах Nokia T9 знает странное слово «мракобулка»

При вводе на языках с агглютинативными элементами, например, немецком, приходится вводить слово по частям. Система ввода текста должна быть готова к этому. Например, реализация T9 в телефонах Sony Ericsson предлагает такое решение: после набора первой части слова пользователь нажимает на кнопку «OK», и вводится вторая часть.

Также следует предусмотреть ввод слов, которых нет в словаре. Наиболее элегантно это сделано в iTAP: когда пользователь видит, что телефон ошибается, он один раз нажимает на кнопку «Стирание» и кнопками-стрелками фиксирует начало. После этого он вводит остаток по одной букве. В T9 приходится стирать слово полностью (или почти полностью) и набирать его по одной букве.

Для сенсорных телефонов разработана технология Swype, позволяющая набирать текст, не отрывая рук.

В программистских редакторах править

Система предиктивного ввода текста, применяющаяся в программистских редакторах, должна быть устойчива к ошибкам. Например:

rObject.x = aObject.x + someVector.x // программист пропустил точку с запятой
rObject.y = aObject.y + so_ // тут стоит курсор

В данном случае система предиктивного ввода должна, несмотря на упущенную точку с запятой, дать возможность программисту выбрать в меню идентификатор someVector.

Иногда ошибка в коде может стать предпосылкой для предиктивного ввода. Например.

Vector so_ // тут стоит курсор
. . .
rObject.x = aObject.x + someVector.x; // идентификатор someVector не определён

В таком случае система может предложить ввести идентификатор someVector.

Курьёзы править

  • В телефонах Motorola (в частности в прошивке R365—2.2F для Motorola C650 и её аналогов) примерно до 2005 года в русском словаре были нецензурные слова. В последующих моделях (например, Motorola KRZR K1) их убрали.
  • В телефонах компании Siemens (C65, M65, M75, S65, S75 и др.) в русском словаре также присутствовала нецензурная лексика.

Примечания править

См. также править

Ссылки править

  • Маркус Дю Сотой. Код креативности. Как искусственный интеллект учится писать, рисовать и думать. Азбука-Аттикус, 2020.
  • А. А. Волков, С. В. Антонов. Элементы автоматизации дистанционного оповещения о чрезвычайных ситуациях… Вестник МГСУ № 11, 2015 стр. 120—128