Optimisation brain gladys


#1

Salut ! J’ai une question bête sur le fonctionnement du brain, suite à des problèmes.

Etant donné que gladys-voice ou snips ne sont pas parfaits, il arrive plusieurs fois par jour qu’ils se déclenchent et envoient à gladys des mots totalement random. Gladys les stocke dans le brain et les mets “en attente” pour que je les catégorise.

Après avoir fait des centaines de phrases (plus de 600 dont tous mes faux positifs incompréhensibles) j’avais des problèmes de compréhension de la part du brain, il devais soit trop y en avoir, soit avoir des choses contradictoires, enfin bon j’ai tout supprimé directement dans la base de donnée histoire de repartir sur de bonnes bases.

Mais, pour améliorer le traitement de la part du brain, j’ai besoin de conseils.
Imaginons, gladys comprends eteins du pain elle va essayer d’éteindre le pain, ce qui n’est pas possible. Est-ce que je dois approuver cette mauvaise compréhension en tant que brain-no.command.detected ou alors lui laisser deviceType.setDeviceOff et rejeter la phrase ?

Merci :slight_smile:


#2

Hello! Haha merci pour ton retour :slight_smile:

Il faut que tu rejete la phrase! Si tu mets la phrase en “brain no command detected” tu risques de diminuer la compréhension de toutes les autres phrases de type “éteins XXXX”.

En revanche ça ignorera juste ce comportement, ça n’améliorera pas le brain… Actuellement quand tu dis “Eteins le <Objet qui n’existe pas>”, si l’objet n’existe pas, ça échouera forcément. Il faudrait surtout que le brain renvoie une réponse vocale peut être plus précise là dessus.


#3

D’accord merci bien :slight_smile: C’est certainement pour ça que j’ai rencontré des pb sur ma première base de phrases.

En revanche, j’ai un comportement différents de ce que tu dis, lorsque je demande un Objet inexistant, gladys ne me dis pas qu’elle n’a pas réussi mais qu’elle l’a fait !
Exemple :

  • Moi : Allume le dragon
  • Gladys : Fait !

Ah d’accord ! :stuck_out_tongue_closed_eyes: Et c’est surtout dans ces cas que j’hésite a decliner/accepter la commande.

Pour que ce soit plus réaliste, il arrive aussi souvent que snips transmette juste “Allume lumière” mais pas suivi de l’objet concerné, idem ici, elle réponds que c’est fait alors que ce n’est pas possible.
On parle de la même chose ou je n’ai pas tout capté ? :wink:


#4

Ah oui effectivement, si aucun n’objet n’est détecté, alors il n’y a pas d’erreurs, c’est juste que Gladys appelera la fonction avec un tableau d’objet à contrôler vide ^^

C’est normal dans le fonctionnement actuel!

(Mais je te l’accorde, il serait bien de renvoyer une réponse du style “je n’ai pas trouvé d’appareil à allumer”)


#5

Last question ! J’ai eu une phrase reconnue “lumière table de nuit” sans l’action. Gladys a bien reconnu qu’il n’y avais pas d’action et n’a pas compris ma demande.
Je peux approuver ce choix sans que ca influe sur les phrases du type “allume lumière table de nuit” ou il est mieux de rejeter ?

Merci pour tes réponses :blush:


#6

Hello !
Une petite réaction sur ceci :

Personnellement, moi ça me sert :smiley:

Par exemple, j’ai un raspberry au mur avec un écran tactile au mur pour en faire un dasboard.
Sauf que, du coup l’écran est allumé H24. Donc du coup j’ai fais un deux petits script shell :

image

Et du coup ça me permet de lancer des devices qui n’éxiste pas réellement

Idem pour ce genre de device qui éxécute des scripts

image

Je sais pas si c’est tout à fait pareil, mais en tout cas c’est pratique :slight_smile:


#7

Je n’en ai aucune idée :slight_smile: C’est la magie du machine learning. C’est une black box, donc à tester. ça peut créer des faux positifs sur certaines phrases ou tu voudrais dire d’éteindre par exemple, vu que ici tu retire le mot important. Après ça peut faire sens, donc à toi de tester!


#8

Salut !

Je comprends tout à fait ce que tu fais, j’utilise quelque chose de similaire grâce au gladys-fake-module (d’ailleurs, tu passes par un module ou c’est natif et j’ai installé le module pour rien ?), je m’en sert différemment : le deviceType virtuel Eclairage soir allume plusieurs lumières d’un coup via un scénario et un script, etc.
Ce dont je parlais dans mon premier post, c’est d’un mot compris par gladys, qui n’est ni un deviceType réel, ni un deviceType virtuel. En gros un mot qui n’a rien a faire là, gladys me réponds qu’elle a réussi à l’activer, mais PG m’a répondu et c’est normal.

Par contre je vois chez toi qqch qui m’intéresse grandement, c’est l’espèce de bouton poussoir dans tes deviceTypes a la place du switch, comment le mets tu en place ?
J’utilise certaines commandes shell également, c’est bien pratique :wink:


#9

Salut @jojolll

Le bouton poussoir, c’est un device broadlinmini pour envoyer un signal à ma TV et home cinema, il sont comme ça avec le module de @spenceur.
Je pense que c’est parce que c’est du fait que ce n’est pas un device 0/1 car tu envoi un signal “bêtement”

Mais du coup je comprends mieux ta réflexion alors sur le fait que gladys ne trouve pas le device en soit, qu’il soit virtuel ou non :slight_smile:


#10

Salut,

Pour avoir le bouton poussoir, il faut définir le type “push” au lieu de “binary”, tout simplement.
A chaque appui, c’est la valeur du max qui est envoyé.