$caila.checkVocabulary
Проверяет каждое слово из массива аргументов на вхождение в словарь указанного движка NLU.
Синтаксис
Метод принимает в качестве аргумента массив объектов со следующими полями:
Поле | Описание | Допустимые значения | Значение по умолчанию |
---|---|---|---|
word | Слово, которое нужно проверить. | Произвольная строка. | — |
lang | Язык, на котором написано слово. | ru — русский язык. en — английский язык. | Язык NLU для проекта. |
engine | Движок, с помощью которого будет произведена проверка. | pymorphy — движок на основе библиотеки pymorphy2. aot — движок на основе сервиса АОТ. | aot . |
предупреждение
Движок
pymorphy
поддерживает только русский язык.- ECMAScript 5
- ECMAScript 6
$caila.checkVocabulary([
{word: "технология", lang: "ru", engine: "pymorphy"},
{word: "technology", lang: "en"},
{word: "ячсмитьбю."}
]); // => [true, true, false]
В среде ECMAScript 6 метод является асинхронным:
await $caila.checkVocabulary([
{word: "технология", lang: "ru", engine: "pymorphy"},
{word: "technology", lang: "en"},
{word: "ячсмитьбю."}
]); // => [true, true, false]
Использование в сценарии
Метод целесообразно использовать, например, чтобы проверить, содержат ли нераспознанные запросы от пользователя хотя бы одно словарное слово. Если таких слов нет, запросы можно расценивать как спам.
- ECMAScript 5
- ECMAScript 6
state: CatchAll
event!: noMatch
script:
# $parseTree.words — массив всех слов, обнаруженных в запросе.
# Преобразуем его из списка строк в список объектов нужного вида.
var words = $parseTree.words.map(function(string) {
return {word: string};
});
# Определяем для каждого слова, является ли оно словарным.
var wordsInVocab = $caila.checkVocabulary(words);
# Увеличиваем счетчик нераспознанных реплик только в том случае,
# если хотя бы одно слово из запроса нашлось в словаре.
if (wordsInVocab.indexOf(true) > -1) {
$session.catchAllCounter = $session.catchAllCounter + 1 || 1;
}
# Если счетчик нераспознанных реплик превысил порог, переводим на оператора.
if: $session.catchAllCounter > 3
go!: /Switch
random:
a: Извините, я не расслышала. Повторите, пожалуйста.
a: Не совсем поняла. Можете повторить, пожалуйста?
a: Повторите, пожалуйста. Вас плохо слышно.
state: CatchAll
event!: noMatch
scriptEs6:
# $parseTree.words — массив всех слов, обнаруженных в запросе.
# Преобразуем его из списка строк в список объектов нужного вида.
var words = $parseTree.words.map(function(string) {
return {word: string};
});
# Определяем для каждого слова, является ли оно словарным.
var wordsInVocab = await $caila.checkVocabulary(words);
# Увеличиваем счетчик нераспознанных реплик только в том случае,
# если хотя бы одно слово из запроса нашлось в словаре.
if (wordsInVocab.indexOf(true) > -1) {
$session.catchAllCounter = $session.catchAllCounter + 1 || 1;
}
# Если счетчик нераспознанных реплик превысил порог, переводим на оператора.
if: $session.catchAllCounter > 3
go!: /Switch
random:
a: Извините, я не расслышала. Повторите, пожалуйста.
a: Не совсем поняла. Можете повторить, пожалуйста?
a: Повторите, пожалуйста. Вас плохо слышно.