Какую модель использует RASA NLU для извлечения сущностей и намерений после встраивания слов?
Какая модель используется для извлечения сущностей Rasa NLU? Это LSTM или просто нейронная сеть?
Ответы (1)
Это сообщение в блоге от Расы разъясняет некоторые аспекты.
С помощью Rasa вы сначала обучите векторизатор, который преобразует каждый документ в N
-мерный вектор, где N
- размер вашего словаря. Это именно то, что scikit-learn CountVectorizer делает.
Вместо этого каждое встраивание намерений строится как горячий вектор (или вектор с большим количеством 1
, если у вас «смешанные» намерения). Каждый из этих векторов имеет те же размеры, что и встраиваемый документ, поэтому я предполагаю, что N
на самом деле может быть (размер словаря) + (количество намерений).
В этот момент Rasa обучит нейронную сеть (по умолчанию: 2 скрытых слоя), где функция потерь предназначена для максимизации сходства между документом d
и намерением i
, если d
помечено как i
в обучающем наборе (и минимизирует сходство d
со всеми другие намеренные вложения). Сходство по умолчанию рассчитывается как косинусное сходство.
Каждый новый невидимый документ внедряется нейронной сетью, и его сходство вычисляется для каждого намерения. Намерение, которое больше всего похоже на новый документ, будет возвращено как прогнозируемая метка.
Старый ответ:
Это не LSTM. Они говорят, что их подход основан на StarSpace от Facebook.
Я не нашел вышеупомянутую статью очень интересной, однако, глядя на репозиторий Starspace на Github, я обнаружил, что вариант использования классификации текста имеет те же настройки, что и их предыдущая работа TagSpace.
Заголовок Документ TagSpace более ясен и объясняет, как они используют CNN для встраивания каждого документа в пространство таким образом, чтобы его расстояние до связанного вектора класса было минимальным. И слова, и документы, и классы («теги») встроены в одно и то же
d
-мерное пространство, а расстояние между ними измеряется через косинусное подобие или внутреннее произведение.