Нулевая связка в новом парсере

Продолжая тему нового парсера на замену старому.

Добавил в качестве эксперимента в этот парсер поддержку нулевой связки, точнее любого подразумеваемого токена. Зачем?

Collapse )

Гугл: квантовое преимущество, искусственный интеллект, первые признаки сингулярности в google pay

Кто там мемично шутил про "бигдата, аджайл, где карту получали, в то отделение и ступайте"? Ввожу обязательные параметры в Google Pay, подключаю виртуальную визу. На форме ввода нужно ввести почтовый индекс. Ввожу - "неправильно заполнено поле индекса". Переввожу, пробую другие соседние индексы, пробую сменить город и индекс на Вологду - толку 0. Гуглю проблему (тонкий британский юмор ситуации). Оказывается, этому багу в гугл пэе много лет, но чинить его не торопятся. Да, нейросети, квантовое преимущество, искуственный интеллект - все в комплекте.
Collapse )

Неудачная попытка использования XGBRanker и LGBMRanker для задачи определения перефразировки

Под катом - особенности определения синонимичности фраз в языке, использование BERT, метрики для оценки моделей и проблема с задачей ранжирования.
Collapse )

Пример претензии к pymorphy2 в качестве поставщика морфологии для парсера

Одна из основных проблем при использовании pymorphy2 в качестве морфологического анализатора для парсера видна на следующем примере. Вот результаты анализа слов в тестовом предложении "в огромном сарае лежало старое сено":
Collapse )

Bottomup парсер на чистом питоне

Раз в два-три года я пробую делать какой-то новый парсер для русского языка. Последний раз это была неудачная попытка прикрутить reinforcement learning для shift-reduce парсера, обучаемого на корпусе эталонных разборов.

В этот раз за полтора месяца сделан прототип восходящего вероятностного парсера на чистом питоне.

Collapse )

Расширение поддержки русского языка в Duckling

Duckling - библиотека от Facebook, позволяющая извлекать из текста структурированные данные. Например, с ее помощью из строки "смартфон стоит двенадцать тысяч рублей" можно выделить числительное "двенадцать тысяч". Попутно для извлеченной информации делается некоторая нормализация, то есть получим представление в числовом виде "12000".

Помимо других альтернативных инструментов, Duckling можно использовать в фреймворке чатботов RASA для NER.

Чтобы "пощупать" этот экстрактор, нужно скачать репозиторий, скомпилировать, запустить rest-сервис. После чего через браузер или curl можно прокачивать тексты и видеть json-результаты.

Попробуем:
Collapse )

а вот простейшая seq2seq модель для генерации реплик в читчат боте что выдает

После обучения на объединенном датасете диалогов из Толоки + мои датасеты для чатбота, модель, не учитывающая контекст, а только текст заданного вопроса, выдает такую "болтовню":
Collapse )

Классификация интентов в чатботе - сравнение моделей ELMO, BERT и char-level linear sklearn

Сравнение выполнялось по f1 weighted метрике на датасете с ~5100 сэмплов через 8-фолдовую кросс-валидацию. Чуть больше 70 интентов с большим дисбалансом.

Финальные результаты:

LinearSVC ~0.77
BERT        ~0.815
ELMo        ~0.817
Collapse )

Изменения в порядке генерации ответов в чатботе

В коде релиза 0.0.2.2 кроме всяких правок ошибок и более точных NLP моделек сделана одна существенная модификация в генераторе ответов.
Раньше чатбот на вопросы, относящиеся к нему "лично", генерировал ответ общим алгоритмом, то есть искал релевантный факт в базе знаний, брал отуда необходимый фрагмент и строил ответ. Выглядело это примерно так:
Collapse )

Релиз чатбота 0.0.1 (альфа) - вербальные формы, сценарии и прочее

В проекте русскоязычного чатбота сделан релиз с большими изменениями в коде бота. В основном работа велась над возможность задавать поведение бота через вручную задаваемые правила - сценарии и вербальные формы.

Collapse )