Датасет с 70,000 вопросами к боту/собеседнику

В репозитории NLP Datasets выложен файл questions_2s.txt с вопросами, содержащими финитный глагол в форме 2 лица единственного числа. Эти вопросы собраны из большого корпуса с текстами, наскрапленными с форумов, субтитрами и так далее.

Для удобства сэмплы отсортированы по финитному глаголу:
Collapse )

Об ошибках морфологической разметки в OpenCorpora

В догонку к предыдущему посту про качество RnnMorph.

В ходе тщательного анализа результатов моего part-of-speech tagger'а по данным из OpenCorpora наткнулся на такие штуки:

False positive NOUN misprediction for sample:

Центральная катма дискордианства гласит :
itoken=1
word=катма
expected part-of-speech =UNKN
predicted part-of-speech=NOUN


Строка "expected part-of-speech =UNKN" означает, что в разметке OpenCorpora слово "катма" помечено классом UNKN. Подозреваю, что это артефакт полуавтоматической разметки, слово "катма" просто отсутствует в словарной базе OpenCorpora.

Эта ошибка повторяется в корпусе систематически и достаточно сильно смещает статистику.

Также можно заметить, что у меня модель правильно пометила это слово классом NOUN.

Вывод - при подсчете статистики по разметке OpenCorpora категорически рекомендуется выкидывать из рассмотрения метки UNKN. Оценка тут сделана с учетом этого нюанса.

Оценка качества RnnMorph по ручной морфологической разметке из OpenCorpora

Оценка точности разметки существительных для морфологического анализатора RnnMorph.
В качестве эталона разметки взят "Подкорпус со снятой омонимией" из OpenCorpora.

NOUN recall=0.9931500509117838
NOUN precision=0.9943005421435522
NOUN+tags precision=0.9590843797785089


NOUN precision - точность без учета тегов, NOUN+tags - точность с учетом тэгов Case, Number.

NLP pipeline в чатботе - текущее состояние и задачи

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

Кроме того, несколько алгоритмов "растворено" в кодовой базе чатбота. Например, машобучаемый NER, модели синонимичности и релевантности и т.д.

Далее - текущее состояние для пакетов из первой группы.
Collapse )

NP чанкер и прототип шаблонизатора ответов для чатбота

В наборе NLP модулей для чатбота добавился очередной - NP chunker. Его прототип я уже кратко описывал тут. Для удобства использования в разных проектах чанкер именных групп выделен в отдельный модуль ruchunker.

В чатботе он позволяет делать следующее. Допустим, пользователь вводит вопрос:
Collapse )

Датасет для тренировки NP chunker'а

В репозиторий "NLP Datasets" выложен датасет для тренировки NP чанкера.

NP chunker - это вариант shallow parser'а, извлекающего из предлождений группы существительного (noun phrases). Вот результаты разметки нескольких предложений для иллюстрации идеи:
Collapse )

Небольшое исследование качества корпуса PARUS на гитхабе

По поводу вот этого корпуса https://parus-proj.github.io/PaRuS/

Архив с корпусом в формате Conll после распаковки имеет размер около 130 Гб. То есть данных много. Закономерный вопрос - насколько качественны эти данные, учитывая, что ручной модерации они не подвергались в силу объема.

Я сделал небольшой лексический анализ. Искал словоформы, которые отсутствуют в лексиконе Грамматического Словаря. Видно, что данные в какой-то степени грязные. Например, есть "существительные" (лемма + слово):
Collapse )

Релиз чатбота: заготовки для будущих skill'ов

В новом релизе чатбота сделана группа важных взаимодополняющих изменений.

1) Расширен и частично переработан набор intent'ов. По результатам предварительного анализа типичных вопросов в датасете "Mail.ru Ответы", добавлены несколько новых интентов для частых запросов в чатботах, например 'определение объекта на фотографии', 'поиск книги по описанию', 'odqa - вопросы к Википедии' и т.д.

2) Для этих интентов сделаны заготовки сценариев, в которых в будущем можно будет реализовать соответствующие skill'ы с детальной обработкой вариантов запросов. Например, в ответ на реплику "помоги решить задачу по математике" чатбот сейчас выдаст: "Мастер помощи с домашними заданиями еще не реализован!". По этой реплике можно найти исходник соответствующего сценария в файле rules.yaml.

3) Запуск новых сценариев для skill'ов происходит в случае, если не получилось найти ответ в базе фактов или FAQ. Например, для вопроса "Что такое хрусталик?" бот выдаст ответ из FAQ, а для вопроса "Что такое бензокаин?" будет запущен odqa-сценарий.
Collapse )