Article
· Juin 12 4m de lecture

Mesdames et Messieurs, veuillez accueillir l'incroyable Iris-nator

   

L'incroyable Iris-nator est arrivé en ville.

Il lit dans vos pensées : en vous posant quelques questions, il devine le personnage auquel vous pensez.

Oserez-vous vous y risquer?

Certains d'entre vous connaissent peut-être le jeu Akinator, où un génie devine le personnage auquel vous pensez en vous posant des questions et en vous laissant répondre par "oui" ou "non".

Pas d'IA qui analyse vos réseaux sociaux, pas de microphones qui vous écoutent... Alors comment ça marche?

Le secret réside dans un algorithme simple et dans le grand nombre de personnes qui jouent et alimentent la base de données.

Comment ça marche?

Définissons un terme: Nœud.

Un nœud peut être une question ou le nom d'un personnage.

Si c'est une question, elle aura deux réponses : Oui ou Non.

 

Attribuons-lui maintenant une valeur.

À la question, nous attribuerons l'ID 1, à la réponse affirmative, nous attribuerons l'ID 2 et à la réponse négative, l'ID 3.

Imaginons maintenant que les réponses affirmative et négative renvoient chacune une autre question, avec les caractères correspondants pour "oui" et "non".

 

Nous pouvons voir une tendance entre les questions et les réponses.

Les réponses affirmatives sont deux fois l'identifiant de la question, et les réponses négatives sont deux fois l'identifiant de la question plus un.

Ensuite, si nous avons le nœud n, le nœud suivant à afficher sera le nœud n*2 si la réponse est "oui" ou le nœud (n*2)+1 si la réponse est "non".

Prenons un exemple:

 

Supposons que je pense à Snoopy et que la question soit "Votre personnage est-il fictif?". La réponse "oui" nous indiquerait que le personnage auquel nous avons pensé est "Superman", mais ce n'est pas correct.

Comment transformer notre réponse en une question qui nous mène à Snoopy?

Nous avons besoin d'une caractéristique qui nous différencie de Superman, dans ce cas, nous demanderons "Votre personnage est-il un chien?". La réponse affirmative serait alors "Snoopy" et la réponse négative "Superman".

Cette nouvelle question remplacera l'ID du nœud "Superman", le personnage "Snoopy" aura le double du nœud de la nouvelle question et le personnage "Superman" aura le double du nœud de la nouvelle question plus un.

 

De cette façon, si nous créons beaucoup de questions et de réponses, notre Iris-nator sera capable de deviner n'importe quel personnage auquel vous avez pensé.

Fonctionnement d'Iris-nator?

Créez une table contenant les informations relatives aux nœuds:

Class Irisnator.Data.Nodes Extends %Persistent
{

/// NodeId (ID du nœud)
Property NodeId As %Numeric;
/// Texte du nœud
Property Text As %String(MAXLEN = "");
/// Type de nœud (0 = texte, 1 = question)
Property Question As %Boolean [ InitialExpression = 0 ];
/// Verbe de la question
Property Verb As %String(MAXLEN = "");
}

Remarque: Pourquoi y a-t-il un champ appelé "verbe"? Parce que la question s'affiche sous la forme {verbe} votre personnage {texte}? Il faut donc savoir quel est le verbe (est, avait, fait, etc.)

Le front-end est créé avec Angular19. Pour communiquer avec IRIS, j'ai créé plusieurs méthodes API:

GET localhost:52773/irisnator/api/node/:nodeId

Renvoie les informations relatives au nœud, y compris le NodId pour les réponses Oui et Non

{
    "nodeId": 1,
    "text": "a woman",
    "verb": "is",
    "question": true,
    "nodeYes": 2,
    "nodeNo": 3
}

GET localhost:52773/irisnator/api/score/:top

Renvoie le meilleur score. Ce meilleur score correspond au nombre de fois où un caractère a été atteint.

{
    "score": [
        {
            "characterName": "Superman",
            "score": 8
        },
        {
            "characterName": "Maddona",
            "score": 3
        },
        {
            "characterName": "Snoopy",
            "score": 1
        }
    ]
}

POST localhost:52773/irisnator/api/node

Lorsque Iris-nator ne parvient pas à deviner votre personnage, nous remplissons un formulaire avec les données du nouveau personnage et la question à poser pour le différencier du personnage auquel il correspondait.

Ensuite, déplacez le personnage en cours vers la réponse "non" et attribuez l'identifiant à la nouvelle question.

{
    "nodeId": 507,
    "newCharacter": "Snoopy",
    "oldCharacter": "Superman",
    "text": "a dog",
    "verb": "is"
}

De plus, Snoopy sera ajouté à la liste des personnages échoués.

POST localhost:52773/irisnator/api/score

Cette méthode définit le score d'un personnage, qu'il ait réussi ou non.

{
    "characterName": "Snoopy",
    "success": true
}

 

Découvrez le fonctionnement de l'application dans la vidéo suivante, profitez-en bien!!!

https://www.youtube.com/embed/v5GsiXJDgC8
[Ceci est un lien intégré, mais vous ne pouvez pas consulter le contenu intégré directement sur le site car vous avez refusé les cookies nécessaires pour y accéder. Pour afficher le contenu intégré, vous devez accepter tous les cookies dans vos Paramètres des cookies]

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer