Comment fonctionnent les «reconnaissants d'intention»?

11

Alexa d'Amazon , Mix de Nuance et Wit.ai de Facebook utilisent tous un système similaire pour spécifier comment convertir une commande de texte en intention - c'est-à-dire quelque chose qu'un ordinateur comprendrait. Je ne sais pas quel est le nom "officiel" de ceci, mais je l'appelle "reconnaissance d'intention". Fondamentalement, un moyen de passer de «veuillez régler mes lumières à 50% de luminosité» à lights.setBrightness(0.50).

La façon dont ils sont spécifiés consiste à demander au développeur de fournir une liste d '«exemples d'énoncés» qui sont associés à une intention et éventuellement étiquetés avec des emplacements «d'entités» (essentiellement des paramètres). Voici un exemple de Wit.ai:

Exemple avec wit.ai

Ma question est: comment fonctionnent ces systèmes? Puisqu'ils sont tous très similaires, je suppose qu'il y a un travail fondamental qu'ils utilisent tous. Est-ce que quelqu'un sait ce que c'est?

Il est intéressant de Houndify utilise un système différent qui est plus comme regexes: ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]. Je suppose que cela est intégré dans la recherche de faisceaux de leur système de reconnaissance vocale, tandis qu'Alexa, Wit.ai et Mix semblent avoir des systèmes Speech-> Text et Text-> Intent distincts.

Edit: J'ai trouvé un point de départ - Un mécanisme pour l'interaction homme-robot via des commandes vocales informelles . Il utilise quelque chose appelé analyse sémantique latente pour comparer les énoncés. Je vais vous lire à ce sujet. Au moins, cela m'a donné un point de départ dans le réseau de citation.

Edit 2: LSA compare essentiellement les mots utilisés (sac de mots) dans chaque paragraphe de texte. Je ne vois pas comment cela peut très bien fonctionner dans ce cas car il perd totalement l'ordre des mots. Bien que l'ordre des mots n'ait peut-être pas beaucoup d'importance pour ce type de commandes.

Edit 3: Les modèles de Markov à sujet caché semblent intéressants.

Timmmm
la source
Ce message explique la classification des intentions en détail: mrbot.ai/blog/natural-language-processing/…
znat
Cela semble utiliser la méthode du «sac de mots» que j'ai mentionnée dans ma question. Fondamentalement, il suffit d'ajouter les vecteurs de mots dans la phrase. Mais ça ne peut pas être comme ça. Les interfaces de Wit et Nuance montrent qu'elles reconnaissent des entités que le sac de mots ne peut pas facilement faire. De plus, le sac de mots perd tout ordre, de sorte que quelque chose comme "Définir une alarme pour les 10 derniers 5" ne pourrait pas être distingué de "Définir une alarme pour les 10 derniers 10". Il doit y avoir quelque chose de plus.
Timmmm
L'extraction d'entités est un autre problème où la séquence compte. Si vous avez beaucoup de données, un Rnn fonctionnera, dans des ensembles de données plus petits, qui sont fréquents dans les chatbots, les champs aléatoires conditionnels fonctionnent très bien
znat
Ok, alors ... je cherche une réponse plus détaillée que "un RNN fonctionnera". La plupart des systèmes d'apprentissage séquentiel modernes utilisent des RNN, ce qui semble évident.
Timmmm
les intentions concernent la signification générale des phrases (moyenne des vecteurs) et les entités, l'apprentissage du contexte (mots environnants) dans lequel elles apparaissent. Rnn ou CRF ne sont que des algorithmes qui peuvent être utilisés car ils apprennent des séquences. Si vous voulez en savoir plus, consultez le code source de Rasa
znat

Réponses:

4

Bien que ne répondant pas directement à votre question, vous pouvez être intéressé par le domaine de la réponse automatique aux questions . Pour répondre aux questions de texte en langage naturel, elles doivent d'abord être comprises, ce qui chevauche votre problème.

Une bonne ressource est le cours de Jurafsky et Manning . En particulier, les sections sur la sémantique et la réponse aux questions peuvent vous aider dans ce que vous recherchez. Des vidéos de conférences sont disponibles sur youtube ici .

dvdnglnd
la source
Je trouve la première partie de votre réponse très drôle mais informative.
Diego
Ce serait peut-être mieux en tant que commentaire car, comme vous l'admettez, cela ne répond pas à la question.
kbrose
2

Ce poste a une approche. Fondamentalement, ils utilisent un sac de mots - ils convertissent les mots en vecteurs clairsemés puis les additionnent.

Cela semble fonctionner assez bien mais un défaut majeur est que la réponse est indépendante de l'ordre des mots, donc vous ne pouvez pas faire de requêtes comme "Combien de kilos dans une livre" à moins que vous ne les mettiez dans un cas particulier.

Cependant, j'ai écrit avec Alexa et il est assez insensible aux changements d'ordre des mots, alors peut-être qu'ils utilisent quelque chose de similaire.

Timmmm
la source
Curieux - quel avantage les vecteurs clairsemés ont-ils sur le bayésien naïf? Pour moi, les deux résolvent des problèmes linéairement séparables avec l'hypothèse naïve du sac de mots
Angad