Всем привет!
Я тут немножко запутался в нормализациях входного текста, которые делаются в Алисе и в частности в NLU. Может кто-нибудь объяснить мне логику или сослаться на доку, где она объяснена?
1) Говорю "купи тысячу пятьсот грамм пиццы", на экране пишется "купи 1500 грамм пиццы", в NLU токены ['купи', '1500', 'грамм', 'пиццы'], а вот текстовый слот "количество" из моей грамматики внезапно заполняется значением 'тысячу пятьсот грамм'. Как так? Откуда эти текстовые токены вообще взялись?
2) Говорю 'закажи одна целая пять десятых килограмма', вижу на экране 'закажи 1,5 кг', при этом поле nlu.command равно 'закажи 1,5 килограмма'. Окей, бог с ним с написанием, "кг" или "килограммы". Но при этом в NLU токены внезапно оказываются ['закажи', '1', '5', 'кг'], запятая потерялась, и восстановить число уже проблемно. А в текстовый слот, отвечающий за количество, попадает текст 'одна целая пять десятых килограмма', не похожий ни на текст с экрана, ни на command, ни на токены.
Как, в этом, вообще, разобраться?) 🤦🏼♂️
В идеальном мире, кажется, массив tokens был бы равен полю command, разбитому по пробелам, а все текстовые слоты были бы его подстроками. По крайней мере, мне это кажется логичным. А вот логику того, что приходит в запросе, я пока не уловил.