Предварительная обработка пользовательских высказываний в боте перед их отправкой в ​​LUIS - PullRequest
0 голосов
/ 28 сентября 2019

Я создаю бота на немецком языке, который должен понимать форматы швейцарских чисел:

  • Английский формат для 1Mio: 1 000 000
  • Немецкий формат для 1Mio: 1. 000 000
  • Швейцарский формат для 1Mio: 1'000'000

К сожалению, LUIS не имеет швейцарской культуры и поэтому не будет правильно понимать 1'000'000 со встроенной числовой сущностью.Поэтому моя идея состоит в том, чтобы предварительно обработать пользовательские высказывания перед их отправкой в ​​LUIS следующим образом: Если я вижу разделитель в швейцарских тысячах (то есть ') с хотя бы одной цифрой слева и тремя цифрами справа, то удалите швейцарскую тысячуразделитель от высказывания перед отправкой его в LUIS ... и LUIS затем правильно распознает его, потому что числа очищены от тысяч разделителей.

Кто-нибудь знает, как это сделать в боте?Или лучше в промежуточном программном обеспечении?Я новичок в BotFramework и в значительной степени потерял.

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2019

Да, вы можете изменить действие, прежде чем передать его в LUIS.Вам просто нужно найти подходящее регулярное выражение, чтобы найти и заменить '.Например, вот бот, где я обновляю это как часть функции onTurn, обновленной заменой регулярного выражения, которая, я думаю, будет работать для вас (в nodejs):

async onTurn(context) {
    if (context.activity.type === ActivityTypes.Message) {
        context.activity.text = context.activity.text.replace(/(?<=\d{1})'(?=\d{3})/g,'')

        const dc = await this.dialogs.createContext(context);
        const results = await this.luisRecognizer.recognize(context);

Регулярное выражение здесь ищетдля символа 'предшествует одна цифра (это нормально, если это больше, чем один, как в середине числа), а затем 3 цифры.На самом деле, возможно, вам будет достаточно просто /'(?=\d{3})/g, который представляет собой ', за которым следуют три цифры.

То же самое применимо, если вы используете C # или другой обработчик поворота, вам просто нужно изменить файл activity.text перед тем, какВы передаете это Луису.

...