Определение и настройка проблемы
Речь идет о построении алгоритма исправления текста (рекомендателя). Специфика решения заключается в том, что оно должно управляться данными (как указано в задаче: «Verilen bir yazinin gramer ve yazim denetimini ML / Deep Learning yaklasimi kullanarak nasil yapabiliriz?»). Определение проблемы состоит из двух частей:
- Грамматика
- Письменное регулирование (орфография + опечатки, отличные от традиционных грамматических ошибок)
Оба типа ошибок (грамматические и письменные) имеют разные уровни сложности и связанные с ними сложности. В грамматическом аспекте синтаксические правила, управляющие заданным языком, - это то, что делает проблему в целом сложной и связано с традиционной проблемой машинного перевода.
Орфография и опечатки не так сложны. Любой конкретный язык в повседневном использовании - для среднего человека использует небольшой процент от общего доступного корпуса (т. Е. Английский язык содержит более 160 000 слов, в то время как существует около 3000 ежедневных слов, которые мы используем в среднем каждый день, составляя менее 2%). Опечатки / орфографические ошибки - это распространенные мутации статичных слов.
Совершенно очевидно, что природа грамматики последовательна. Но действительно ли это случай статических ответов (т.е. орфографических ошибок)? Ответ: может быть. Слово - это последовательность букв. Любая программа проверки орфографии, которая использует последовательную модель вместо статической модели сравнения строк, получит преимущество с точки зрения модели «интуитивного понимания» правил орфографии данного языка.
Данные
Я буду работать в предположении, что для этой проблемы не существует специальных источников данных. Поэтому я буду работать с наборами данных с открытым исходным кодом для этого доказательства концепции.
- Набор данных Enron: знаменитый набор данных электронной почты Enron, 500 000 электронных писем, отправленных сотрудниками корпорации Enron.
- CoNLL-2014: В статье собраны аннотированные тестовые данные для грамматических исправлений английского языка.
- Billion-Word: это набор данных для сравнительного анализа, который содержит очень большой корпус для английского языка.
- Wiki-Miss-SpellList: машиночитаемый список Википедии распространенных орфографических ошибок.
Данные естественного обучения
Идея пытается решить две проблемы с разными типами наборов данных. Попытка исправить грамматику будет выполнена с помощью набора данных CoNLL-2014. Данные обучения для этой ситуации очевидны. Входными данными для обучения является неправильная грамматика, целью обучения является правильная грамматика.
Для орфографических ошибок и опечаток набор данных Википедии также очень прост, орфографические ошибки вводятся, а соответствующие цели являются правильными.
Данные искусственного обучения
Создание данных для решения проблемы разреженности данных является ключевым моментом и также доказало свою полезность. Набор данных в миллиард слов очень важен для этой работы. Идея искаженного правильного слова оказывается хорошим источником данных.
Три основных метода искажения слов для этого проекта будут:
- Обмен символами («Стамбул» - ›« Истнабул »)
- Дублирование («Стамбул» - ›« Стамбул »)
- Случайный символ или забудьте символ («Стамбул» - ›« Стамбул »)
Для искажения грамматики я выбрал набор данных Enron, поскольку считаю, что это более формальный, полуформальный способ написания. Я вижу, что соответствующая литература относится к Книжному корпусу или Корнелльскому корпусу фильмов, но я не думаю, что эти два набора данных отражают повседневный естественный язык, который составляет подавляющее большинство пользователей программы проверки орфографии / грамматики.
Введение искусственного шума также происходит тремя способами;
Допустим, у нас есть предложение: «Не могли бы вы купить мне холодный чай Lipton?»
- Обмен торговой точки
Библиотека NLTK может токенизировать слова и их части речи (POS);
[('Can', 'MD'), ('you', 'PRP'), ('please', 'VB'), ('buy', 'VB'), ('me', 'PRP') , ('a', 'DT'), ('Lipton,' NNP '), (' Ice ',' NNP '), (' Tea ',' NNP '), ('? ','. ')]
Где некоторые части речи наиболее подвержены грамматическим ошибкам, например, определители («а», «DT»). Шум будет изменять случайный POS (скажем, DT с неправильным DT);
"Не могли бы вы купить мне холодный чай Lipton?" - ›« Не могли бы вы купить мне ледяной чай Lipton? »
- Случайные лемматизации
Измените POS, например глаголы, на разные версии самого себя, используя NLTK:
«Не могли бы вы купить мне холодный чай Lipton?» - ›« Не могли бы вы купить мне холодный чай Lipton? »
- Пропуск пробелов и использование случайных заглавных букв в первых буквах
Не требует пояснений
«Не могли бы вы купить мне холодный чай Lipton?» - ›« Не могли бы вы купить мне холодный чай Lipton? »
После сбора естественных и искусственных наборов данных мы загружаем их в модель.
Модель
Самым современным в машинном переводе является Attention LSTM Cells. Ячейка LSTM - это специальная ячейка рекуррентной нейронной сети. Рекуррентные нейронные сети - это искусственные нейронные сети, которые принимают на входе выходные данные предыдущего временного шага. Поэтому полезно для кратковременной памяти.
Слева вверху - хорошая визуализация для RNN. Правая сторона - это RNN, развернутая во времени. Я считаю, что эта модель будет очень полезна для решения этой конкретной проблемы. Я считаю, что вместо обычной ячейки RNN (A на рисунке выше) предпочтительнее будет ячейка LSTM.
Шлюз LSTM - это, по сути, ячейка, которая определяет, какие сигналы теряются и какие сигналы запоминаются из предыдущих временных шагов. Два выхода ячейки - это память ячейки (что запомнено, а что забыто), а другой - это встраивание предыдущего входа (выход слоя). Последний уровень сети - это, по сути, плотный слой, который работает с традиционной функцией активации SoftMax.
Функция потерь, которая будет использоваться, представляет собой категориальную кросс-энтропийную потерю с оптимизатором ADAM.
Как и в случае с любой другой проблемой глубокого обучения, важна функция потерь. И это может сбивать с толку, как генеративная модель может использовать категориальную функцию перекрестной потери энтропии. Ниже можно визуализировать базовый сценарий.
Ввод «SELAM», когда он набирается, идет один за другим как ввод. На основе набираемых букв в последовательности, RNN предсказывает предстоящую букву. Сначала ожидается невысокая уверенность. Однако об этом позже. Это сценарии "многие ко многим". Наша RNN будет «Многие к одному»; Ошибочное написание слова «SELAM» как «SERAM» можно легко уловить с помощью этой архитектуры, как показано ниже на рисунке 4.
Именно эта природа «голосования» является причиной того, почему функция активации последнего слоя становится SoftMax, а функция потерь кросс-энтропии становится очень полезной в качестве функции потерь для обновления весов градиента скрытого слоя (то есть ячейки RNN LSTM). В приведенной выше ситуации, если сеть работает плохо и предсказывает последовательность строк «SERAM» как «ZEYTIN», функция кросс-энтропийных потерь гарантирует, что веса RNN обновляются в соответствии с; наказывать веса, которые усиливают ZEYTIN, и поощрять веса, которые голосуют за «SELAM». Более формально, учитывая i-й пример из возможных классов C, градиенты для положительных и отрицательных примеров можно увидеть в уравнениях 1 и 2.
Для модального окна грамматики это очень похожая идея. Единственное отличие состоит в том, напомним, что при предыдущем написании RNN мы вводили последовательность, а на выходе было предсказание одного слова. На этот раз ввод - это последовательность, а вывод - тоже последовательность, проще говоря, для слов существует более одного процесса «голосования». Эта модель Seq2seq может включать механизм внимания для достижения лучших результатов.
Общая архитектура
Канберк Айдын
, 2019 г., инженер по машинному обучению, Telstra Enterprise, Tec
Telstra Big Data AI, Telstra InfraCo