Козиев Илья (kelijah) wrote,
Козиев Илья
kelijah

Categories:

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

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

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


H: Как ты относишься к квантовым процессорам?



Если движок бота не может найти в базе фактов и в FAQ материал для ответа, то ему остается выдать некий шаблонный ответ типа "Нет соответствующей информации". Чтобы немного разнообразить реакцию бота, можно выделить в вопросе собеседника именную группу и использовать при генерации ответа:


B: Мне ничего не известно про квантовые процессоры



Технически это выглядит как последовательность шагов:

1. NP чанкер выделяет именные группы.

2. Реплика собеседника сопоставляется с маской, при этом именные группы учитываются как единые элементы при вычислении расстояния Левенштейна. Одновременно при сопоставлении маски происходит присваивание сматченных именных групп неким переменным.

3. Генерируется ответ на основе шаблона, в котором указываются имена сопоставленных чанков из п.3. При этом может потребоваться просклонять и пересогласовать элементы чанка в нужную грамматическую форму.

Соответствующее правило выглядит вот так:

            if:
                match:
                    - 'как я отношусь к NP1'
                    - 'что мне известно о NP1'
                    - 'расскажи мне о NP1'

            then:
                say:
                    - 'Мне ничего не известно про $NP1(ВИН)'
                    - 'Я ничего знаю о $NP1(ПРЕДЛ)'
                    - 'Я не знаю, что такое "$NP1(ИМ)"'
                    - 'У меня нет информации о $NP1(ПРЕДЛ)'



Этот механизм нужно будет отшлифовать рядом расширений. Например, добавить возможность ссылаться в шаблоне ответа на результаты NER. Тогда для входных реплик "Какая погода будет в пятницу" и "Какая погода будет завтра" можно в ответе подставлять упомянутый момент времени без привязки к его синтаксическому оформлению в виде предложной или наречной группы.
Tags: chatbot, chunker, named entry recognition, ner, существительное
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments