Компьютерная лингвистика

Новостная лента www.solarix.ru

Previous Entry Share Next Entry
Движок логического вывода на базе DNN моделей ("умный" chatbot)
kelijah
Далее - результаты работы тестовой версии chatbot'а на базе нейросетевого движка логического вывода:


Схематично движок работает так.

Пользователь вводит запрос (это может быть вопрос в техподдержку, или к виртуальному персонажу игры, или к поисковой системе).

Движок ищет в базе знаний наиболее релевантную предпосылку, на основе которой можно построить ответ (в листинге отмечено как best premise).

Далее берет эту предпосылку, добавляет текст вопроса и с помощью отдельной нейросетки строит ответ.

В приведенном ниже сеансе работы можно видеть некоторые важные фичи, без которых chatbot бесполезен, например учет морфологии и семантической близости слов.

:> кто питается травой?
Best premise=коровы едят траву
коровы


:> питаются ли коровы травой?
Best premise=коровы едят траву
да


:> коровы питаются чем?
Best premise=коровы едят траву
траву


:> кто есть траву?
Best premise=коровы едят траву
коровы


:> траву кто кушает?
Best premise=коровы едят траву
коровы



:> что едят коровы?
Best premise=коровы едят траву
траву



:> ловят ли кошки мышей?
Best premise=кошка ловит мышку
да


:> мышей кто ловит?
Best premise=кошка ловит мышку
кошка




  • 1
А что там внутри все-таки? Как подбирается best premise и что стоит за построением ответа? Это открытый датасет?

Привет,

>А что там внутри все-таки? Как подбирается best premise и что стоит за построением ответа?

Пока там внутри несколько (4) нейросеток на Keras.

Предпосылка выбирается из "базы знаний" на основе релевантности, которую определяет отдельная сеточка.

Ответ строится тоже нейросеткой из предпосылки и вопроса.

Идея в том, чтобы сделать аналог логической машины Пролога на нейросетках, получив нечто практичное в качестве вербального интерфейса для игр.

> Это открытый датасет?

Частично открытый. Я выложил автоматически сгенерированные списки "предпосылка-вопрос-ответ" сюда https://github.com/Koziev/NLP_Datasets/tree/master/QA

Привет. Насколько я понял задумку, это поиск ответа при наличии прецедента. А что будет если вопрос не имеет бест премайз? Может такие отсечь и отправить оператору?

Привет.

>Насколько я понял задумку, это поиск ответа при наличии прецедента.

Да, это поиск по базе знаний информации, которая поможет ответить на заданный вопрос, и потом выдача ответа, сгенерированного из вопроса и найденной инфы.

> Может такие отсечь и отправить оператору?

Наверное можно и так, если при этом записать в базу знаний действия оператора (его ручной поиск по базе знаний), то наверное можно делать оперативное дообучение бота.

Но я на такой сценарий не расчитываю. Бот должен либо уходить на сценарий "small talk", либо задавать уточняющий вопрос, либо сваливаться на ветку "не могу ответить".

  • 1
?

Log in

No account? Create an account