
La différence entre le travail appliqué et la théorie du papier est la survenue de problèmes. Constamment confronté à de nouvelles difficultés, qui à leur tour nourrissent l'esprit.
Dans le processus de travail sur un chat bot, j'étais confronté à la nécessité d'anticiper (c'est-à-dire d'anticiper) le développement du dialogue. Je n'y avais pas pensé avant, mais ensuite - en décidant quels mots mettre dans les lèvres de l'ordinateur en réponse à une phrase humaine particulière - je devais y penser.
Les conclusions m'ont paru intéressantes. Ils se trouvent à la surface du problème et peuvent ne pas être une révélation pour ceux qui ont étudié l'IA auparavant, mais je n'ai pas vu de langage direct dans la presse. Commençons donc ...
Dialogue entre une personne et un chatbot: une personne dit quelque chose, le chatbot doit répondre
raisonnablement . Il semble que la principale difficulté de la programmation soit l'imprévisibilité de ce qui sera dit par une personne, car une personne peut dire n'importe quoi. Et si quoi que ce soit, il est difficile de trouver une réponse raisonnable: la liste des réponses aux questions imprévisibles devrait être infinie, mais l'infini est techniquement impossible. Par conséquent, le chatbot devrait «comprendre» ce que l'interlocuteur lui a dit - plus loin sur la piste des développeurs d'IA, bien au-delà des limites du sujet annoncé ...
L'humour de la situation est que pour obtenir du chatbot "comprendre", "comprendre" la phrase de l'interlocuteur n'est pas seulement une opportunité, mais aussi une nécessité spéciale, parce que ... les gens eux-mêmes ne communiquent pas comme ça. Si vous pensez que les gens analysent ce qu'ils entendent à l'aide de l'appareil mental - le cerveau, alors, sur la base de l'analyse, ils expriment la réponse, alors la communication ne se fait pas tout à fait comme ça, cela se passe différemment.
Vous êtes-vous déjà demandé pourquoi vous aimez parler avec des amis? N'est-ce pas parce que vous entendez des amis qui sont surtout agréables, non seulement dans le sens de «complémentaires», mais aussi dans le sens de «intéressants», «fascinants», etc.? Exactement pour la même raison, il est désagréable pour vous de parler avec vos ennemis, car les informations en provenance d'eux ont le signe ou le vecteur opposé pour vous. En d'autres termes,
vous savez à l'avance quelles informations vous recevrez et agissez en fonction des circonstances : prenez contact avec joie avec vos amis, évitez si possible les rencontres avec les ennemis.
Voici la question: pourquoi avez-vous besoin de contacter vos amis si vous savez à l'avance ce qu'ils vont dire? Non, je comprends et partage: passez un bon moment, détendez-vous ... cependant, le désir d'obtenir de nouvelles informations ici est clairement à la dernière place. Pour la plupart, les gens obtiennent des informations - dans un sens, de nouvelles informations pour eux-mêmes - à partir d'autres sources, et lorsqu'ils communiquent avec des amis, ils obtiennent un buzz d'autre chose, à savoir de la prévisibilité de la conversation, tout comme lors de la communication avec des ennemis, bien avant de communiquer, ils éprouvent une expérience négative émotions, grâce à la même prévisibilité de ce qui va se passer.
La plupart des conversations sont prévisibles, et cela ne peut signifier qu'une chose: les gens connaissent à l'avance le cours d'une future conversation avec un interlocuteur particulier.
En réalité, la communication entre les gens est un peu différente de ce que l'on suppose par défaut:
- l'interlocuteur dit quelque chose
- Vous analysez la phrase que vous entendez et donnez une réponse.
En réalité, la communication entre les personnes se produit comme suit:
- vous anticipez ce que l'interlocuteur vous dira et préparez à l'avance la réponse à la phrase attendue ,
- si les attentes ont été satisfaites, émettez un blanc,
- sinon, vous émettez également un blanc, mais pas individuel, pour un interlocuteur donné, mais situationnel, adapté à tout interlocuteur.
Il s'agit d'anticipation, et ses lois s'appliquent non seulement aux conversations avec les gens, dont l'attitude est définie (positive ou négative), mais aussi à toutes les conversations en principe.
Supposons que vous rencontriez un ami et lui disiez: "Bonjour."
Cette phrase obéit à la situation: conformément à certaines règles, dont l'origine dans ce cas est sans importance, elle est utilisée au début du dialogue. Cela n'a aucun sens d'attendre la réponse, qui est probablement connue, vous pouvez commencer à construire la phrase suivante. En entendant le message de retour, vous commencez immédiatement la phrase préparée, sans autre délibération.
Cependant, en réponse, vous pouvez entendre autre chose, par exemple: "Oui, vous allez ...". La conversation précédemment planifiée a pris un chemin différent, le script a radicalement changé. Eh bien, ça arrive. Dans ce cas, votre cerveau donne une réponse standard telle que: «Vous allez vous-même!» - juste un instant plus tard que la phrase qui résonnerait si le scénario prévu reste inchangé. Un moment n'est pas, à proprement parler, un temps de réflexion, mais un temps d'accès à une bibliothèque de blancs situationnels. Quel genre de pensée y a-t-il quand tout est fait «sur la machine», pratiquement à un niveau inconscient!
On peut imaginer que l'interlocuteur «saute le pas»: il ne dit pas bonjour, mais dit la phrase suivante de manière amicale, familière à votre communication passée. Des moyens habituels implicites. Pour vous (plus précisément, votre cerveau), cela n'a aucun sens d'attendre une réponse qui est déjà connue, mais il est logique de préparer des phrases pour le dialogue ultérieur. Il est alors très probable que la phrase suivante après le «bonjour» manqué ne sera pas prise par surprise: la pièce préparée arrivera à votre bouche sans le moindre retard. Si vous le souhaitez, l'absence d'un message de retour peut être considérée non pas comme un «coup manqué», mais comme une nouvelle branche du script, mais cela ne change pas l'image globale.

La troisième option vous fait décider de la profondeur de l'anticipation. Si nous ne sommes pas en mesure d'anticiper la phrase que l'interlocuteur n'a pas prononcée, nous devrons l'analyser après l'avoir prononcée. Ainsi, il est idéal d'anticiper non seulement la phrase suivante, mais l'ensemble du dialogue dans son ensemble - mais cela vient du domaine des bons voeux. Les gens sont incapables d'une telle chose: pendant le dialogue, ils sont obligés de passer constamment des bibliothèques d'approvisionnement individuelles aux bibliothèques de situation.
Ainsi,
toute réplique implique un ensemble de réponses ultérieures, avec un ensemble très limité . Dans le cas des salutations, cela est dû au rituel de politesse, dans le cas général - la limite des réactions humaines à un événement particulier: joie, chagrin, admiration, mépris, etc. Il y a plusieurs dizaines de sensations, vous ne pouvez pas imaginer les autres - les gens ne ressentent simplement rien d'autre. Les réactions permettent d'anticiper le dialogue, d'avoir à portée de main les préparatifs de toute phrase possible de l'interlocuteur.
Ainsi, le dialogue n'est pas du tout une possibilité infinie de dire quelque chose d'arbitraire et de répondre à quelque chose d'arbitraire, mais des chemins étroits le long desquels vous ne pouvez que vous déplacer. Ils sont comme des pistes sur l'hippodrome: il est permis de désactiver uniquement là où il est fourni par le concepteur de la piste - la psychologie humaine. Vous ne pouvez pas faire du tout-terrain: la clôture principale a été installée, vous savez.
Comme les voitures sur un autodrome, les conversations se déplacent également en cercle. Les amis reçoivent un coup de pied d'un sujet gênant, les copines bavardent entre elles non moins avec enthousiasme. Si un différend survient entre des personnes hostiles, les arguments de l'autre côté sont transmis entre les oreilles. Dans ce dernier cas, ils disent: "Il ne m'entend pas". Il entend avec des oreilles, probablement, mais votre réaction au plan de conversation n'est pas anticipée par l'interlocuteur, car l'interlocuteur répond avec un blanc standard qui ne vous convient plus. Le rond-point est une situation désespérée.

Graphiques typiques. N'importe quelle phrase peut être prononcée, il y a toujours le choix d'une réponse ou d'une autre: en conséquence, chaque nœud doit avoir au moins un front d'entrée et plusieurs fronts d'extension sortants.
Idéalement, un chatbot a besoin d'une marge de plusieurs colonnes - plans de conversation: individuels pour chaque interlocuteur avec qui il a parlé, et communs aux étrangers. Il est évident, par exemple, qu'un homme communiquant avec une femme bien-aimée et un subordonné non de bonne humeur aura des choses différentes: thèmes, vocabulaire, intonations, couleur émotionnelle, intensité sonore, etc., mais tout d'abord - la direction de la pensée.
Il faut comprendre que l'anticipation n'est pas une panacée, mais l'une des nombreuses méthodes.En outre, lors du développement de l'IA, elle n'est pas la plus importante, il y en a plus importantes. De plus, la technique est extrêmement difficile à mettre en œuvre.
Si l'interlocuteur a salué d'une manière ou d'une autre non standard, le chatbot peut "ne pas deviner" au sujet de la salutation, et réagira différemment en conséquence (la variabilité de la parole humaine est le problème des problèmes, bon sang). Mais le salut est le cas le plus simple: anticiper les remarques suivantes est beaucoup plus difficile.
De plus, lors de la génération de votre propre phrase, le chatbot peut planifier une réaction erronée de l'interlocuteur, ce qui entraînera des écarts avec la réponse attendue.
Enfin, dans certains cas, pour des raisons purement algorithmiques, il est plus avantageux d’attendre la phrase de l’interlocuteur, puis de l’analyser. Si le chatbot est utilisé pour commander des billets, il est évident qu'il n'y a aucun sens ou possibilité de prédire le billet pour quelle date et quel itinéraire l'acheteur demandera - vous devez attendre les informations. Dans le même temps, l'anticipation est nécessaire dans un dialogue typique sans IA: elle peut gagner beaucoup de temps de traitement, du moins en raison de la capacité d'anticipation tout en pensant ou en prononçant sa phrase.
En lien avec l'anticipation et une bibliothèque de blancs situationnels, un cas curieux est rappelé. Un ami est venu chez moi et ma femme Après un certain temps, elle a mentionné son mari, qui oublie toujours d'éteindre la lumière: elle a commencé à dire avec enthousiasme comment était sa queue tchèque, et ainsi de suite. «Bien sûr! Bien sûr! Tu as tout à fait raison, mon cher! - entendu les remarques compatissantes de ma femme. La plaisanterie était que dans ma famille exactement le contraire. La femme n'éteint essentiellement pas la lumière: une minute après son arrivée à la maison, la lumière est allumée partout - dans les chambres, un couloir, dans la cuisine, dans les toilettes et dans la salle de bain. En passant, je l'éteins automatiquement, et ma femme l'allume automatiquement pas moins, et il n'y a rien à faire à ce sujet. Mais la conversation avec son amie n'était que cela. L'épouse a utilisé les blancs individuels qui convenaient un peu à la réunion, alors que rien ne gênait la communication. Les femmes, comme on dit, chantaient à l'unisson - elles étaient complètement unanimes et heureuses.
PostscriptCet article a été écrit dans le cadre d'une série sur le développement d'un bot de discussion syntaxique par moi, Vanya la sensible.
Articles précédents:
- Création d'IA en utilisant la méthode glock cuzdra. Odyssée intellectuelle ;
- Chatbot gagne l'audition ou la souffrance d'un amateur .
Si quelqu'un veut connaître Vanya dans son état actuel, la version 2.0 est ici:
bitbucket.org/mikejum/intellectualivan/downloadsPar rapport à la version précédente, Vanya a parlé et est devenu moins bogué - vous pouvez dire qu'il est devenu plus sage, mais pas autant que nous le souhaiterions. Comme l'a dit ma tribu de six ans après avoir discuté avec le robot de discussion, "votre Vanya est tout aussi stupide que Siri."
Dans le cadre de la transition d'Access vers PostgreSQL, des problèmes d'installation sont apparus: maintenant décompresser le fichier ne suffit plus, vous devez installer PostgreSQL et déployer le vidage, des instructions sont jointes.
À la question inévitable, combien d'anticipation est implémentée dans la version 2.0, je répondrai de cette façon. Partiellement mis en œuvre, au niveau initial, il est cependant problématique de le remarquer lors du dialogue. Comme mentionné précédemment, l'anticipation est l'une des nombreuses fonctionnalités requises dans le développement de l'IA, loin d'être la plus importante.