?

Log in

No account? Create an account

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

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

А вот как выглядит "примерно правильное решение" в исполнении естественного интеллекта
kelijah
Продолжение темы "Чатбот в первом классе: склонность понемногу ошибаться как отличительная черта" возникло совершенно случайно, что делает его еще более ценным. Естественному интеллекту почти 7 лет, решал и потом снимал он сам, я просто сегодня случайно увидел в его фотках вот это:
Read more...Collapse )

Текущие улучшения в движке чатбота
kelijah
Сейчас полный движок чатбота, консольная версия которого запускается скриптом console_chatbot.py, начал поддерживать такие диалоги:
Read more...Collapse )

Чатбот в первом классе: склонность понемногу ошибаться как отличительная черта
kelijah
Проверяю результаты обучения моделей чатбота с добавленными арифметическими примерами. Опять просматривается замеченная ранее склонность давать ответ "примерно похожий на то, что нужно". Когда ответ подразумевает число, бот действительно выдает какое-то число, обычно близкое к верному:
Read more...Collapse )

Улучшения в движке вывода ответов чатбота: арифметика и логика
kelijah
Для проекта вопросно-ответной системы проверяю нейросетку, которая отвечает за выбор ответов "да" и "нет".
Строки с приглашением "H:" - мой ввод с консоли, ответы бота помечены "B:".
Важный момент - бот в явном виде не анализирует синтаксис и лексику, никаких прописанных кодом особых обработок арифметических вещей в нем нет, это исключительно артефакты нейросетки, обученной на наборе примеров.
Read more...Collapse )

Большое обновление русского лексикона, морфологии и синтаксических правил в грамматическом движке
kelijah
Закомитил в https://github.com/Koziev/GrammarEngine накопившиеся изменения:

1) Добавлено много новых словарных статей
2) Убраны некоторые составные слова типа "мотор-генератор"
3) Исправлены различные ошибки, обнаруженные при тестировании - неверные формы слов etc.
4) Для некоторых слов уточнены морфологические теги (модальность, падежная валентность etc.)
5) В синтаксический анализатор добавлена пара правил разбора.

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

Чем ближе структура диалога к естественной, тем сложнее с ним работать
kelijah
Очень непросто оказалось ввести в чатбот некоторую проактивность, например (B - реплики бота, H - реплики человека):

B:> Добрый день
H:> Привет, как тебя зовут?
B:> кеша
B:> А как тебя зовут?
H:> Меня зовут Илья.
B:> Рад знакомству.

Read more...Collapse )

Сравнение оптимизаторов "Follow The Moving Leader" и "Nesterov moment + Adam"
kelijah
Для задачи посимвольной генерации теста ответа в чатботе сравниваю два алгоритма оптимизации:

1) штатный keras.optimizers.nadam, описанный тут http://cs229.stanford.edu/proj2015/054_report.pdf
2) FTML из https://github.com/keras-team/keras-contrib/blob/master/keras_contrib/optimizers/ftml.py, описанный тут.

Сравнивается значение per instance accuracy, достигаемое при обучении нейросетки, то есть успехом считается генерация всей цепочки символов ответа без единой ошибки.
Read more...Collapse )

Когда ты джун-разработчик, а сеньор на проекте вдвое младше тебя /// шутка
kelijah
И даже ложку тебе еще не доверяют:
Read more...Collapse )

Как выглядит мина-ловушка в .NET Framework уровня "enterprise"?
kelijah
Мина образуется при сочетании двух вещей.

1. БД MS SQL, в которой сделана хранимая процедура на T-SQL, в которой сделан цикл, внутри которого заботливо оставлен PRINT. Ну чтобы в SSMS ручками запускать и удобненько диагностику читать. Надо, чтобы в тестах этот цикл выполнялся не очень много и не вызвал подозрений.

2. Прога, использующая SqlConnection + SqlCommand и вызывающая эту самую хранимку.

В прекрасный июльский день деплоймент-инженер на удаленной площадке, разворачивая и тестируя софт в очередном боевом окружении, сообщает вам радостную весть - веб-сервис валится по OutOfMemory. Вы смотрите в лог, а там дружище log4net говорит, что падает при выполнении SqlCommand, которая делает просто вызов хранимки. Ну не может такого же быть, думаете вы. Хранимка выполняется на сервере? На сервере. Память выжирается на клиенте? На клиенте. Ваш коллега совершенно четко вам сообщает, что MSSQLSERVER кушает свои положенные 8 Гб и ни капли больше, в SSMS эта хранимка вызывается и отрабатывает без проблем. А жрет клиентский 32-битный процесс.

А через денек вы натыкаетесь на описание, из которого следует, что в общем-то это - фича: "SqlCommand ExecuteNonQuery throws OutOfMemoryException". Клиент СУБД под .NET молча вытягивает все то, чем PRINT гадит в БД. И чтобы не делать так, надо немного настроить коннекшн. Хотя при этом ломается ограничение на таймаут...

Machine learning местами азартен /// офтопик
kelijah
Например, когда досыпал фич в обучающий набор, и видишь, как тренер на машине с 62.7 Гб оперативки засасывает датасет, доходит до 62.3 Гб и начинает колебаться по 100 Мб туда-сюда... Только бы не шальной запрос к сервису, который там же висит.. Просто невозможно оторваться от htop'а:
Read more...Collapse )
Но вот видишь, как CRFSuite выплевывает в консоль информацию по первой итерации - фффух, пролез, родимый, справился, ай молодца!