Поиск по тексту, как в демо

Добрый день.

Спасибо команде и всему сообществу за проделанную работу. Это очень круто!
Я являюсь новичком в этой теме и немного закопался в объёмах информации, поэтому буду благодарен за любую помощь.
Вопрос такой: какой кратчайший путь по шагам для реализации функционала поиска ответа на вопрос по тексту, как в демо?
Я хочу сделать форму на сайте, через которую пользователи смогли бы получать ответы из некоего файла или набора файлов (велкомбук, инструкции и пр.).

Спасибо!

Добрый день @manuilovmax !

Начните изучение ODQA с последнего нашего поста-туториала на Хабре https://m.habr.com/ru/company/microsoft/blog/501782/.

1 Like

Добрый день @Moryshka!
Спасибо за ваш ответ. Изучил несколько постов на Хабре, но решил начать с образов в Docker.
В принципе, для начала этого должно хватить. Я могу с помощью REST могу отдать текст и получить ответ на вопрос по нему.

Но сразу возникает несколько вопросов на будущее при использовании образа из Docker:

  1. Правильно ли я понимаю, что в таком случае я могу использовать только один текст\файл? То есть я не могу использовать несколько файлов, допустим инструкций, как разные контексты?
  2. Можно ли как-то исправлять ответы, на которые даются неправильные ответы? Чтобы система точнее отвечала в будущем?

Заранее спасибо!

Добрый день, @manuilovmax

  1. Нет, можно обрабатывать сразу несколько запросов. Например, если использовать для вашей задачи конфигурационный файл squad_bert_infer, то модель принимает два агрумента: squad_bert_infer - контекст, squad_bert_infer - вопрос. В качестве значений этих аргументов передаются списки контекстов и вопросов, т.е. передав ["контекст 1", "контекст 2"] и ["вопрос 1", "вопрос 2"] вы получите список из результатов обработки первой пары контекст-вопрос и второй пары контекст-вопрос. В ответе модели будет содержаться не только ответ на вопрос, но и логит - число с плавающей точкой, которое пропорционально уверенности модели в правильности ответа на вопрос для данной пары контекст-вопрос. Т.о. вы можете отправить в качестве значения контекста список из разных контекстов, а в качестве вопроса отправить в модель список той же длины из одинаковых вопросов. Затем, на стороне клиента по значению логита вы можете выбрать наиболее вероятный ответ. Кроме того, существует компонент, добавив который в пайплайн, можно уже для нескольких контектов получать наилучший ответ без наобходимости дублирования вопроса для разных контекстов и отбора наилучшего ответа на стороне клиента.
    В данный момент я затрудняюсь ответить на второй ваш вопрос, в ближайшие дни вам на него ответит мой коллега или я подготовлю подходящий ответ.
1 Like

Спасибо, @Ignatov!
Как оказалось, конфиг squad_bert тоже может принимать несколько контекстов. А вот squad_bert_infer очень плохо отвечает на мой набор вопросов.
Думаю, что для начала этого вполне достаточно.

Остается открытым второй вопрос: Можно ли как-то исправлять ответы, на которые даются неправильные ответы? Чтобы система точнее отвечала в будущем?