Как определить смысл пользовательского ввода используя семантику или нейронные сети?

Привет всем! В этом вопросе я чайник, поэтому прошу помощи.

Задача такова: Есть некоторый бот, который выдает пользователю текст и ожидает от пользователя определенного ответа, этот ответ может быть изложен в любой форме. Бот должен как-то обработать этот текст и понять ту ли информацию ему сообщили или нет.

Например: Бот просит пользователя сообщить ему какой-нибудь факт, скажем какова высота эвереста?
возможные ответы:
- 8842м
- Я точно не помню, около 9 км.
- 9669 ярдов
- Эверест? Что это такое? =)
... и т.п.

Соответственно бот должен иметь возможность обучатся.

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

Если использовать нейросети, то каким образом можно нормализовать текст? Спасибо!
  • Вопрос задан
  • 438 просмотров
Пригласить эксперта
Ответы на вопрос 2
mannaro
@mannaro
Умею профессионально гуглить
Хехе, чат боты работают по такому принципу:
["какова высота эвереста?", ["8842 ?(m/м)", "9 ?(km/км/киломе*)", "9669 ?ярд*"]]
Где arr[0] - вопрос, arr[1] = answers - возможные ответы, где answers[i] - регулярное выражение для парсинга ответов.
Ответ написан
@doktr
Data Scientist
Если главная задача бота - определить, правильный или нет ответ на вопрос (y=1 или y=0),
то это задача классификации.
Для обучения нужно на входе иметь наборы (для несколько результатов измерений)
из одной или несколько переменнных (x1, x2, x3 . и т.д., причем x1=1),
каждому такому набору соответствует определенное значение y (равное 0 или 1).
Нужно подобрать такое уравнение логистической регрессии h(x), чтобы при h(x)>=0.5 y был равен 1, а при h(x)<0.5 y=0. Для этого с помощью оценки стоимости на обучающем наборе подбирают коэффициенты при иксах - тета1, тета2, тета3 и т.д.. Выводят требуемое уравнение (с помощью градиентного спуска или других методов), по которому можно узнать (с некоторой долей вероятности, близкой к 99%), правильный или нет ответ.
В качестве иксов можно использовать данные как из вопроса (если они будут не непрерывные числовые, а слова - например, "Эверест", "высота", то этим словам будут соответствовать дискретные значения соответствующих переменных), так и из ответа (для численных значений - непрерывные, для слов и единиц имерений - дискретные).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы