Assistant smart home

Discussions de la liste domotique

Modérateur : monkey3d

monkey3d
Messages : 40
Enregistré le : jeu. 16 oct. 2014 12:31
Adhérent Labsud : Adhérent

Assistant smart home

Messagepar monkey3d » ven. 9 mars 2018 07:27

Bonjour,

J’ai développé, il y a quelques temps déjà, un assistant smart home en mode texte dans mon système domotique. Je l’ai appelé Victor (j’espère que cela ne froisse personne :-)).

Il est intégré dans mon module de chat et pour s’adresser à lui, il suffit d’écrire dans la phrase son nom.
Par exemple : « Victor, bla bla bla ... »
C’est une manière très classique pour s’adresser aux assistants si je regarde ceux de quelques GAFA :
Chez Apple : « Dis Siri, ... »
Chez Google : « ok Google, …. »


Le fonctionnement en très synthétique est le suivant :
- le texte soumis par l’utilisateur est analysé sur le plan lexical. Il est débarrassé entre autres des ponctuations, de certains mots non significatifs, etc pour extraire chaque mot brut de la phrase. Chaque mot est comparé à des mots d’un dictionnaire pour déterminer si le mot existe ou s’il existe des mots approchants.
Pour cela j’utilise 2 techniques : la phonétisation et le test de la distance de Levenshtein (1). Ces 2 techniques permettent, en partie, de s’affranchir des éventuelles fautes d’orthographes de la phrase d’origine.
- si le mot « magique » Victor est reconnu dans la phrase alors le process d’analyse se poursuit.

Comme je crois dans tous les assistants, il n’y a pas une analyse sémantique du propos mais découvrir si les mots significatifs trouvés correspondent à un modèle de phrase interprétable. En ce sens, le terme d’intelligence (faible) parfois associé à ce type d’assistant est plutôt surfait.
Si la phrase est interprétable alors l’assistant va exécuter la demande et répondre de sa réalisation.
Sinon, il indiquera sa non compréhension voire la partie sur laquelle il bute par un message de retour dans le chat. A charge pour l’utilisateur de reformuler sa demande en tenant compte des retours.

Prenons un exemple simple voire trivial : « Victor, allume la lumière de la cuisine ».
L’assistant va comparer avec ses modèles de phrase et trouver que cette phrase est compatible avec le modèle « allume lumière {{ pièce }} ».
Dans tout système de domotique, il y a par ailleurs, une description de l’environnement, les pièces, les capteurs, les actionneurs , etc et les liens possibles entre ces différentes informations.
Si la description est conforme, le schéma d’analyse très simplifié, est :
- {{ pièce }} va être identifié à « cuisine »,
- « lumière » va être identifié comme un type d’équipement connu de la pièce et relié à un actionneur selon un protocole connu,
- « allume » va être identifié comme la commande de l’actionneur de changement d’état de « off » vers « on »,
Et donc l’assistant peut commander l’actionneur de la lumière cuisine pour être « on » puis après confirmation de l’exécution de la demande, répondre au demandeur.

Le modèle est évolutif puisqu’il permet d’ajouter des mots dans le dictionnaire et des modèles de phrase pour répondre à encore plus de sollicitations.

J’ai réalisé ce développement en php et il intégré dans ma solution domotique.
Il fonctionne entièrement en local et n’utilise aucun service sur le web.

J’en parlerai plus complètement lors de la prochaine soirée domotique du mardi 10 avril 2018.

Claude

(1) https://fr.wikipedia.org/wiki/Distance_de_Levenshtein

Retourner vers « Domotique »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité