?

Log in

No account? Create an account

Компьютерная лингвистика

Новостная лента www.solarix.ru

Entries by tag: lstm

Три варианта рекуррентно-сверточных сетей в задаче определения длины ответа
kelijah
(предыдущий пост с описанием моделей чат-бота тут: https://kelijah.livejournal.com/232313.html)

Код для тренировки вспомогательной модели, которая определяет число слов ответа для заданной предпосылки и вопроса выложен тут https://github.com/Koziev/chatbot/blob/master/PyModels/nn_answer_length.py.
Read more...Collapse )

Тренировка и использование модели посимвольного встраивания слов для чатбота
kelijah
(Начало тут https://kelijah.livejournal.com/231141.html)

Часть моделей чат-бота при работе используют разные способы векторизации слов. Один из использованных алгоритмов векторизации заключается в упаковке посимвольного представления слова с помощью сжимающего рекуррентного автоэнкодера:
Подробности реализации и скриншоты...Collapse )

Сеточные char-level модели морфологического анализа и лемматизации для MorphoRuEval 2017
kelijah

Далее будут кратко описаны три модели. Две модели для частичной разметки соответствуют последовательным экспериментам по выбору общей архитектуры. Условно они называются Model1 и Ensemble. Модель лемматизации общая, ансамбль для нее я не делал, хотя это безусловно возможно и даже желательно.


Исходные тексты можно найти на гитхабе: https://github.com/Koziev/MorphoRuEval2017

Read more...Collapse )
PS: Ансамбль будет описан отдельно.

Готовлю ансамбль к MorphoRuEval 2017
kelijah
Соревнование: http://www.dialog-21.ru/evaluation/2017/morphorueval/

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

На данный момент в проработке и тестах:

1. Сеточная char-level LSTM модель для лемматизации с трансдьюсерами.
2. Сеточная char-level LSTM модель для частеречной разметки. Замечательная и красивая штука, но ансамбль круче.
3. Ансамбль из char-level LSTM + DecisionTree + MaxEnt + NLTK ClassifierBasedPOSTagger для частеречной разметки.

Если успею, то в ансамбль войдет сеточная word-level LSTM модель.

Неудачные эксперименты - использование CRF, RandomForest и GradientBoostingClassifier (последние два из sklearn).

Все модели, в том числе неудачные, будут выложены на github и подробно описаны в запланированных постах. Использую только python, keras, sklearn и NLTK, никаких сторонних непереносимых библиотек.

Синтаксический анализ на сверточных и рекуррентных сетках. Часть 1: syntax_chars
kelijah
Посмотрим, как с помощью нейросетевых моделей можно строить синтаксическое дерево зависимостей для предложения.
Читать далее (LSTM, Keras, char-based parsing)...Collapse )

Встраивание предложений в векторное пространство
kelijah
Для упаковки цепочки слов в вектор фиксированной длины годятся те же самые методы, которые я перечислял в главе про char-модели (http://kelijah.livejournal.com/194691.html). Заменив символы и их 1-hot коды на слова и их word2vector представления, мы можем использовать всё тот же автоэнкодер. Учитывая вариативность длин предложений, разумно сделать RNN модель на LSTM, хотя более простая и на порядки более быстрая feedforward модель тоже реализуема.
Текстовое описание модели, использование и питоновский код...Collapse )

Лемматизация на сетках
kelijah

Что делает сеточный лемматизатор?

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

Read more...Collapse )


Работоспособная chars2vector модель для получения word2vector встраивания для любой цепочки символов
kelijah
Продолжение темы http://kelijah.livejournal.com/185930.html

Проверена модифицированная модель chars2vector.
На входе - слова как цепочки символов.
Цепочка кодируется набором LSTM ячеек, на последнем символе получаем некий вектор.
Следующий слой учится отображать этот вектор на вектор из word2vector модели.
На keras модель описана так:
Read more...Collapse )

Таким образом, для любой последовательности символов модель учится строить максимально близкий вектор word2vector. Если теперь брать слова, получать для них вектор через эту модель, и искать 10 самых близких по косинусу слов в word2vector, то получается такая интересная картина:
Read more...Collapse )

То есть, модель очень неплохо выявляет те грамматические свойства слов, которые прямо вытекают из морфем (точнее, окончаний и суффиксов, с префиксами сложнее). Корень ускользает от ее внимания. таким образом, задача получения векторов для несловарных элементов решена частично. Надо еще научиться учитывать корни, в том числе в составных словах типа "краноремонтный" и "котопес".

Binary Sparse Distributed Vectors для слов и sequence 2 sequence модель с измененным оптимизатором
kelijah
Векторы слов, как и раньше, имеют длину 2048, со средним числом единиц ~54
Вектор фразы, создаваемый кодирующей группой LSTM, имеет длину 1024.
Модель необычно хорошо (и даже подозрительно хорошо) научилась делать перестановки слов в предложениях.
Выдача второй, синтезирующей части, очищена от шума, чтобы лучше воспринималась на глаз (после символов ==> выдается результат синтеза предложения из его вектора):
Read more...Collapse )

Модель phrase2vector с использованием binary sparse distributed vectors для представления слов
kelijah
Модель: sequence2sequence
Представление слов: binary sparse distributed vectors размерностью 2048 и средним числом единичных значение 54
Скрытый слой и разрядность phrase vector: 128 элементов
Обучающий набор: 90,000 перефразировок длиной 1...8 слов

Иногда проскакивают неплохие результаты кодирования-декодирования:
Read more...Collapse )

Пока главная проблема качества - декодер при восстановлении предложения из вектора фразы обычно подбирает максимум 2-3 слова,затем фактически выдает пустоту (векторы с очень маленькой длиной):
Read more...Collapse )