Базы знаний (БЗ) содержат факты о мире в структурированном виде данных, представленных в формате графа, их очень естественно использовать для ответов на вопросы. Основная сложность в разборе вопроса к виду, пригодному для выполнения запроса к БЗ. Для обучения соответствующих методов и оценки их качества необходимы датасеты, но на данный момент для русского языка нет ни одного.
Данный проект представляет из себя набор скриптов для ответов на вопросы на естественном языке.
- Выделение сущностей (Entity Detection)
- Сопоставление сущности в БЗ (Entity Linking)
- Выделение и сопоставление отношения
- Выполнение запроса к БЗ
- С помощью SPARQL соберем информацию о сущности (различные названия) и отфильтруем лишнее.
- С помощью морфологического анализатора (MyStem) приведем все слова к нормальной форме.
- Разобьем информацию на n-граммы и построим индекс (ElasticSearch).
- Каждый вопрос обработаем MyStem, отфильтруем лишние слова и сделаем запрос к построенному индексу.
- Отсортируем результат по лучшему совпадению.
- Выделим сущность для ответа, сущность для вопроса и найдем путь в графе базы знаний между сущностями.
- Запрос к индексу ElasticSearch по ответу и по вопросу.
- Определение топ 10 сущностей для каждого.
- SPARQL запрос для определения цепочки отношений каждой сущности с каждой.
- Выбор наиболее подходящего варианта с помощью краудсорсинга.