«Я исправляю автокоррекцию чаще, чем автокоррекция исправляет меня». — анонимно

Интеллектуальный ввод текста — полезная функция в современных интерфейсах ввода текста. Одним из первых приложений для интеллектуального ввода текста был iTap, разработанный Motorola. Я считаю, что это было разработано в начале 2000-х годов.

По мере того, как телефоны становились повсеместными, возрастала потребность в интеллектуальных приложениях для интеллектуального ввода текста. А в 2015 году SwiftKey выпустила первое приложение для интеллектуального ввода текста, разработанное с использованием нейронных сетей. В этом блоге SwiftKey объясняет, почему модель на основе нейронной сети работает лучше, чем предыдущая модель на основе n-грамм.

Увы, мы не знаем, какая модель используется в последней версии SwiftKey, но мы все же можем догадаться о некоторых аспектах этой модели. Многие такие приложения сегодня используют ту или иную форму рекуррентной нейронной сети (RNN). RNN с архитектурой определенного типа, называемой Long Short-Term Memory (LSTM), очень популярны. Для тех, кто заинтересован в более строгом обзоре RNN, я бы сослался на статью Chung et. др. (декабрь 2014 г.). В этом документе сравниваются LSTM и Gated Recurrent Units (GRU).

Модель языка на основе слов

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

Уставные базовые языковые модели

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

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

Блестящее приложение

Я попытался создать приложение для прогнозирования текста на основе LSTM, обученного для языковой модели на основе символов. Недавно команда RStudio создала интерфейс R для Keras. Я хотел опробовать интерфейс, а также создать приложение Shiny в качестве симулятора интеллектуального ввода текста.

Фактическая реализация LSTM взята из замечательной работы, проделанной Андреем Карпати. Его пост Необоснованная эффективность рекуррентных нейронных сетей — отличная отправная точка для любой информации о RNN в интеллектуальном тексте.

Я обучил LSTM на предвыборных речах Дональда Трампа. Приложение размещено здесь.

Исходный код можно найти на GitHub.