11 июня 2016

На правах оффтопа. Эволюция экранных клавиатур

О прошлом и будущем экранных клавиатур, проекте SwiftKey Neural Alpha, новой системе предиктивного ввода текста и нейронных сетях…

SwiftKey_Neural_Alpha-18

Развитие экранных клавиатур

К смартфонам с сенсорными экранами я первое время относился с изрядной долей скепсиса. В первую очередь – из-за экранных клавиатур, которые (как мне тогда казалось) серьезно уступали в удобстве не только полноценным qwerty-слайдерам и моноблокам, но даже обычному блоку цифровых клавиш с Т9. Так что впервые я рискнул купить подобный аппарат только к моменту появления смартфонов на Android с емкостными экранами.

Первое впечатление от клавиатуры HTC Desire я помню до сих пор – это был лютый восторг. На ней действительно можно было комфортно набирать текст, и тогда это казалось практически чудом. Примерно в том же духе об экранных клавиатурах Android \ iOS в то время отзывалось большинство журналистов, а удобству ввода текста на смартфонах в обзорах часто посвящали отдельный раздел.

Впрочем, эйфория прошла достаточно быстро. Дело в том, что смартфоны на Symbian я довольно редко использовал для работы или какой-то серьезной переписки. Когда деваться было совсем некуда, мог ответить на письмо или отредактировать документ, но это было скорее исключением из правил. В основном же вся переписка сводилась к коротким SMS или общению с друзьями в ICQ.

В эпоху Android все стало иначе. Большие сенсорные экраны, поддержка Wi-Fi, хороший выбор программного обеспечения и прочие приятные моменты привели к тому, что смартфон из функциональной звонилки превратился в настоящий мини-компьютер. Соответственно, и печатать пришлось куда больше – рабочая и личная почта, серфинг в интернете, социальные сети и форумы, заметки, документы и много чего еще. И вот тут-то и оказалось, что стандартная экранная клавиатура далеко не идеальна и уже хочется чего-то большего. Слишком медленная скорость печати, слишком много опечаток во время набора текста при тряске в транспорте или на ходу, слишком маленький набор слов в предустановленном словаре и так далее.

SwiftKey_Neural_Alpha-15

Большую роль в развитии экранных клавиатур сыграл сам Android, который допускал их замену на сторонние решения из Google Play (в те времена — Android Market). Не знаю, насколько активно этим вопросом занялись бы производители смартфонов (глядя на Apple, подозреваю что не очень), но сторонние разработчики софта взялись за экранные клавиатуры всерьез.

В первую очередь появились новые алгоритмы автоматической коррекции и предиктивного ввода текста, функции автоматического составления пользовательского словаря по имеющейся переписке, его синхронизация в облаке и другие полезные «фишки». Опечаток и проблем с автокоррекцией стало меньше, набирать сложные тексты стало комфортнее, но вот на скорости печати это отразилось несильно. Даже самая далекая от техники блондинка с кнопочной звонилкой отвечала на SMS со скоростью, которая никакому владельцу самой навороченной экранной клавиатуры и не снилась. Причем, делать это она могла даже на бегу и вообще не глядя на экран, просто за счет блока физических клавиш и наличия Т9.

Собственно, именно сам создатель режима Т9 и совершил следующую революцию в наборе текста, представив миру безотрывный способ ввода, больше известный как Swype. С помощью одноименной клавиатуры в 2010 году был установлен рекорд Гиннесса по самому быстрому набору текста на телефоне с сенсорным экраном. Тогда фраза «The razor-toothed piranhas of the genera Serrasalmus and Pygocentrus are the most ferocious freshwater fish in the world. In reality they seldom attack a human» была напечатана всего за 35,54 секунды. В наше время аналогичный метод ввода поддерживает большинство остальных клавиатур, хотя чисто субъективно в этом вопросе Swype все равно остается лидером.

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

Шило на мыло

На данный момент я пользуюсь клавиатурой SwiftKey, но пару раз в год открываю Google Play и смотрю какие еще появились интересные варианты. Вдруг за это время появилась какая-то новая клавиатура, которая еще на шаг-другой ближе к недостижимому идеалу? Судя по всему, в этом я не одинок, во всяком случае недавно о похожих метаниях рассказал Артем Лутфуллин.

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

Беда пришла откуда не ждали – так получилось, что несколько дней мне пришлось много переписываться на английском. Основных проблем здесь было две. Во-первых, мой уровень английского вообще оставляет желать лучшего. Хотя читаю я на нем довольно свободно, разговаривать и печатать на этом языке мне намного сложнее. А во-вторых, для клавиатуры отсутствует тот самый пользовательский словарь, который так облегчал набор текста со смартфона на русском языке. Учитывая, что я еще и печатаю с кучей ошибок и не всегда помню, как правильно пишутся какие-то английские слова, получается совсем грустно.

SwiftKey Neural Alpha

О проекте SwiftKey Neural Alpha я слышал давно, но вот самому протестировать эту клавиатуру руки не доходили. И, скорее всего, еще долго бы не дошли — поддержки русского языка там до сих пор нет, а много печатать на английском мне раньше просто не было нужды. А тут заодно решил разобраться, что это такое и с чем это едят.

Еще в 2010 году, когда вышла первая версия классической клавиатуры SwiftKey с поддержкой режима предугадывания слов (после ввода пробела клавиатура предлагала на выбор три варианта следующего слова) разработчики стали думать, как можно его усовершенствовать. Пять лет спустя на свет вышла альфа версия клавиатуры SwiftKey Neural, которая работала по совершенно новому принципу.

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

SwiftKey_Neural_Alpha-17

SwiftKey Neural не просто подбирает подсказку на основе ранее введенного слова, она пытается «осмыслить» весь ранее введенный текст и уже на этом основании сделать выводы. Если верить разработчикам, для SwiftKey Neural каждое введенное слово – это не просто произвольная последовательность букв. Каждое слово для клавиатуры имеет какое-то значение и всегда ассоциируется с рядом других слов. Если вы напишите фразу «давайте встретимся в гостинице», которую клавиатура видит в первый раз, она не просто ее запомнит, но и самостоятельно сделает вывод о том, что в каких-то других ситуациях слово «гостиница» может быть заменено на «кафе» или «аэропорт».

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

SwiftKey_Neural_Alpha-16

Что все это означает на практике? Мне лично набирать текст на SwiftKey Neural Alpha оказалось в разы комфортнее, чем на классической SwiftKey. Neural Alpha действительно подсказывает слова, которые уместны в этом предложении, в то время как SwiftKey пытается вспомнить какие слова вообще начинаются с этой последовательности букв. В моем конкретном случае это не только сильно облегчило набор текста, но и заметно увеличило скорость печати, что при общении в чате крайне важно. Пару раз вообще доходило до смешного, когда клавиатура сама подсказывала мне слово, которое я никак не мог вспомнить. И пусть на данный момент на революцию это не тянет (да и речь ведь только о ранней альфа-версии), Neural Alpha – штука довольно любопытная. И как минимум еще один шаг вперед.

SwiftKey_Neural_Alpha-14 SwiftKey_Neural_Alpha-13

SwiftKey_Neural_Alpha-10 SwiftKey_Neural_Alpha-09

SwiftKey_Neural_Alpha-12 SwiftKey_Neural_Alpha-11

На скриншотах ниже приведу несколько простых примеров. На первом скриншоте классическая клавиатура SwiftKey, на втором — SwiftKey Neural Alpha.

SwiftKey_Neural_Alpha-08 SwiftKey_Neural_Alpha-07

SwiftKey_Neural_Alpha-05 SwiftKey_Neural_Alpha-06

SwiftKey_Neural_Alpha-03 SwiftKey_Neural_Alpha-04

SwiftKey_Neural_Alpha-01 SwiftKey_Neural_Alpha-02

Разумеется, это только первое впечатление. И вполне допускаю, что, если бы я печатал на английском чаще (то есть если бы кроме названий компаний и англоязычных терминов SwiftKey внесла в мой личный словарь что-то еще) и допускал меньше грамматических ошибок в словах, разница могла бы быть заметно меньше. Но даже в этом случае классическая клавиатура без зазрения совести предлагала бы мне начать письмо со слов «Good morning Evernote!» вместо «Good morning everyone!» или незаметно исправляла опечатку таким образом, что все предложение полностью теряло смысл.

Одно я знаю точно – как только у SwiftKey Neural Alpha появится поддержка русского языка, я тут же поставлю ее себе на постоянной основе. Даже с учетом статуса ранней альфы. Вот только когда это произойдет – загадка, тем более, что с точки зрения предугадывания слов русский язык явно сложнее. Падежи, суффиксы, глаголы мужского и женского рода и прочие «мелочи» могут стать для SwiftKey Neural Alpha сущим кошмаром. Но надеюсь, что разработчики и с этим как-нибудь разберутся.


Читайте также