 Bonsoir, bonsoir. Est-ce que vous m'entendez partout ? Oui ? Non ? Ok. Merci beaucoup d'être ici ce soir. Merci beaucoup d'être ici aujourd'hui. Je veux parler aujourd'hui des chatbots. Alors, qui est intéressé dans les chatbots dans la salle ? Ah, ce n'est pas mal. Qui travaille sur les chatbots, ou qui a été travaillé sur les chatbots ? Cool. Ok, j'espère que après cette présentation, beaucoup plus de vous seraient en train de faire des chatbots. Donc, ce n'est pas vraiment d'accord avec Python. La valeur principale de Raza, c'est que c'est en Python, et cela permet de faire tout en Python pour les chatbots. Je vais vous présenter Raza, en quelques mots. C'est un start-up vers Berlin. Elles font des conversations sur le software. Le premier product, Raza NLU, a été réalisé l'année dernière. Elles ont une forte adoption de la communauté. Le software est utilisé en production par beaucoup de grandes entreprises. Elles ont un futur premium pour les entreprises, mais elles ne sont pas vraiment nécessaires si vous êtes une très grande compagnie, et si vous avez un emploi. Et bien sûr, c'est en Python. Et l'important point, c'est que Raza est créée pour la production. Ce n'est pas un framework de recherche. Ce n'est pas pour faire des projets de recherche. C'est fait pour appeler autant d'AI ou de machine learning que possible pour pouvoir faire la production. Pour pouvoir faire la production. Juste une parole pour moi. Je suis Nathan. Je suis aussi l'organisateur de chatbots MTL, donc s'il vous plait, venez voir. Je fais des chatbots pour la vie, surtout avec Raza. Et j'essaie de promouvoir l'utilisation de l'open source Raza dans la communauté tech. C'est pourquoi je suis ici aujourd'hui. Pour ceux qui ne sont pas utilisés pour travailler avec les chatbots, c'est d'abord décrire comment un chatbot fonctionne. J'assume que vous connaissez tous les chatbots. C'est un robot qui parle avec vous. Il répond à la question. Il fait des choses et réacte à la langue naturelle. Donc, dans le futur, un chatbot devrait devenir comme ça. Vous pourriez avoir des neural nets pour apprendre des conversations réelles, par exemple, il lui donnerait une histoire d'accueillement pour les conversations. Et après ça, l'utilisateur interroge et il interprète les raisons et génère les réponses. Il répondait aux questions simples, comme combien de gigabytes de RAM j'ai sur ma computer, 8, ou il disambigue si les clarifications sont nécessaires. Si je dis que ma computer ne fonctionne pas, est-ce que c'est possible ? Si vous regardez la fenêtre, si il y a de l'électricité ou d'autres, oui, etc. Donc, aujourd'hui, ce n'est pas comme ça. Aujourd'hui, ce qui fonctionne c'est des tasques pour les chatbots. Les chatbots sont créés pour faire des choses simples ou un chatbot qui répondait aux questions de combien de vacances j'ai sur la fenêtre. Ou ce que j'ai sur la fête. Ou je dois acheter un laptop pour mon département. Qu'est-ce que je dois utiliser ? Et un chatbot a plusieurs pièces. Je vais prendre l'exemple de l'assistance banking. Une simple app qui peut vous dire votre balance et vous pouvez le faire transférer. Vous dîtes combien sur votre compte de check-in. La première pièce qui s'appelle NLU pour l'understand de la langue naturelle transformera une sentence non structurelle pour un contenu structurel que un programme de computer peut comprendre. Donc ici, il y a une balance sur l'account de check-in. Puis un chatbot qui s'appelle l'histoire de la conversation et qui s'occupe de la date. Par exemple, j'ai dit hi, je suis Nathan. Il y a un variable avec mon premier nom. Et l'enjeu dialogue va décider ce qu'il faut faire. Probablement, en ce cas, une bonne idée serait de répondre avec la balance sur l'account. Donc, souvent, comment ces projets sont faits aujourd'hui. Vous avez beaucoup de plateformes que vous pouvez utiliser, mais si vous allez à la façon de la code, vous pouvez utiliser sas. Il peut être Facebookswith.ai, Google Dialogflow ou Microsoft Lewis. Et pour le dialogue engine et le state tracker, ils utilisent un toolkit d'open source, c'est-à-dire Badkit, Claudia ou Badpress, qui sont tous dans Node.js. C'est le plus commun, je pense, le plus populaire. Ils offert les connecteurs à la plateforme, donc, ils interroperaient avec Facebook Messenger, Slack, Twilio, etc. Et ils proviennent une simple interface avec des méthodes, comme Ask, Reply, pour que vous puissiez programmer votre conversation. Mais pour le reste, c'est toujours si et si d'autres. Donc, si les utilisateurs demandent la balance, si l'intent est transfert, c'est comme ça. Alors, depuis que Raza est en Python, et comme vous le savez, Python est l'un des langues préférées pour l'implementation machine-learning. Vous pouvez imaginer que, en utilisant un framework en Python, ça vous donnera accès à beaucoup d'autres choses. Et les deux sont de l'intendance de tous ces entreprises et services. Et un autre bénéfice serait de prendre la conversation dans un plus humain et naturel. Parce que, comme vous le verrez, nous, les humains, ne pensons pas dans les branches. Donc, ils ont deux produits, NLU et Core. Alors, nous allons parler du NLU. Qu'est-ce que le NLU ? Le NLU, c'est l'intendance pour l'intendance de la langue naturelle et il transforme des données structurelles, comme un texte, pour les données structurelles que l'un d'entre eux peut comprendre. Ou le programme peut comprendre. Donc, par exemple, de la gauche, le NLU pourrait comprendre comment ça se fait. Alors, vous le trainez. Vous le trainez avec l'exemple. Donc, c'est le format de l'intendance de Raza. C'est un file de Markdown. Donc, le header est le nom de l'intendance, check balance, et ensuite vous donnez quelques exemples. En bleu, vous avez le syntaxe pour les entités. Donc, si vous avez des savings, alors les savings sont la valeur pour l'intendance d'intendance. Et bien sûr, ici vous avez quelques exemples, mais ça va travailler très bien avec 20, 40 ou 50 exemples. Vous n'avez pas besoin de 1000 exemples pour avoir de bons résultats. C'est la beauté de ça. Donc, services comme api.ai, weed.ai, ils ont des interfaces web pour faire ça. Raza vous offre un format simple. Je pense que pour nous les développeurs c'est plus facile de écrire et de lire. Donc, oui, Raza c'est juste un alternatif neutral pour ces produits. Donc la question est, est-ce que les benchmarks sont tous dans la même range ? Donc, je vais vous donner un lien pour les présentations. Si vous voulez, vous pouvez lire les benchmarks. Mais la histoire est que l'une des benchmarks va mettre Raza et Louise au-dessus de l'autre, mais marginalement au-dessus. Et l'autre va mettre api.ai, marginalement au-dessus. Et c'est pas ça que vous avez utilisé pour les benchmarks. Mais le point ici est ça fonctionne bien et ça fonctionne ainsi que les autres frameworks. Mais, c'est pas tout. Donc, pourquoi nous devons utiliser un software open source ? Donc, pourquoi installer un software au-dessus de l'appli pour 3 ou presque pour 3 ? La première raison est que vous pouvez utiliser un API à chaque interaction d'utilisateur. Donc, c'est à peu près de 1 seconde que l'utilisateur parle d'un message. Donc, sur la conversation, ça peut fonctionner. Pour certaines industries, calling un API à chaque message ne fonctionne pas. Certaines industries, comme la banquing, la finance, la santé, le gouvernement, doivent juste avoir des données sur l'infrastructure. Raza a utilisé beaucoup dans la banquing industrie, par exemple. Et la sustainability, 3 services viennent et vont. Je ne sais pas si vous vous souvenez de Parc sur Facebook. Donc, c'était un service que beaucoup de développeurs mobile se sont réveillés. Ils justent le plug à un point. Et même dans l'écosystème, qui est le manager de la conversation sur Facebook, et INIT.AI, qui était une plateforme très promissante. C'est similaire en quelque aspect de ce que Raza fait. Ils sont discontinus pour INIT.AI qui a été acquiré par Apple et qui a fermé le service. Donc, vous savez que la version que vous avez sera toujours la dernière. Mais encore, ce n'est pas la toute la histoire. Qu'est-ce que c'est la toute la histoire ? La toute la histoire c'est que pas tout le monde veut être le restaurant Booking Bot. Pas tout le monde write clear sentences. Donc, nous allons voir ces deux exemples. Ok. Donc, il faut qu'il y ait un livre de flight pour Shikutimi. Oui. Les gens write comme ça, spécialement donc, n'oubliez pas le besoin que peut-être que ça va travailler avec d'autres systèmes, mais regardez BK et l'icône plane ou l'unicode string. Et c'est fréquent, pour exemple, si vous commencez à mettre un pizza sur votre téléphone, vous aurez une icône pizza qui va vous montrer. Donc, plus en plus, ces images sont des développeurs de chatbot. Nous devons les contrôler. Donc, BK pourrait être un livre pour nous, mais ça pourrait être un bateau, ça pourrait être un brake, ça pourrait être beaucoup de choses. Donc, c'est pourquoi ce n'est probablement pas un livre de flight dans des frameworks génériques comme API.ai ou WID.ai parce qu'ils construisent un modèle pour tous les outils, alors que nous sommes dans le vocabularie pour les besoins spécifiques de notre utilisation avec leur vocabularie. Donc, si nous sommes construits d'assistants pour étudiants, alors nous devons être capables pour ces nouvelles mots. Un autre exemple c'est que nous n'avons pas de nouvelles mots, mais nous avons des mots qui sont dans un contexte spécifique. Par exemple, ici, il y a GoShort sur EFX probablement un bateau de trade. Ici, GoShort signifie quelque chose comme sale. Non, pas vraiment, mais ce n'est pas un bateau de trade. Mais c'est le... GoShort a un sens spécifique que il faut être apprécié quand tous les mots seront groupés ensemble pour faire l'intense classification. Donc, comment nous dealons avec ça? Nous expliquons rapidement comment l'intense classification fonctionne. L'idée c'est de grouper les mots avec des meanings similaires. Si je veux boire des restaurants ou j'ai besoin de la table, je dis la même chose même si les mots ne sont pas les mêmes. Mais je veux que les chatbots comprennent que j'ai le même sens. Donc, je ne sais pas si vous êtes familiar avec les mots vector. C'est une technique utilisée en machine learning pour trouver... C'est un moyen d'attacher un sens similaires à un mot. Donc, un vector est la liste de nombre, mais car c'est un vector, il a une représentation spatiale. Et l'idée est d'exemple, d'exemple, la maison est similaire à l'appartement parce que la maison vector et l'appartement vector sont proches de l'autre dans cet espace vectoriel. Ok? Donc, les mots vector sont des mots vectoriel et les mots qui sont similaires à l'un de l'autre seront groupés ensemble. Donc, vous devez définir le sens d'un mot par les mots qui sont similaires à eux. Et pour un mot, vous pouvez prendre l'avantage des mots vector. C'est un moyen commun. Que jeantee, par la sorte que vous pouvez des mots aux享 rays, c'est bien aussi, cela fonctionne actuellement. Mais, pour que vousitez, car ça nachit Beau-H PowerPoint, c'est un moyen pour les mots pour les mots que nous ужасons hein. Si onTON c'est un mot, répondre, juste cet constat. de l'un à l'autre. Donc, c'est plus ou moins comment ça fonctionne. À la droite, c'est juste comme une illustration que je voulais montrer. Je voulais montrer des projections de vectors sur deux dimensions. Et vous pouvez voir, par exemple, que ici, tous les numéros sont groupés ensemble. Pour 1 million, 7, 3. Ici, vous avez... Oui, je ne peux pas le dire anymore. Mais oui, ici, vous avez des mots comme A, N, un autre, chaque, vous savez. Vous pouvez trouver des clusters dans les vectors qui travaillent avec des meanings similaires ensemble. Donc, sur les exemples. Qu'est-ce que vous pouvez faire avec nos exemples? C'est très simple, en fait. Ce que vous avez à faire, c'est redefiner ou définir les mots que vous voulez comprendre, la façon dont vous avez besoin d'en comprendre. Vous allez dire, ok, le vector pour BK est le même vector qu'un livre. Donc, quand le chatbot... Bien, le NLU va lire BK, il va comprendre le livre. Exactement, comme vous l'avez dit à votre enfant, le livre signifie réservation. Le livre signifie réservation. Et ensuite, il va associer le livre. Et vous comprendre que les deux mots ont le même sens. Donc, c'est quelque chose que vous pouvez faire quand vous contrôlez votre softwares et quand vous pouvez aller sous la coude. Et c'est... l'un des gros bénéfices de l'utilisation d'un softwares open source pour vos problèmes d'entraînement de langue naturelle. Bon. Donc, le NLU stack. Donc, vous avez votre data de traînement. Raza vient avec Spacey, c'est une dépendance pour ceux qui connaissent. Spacey va utiliser... va venir avec des vectors qui vont être utilisés pour l'utilisation. Raza... a aussi un psychotour dans ses dépendances et en utilisant les features, Raza va utiliser un modèle d'intense et un modèle d'entraînement. Ok. C'est pour la sake de la completité. Qu'est-ce qu'il y a? Le NLU? Vectors sont traînés. Il s'agit de l'esprit de ce stack parce que c'est un sujet, c'est un grand sujet, mais l'idée c'est que Vectors sont traînés sur un grand corpus de textes, c'est une Wikipedia. On va lire la Wikipedia et on va trouver des mots avec des mots similaires, et c'est pour ça qu'on comprend que les mots sont similaires. On peut parler de ça plus tard parce que c'est un grand objectif. Les vectors sont... Les vectors sont offerts dans Spacey. Spacey est de l'overlevel donc il y a des vectors en français, en anglais, en spain, et en quelques langues. Oui, c'est mon question. Qu'est-ce qu'on fait avec la dimension des vectors? C'est un objectif. C'est un objectif. Il n'a pas beaucoup d'exemple. Il est juste utilisé pour mettre les vectors dans Spacey. Vous savez qu'il y a un objectif dans Spacey. C'est un objectif. Il y a des nombres indépendant. Alors vous avez regardé votre vector Spacey? Est-ce que c'est un objectif ou un objectif? C'est un objectif d'utilisation. Mais c'est un objectif. C'est un objectif. C'est un objectif. J'ai jump into the second product, I have 8 minutes. Let me explain the problem Par exemple, j'ai dit à mon chatbot que j'aimerais envoyer 200$ à Jack. Et ensuite, le chatbot va décider si il a de l'information qu'il a besoin de procéder avec le paiement. Et il n'a pas besoin parce qu'il a besoin d'un compte source. Donc il va me demander, ok, de quel compte? Puis il expecte, bien sûr, quelque chose comme des salariés ou des checkings. Mais je suis humain. Donc, si vous demandez une question humaine, il va répondre avec une autre question. Ok, de quoi j'ai sur mon compte de checkings? Et ensuite il va croiser et cacher. Je vais dire, je ne comprends pas ce qu'il veut dire. S'il vous plait, dis-moi de quel compte vous voulez. Mais ce n'est pas ce qu'on veut. On veut le chatbot être, c'est une simple question, de quoi j'ai sur mon compte. Surtout quand j'ai besoin de décider de quel compte j'ai besoin de faire un paiement. Donc, idéalement, j'aimerais que le bot soit capable de répondre à la question et que ce soit retourné à la flotte. Maintenant, je suis dans ce secteur. Donc, vous voulez payer $200 pour Jack? Et ensuite, vous savez quoi? Je vais juste lui donner $150. Et la même chose ici. Non. Juste dis-moi oui ou non. Et ce n'est pas going to work well. Donc, bien sûr, vous pouvez ajouter des branches pour contrôler ces cases-là. Mais vous savez comment les cases-là travaillent. Le premier est libre, le second est cheap, le 10 est très expensif et le 100 détruit la machine. Donc à un moment, les cases-là ne fonctionnent pas. Et mettre des contrôles sur une conversation naturelle est très difficile. Donc, nous avons besoin d'une meilleure manière de prendre la conversation. Donc, c'est... C'est une conversation de flotte. Vous n'avez pas besoin d'y avoir. Ok? Donc, nous avons deux problèmes. First, nous avons besoin d'une façon simple d'expresser et de créer un dialogue. Et second, nous avons besoin d'une façon... Nous avons besoin d'un système qui va pouvoir partager avec une petite variation du script. Et c'est ce que Raza a offert. C'est ce que vous designz votre conversation dans Raza. Donc, vous ne programmez pas. Vous ne writez pas des codes pour votre flow de conversation. Vous le décrivez avec un exemple. Le premier exemple est très simple. C'est que je veux transmettre 80 dollars à John sur mon account de checking. Et puis, les bots disent Ok. Vous confirmez votre transfert 80 dollars à John sur votre account de checking? Oui, je le fais. Et puis, le chatbot envoie un transfert à la banque. Et quand il a des réponses, il dit Ok, le transfert va bien. Il n'y a rien d'autre pour aujourd'hui. Alors, bien sûr, tous les actions ici sont des codes derrière. Donc, les actions sont confirmées par le transfert. Il y a des codes Python qui vont faire des choses, d'application, etc. Les actions transmettent le même transfert. L'autre, c'est juste un print. Un autre exemple. S'il vous plaît envoyer 80 dollars à Cindy Oui, ok. D'où l'account? Sur le checking, s'il vous plaît. Ok. Vous voulez confirmé 80 dollars sur le checking à Cindy? Oui, je le fais. Et le transfert est exécuté. Un autre exemple. Ok. S'il vous plaît, envoyez 100 dollars pour la mission. Ok. D'où l'account? Combien de mes accounts? Ou vous avez 200 dollars sur votre account. Mais d'où l'account? Vous voulez faire votre paiement pour la mission? Ou pour le service? Ok. Vous confirmez 100 dollars pour la mission? Non. Vous savez ce que je vais donner? 150. Et puis, etc. Ok. Vous pouvez donner autant d'exemples que vous voulez. Comme ça. Et vous avez deux choses. Vous avez la memorisation. Vous pouvez reproduire tous les exemples comme ils sont. Et vous avez la généralisation. Vous avez appris les patterns des exemples et l'adaptation de nouvelles dialogues. À un certain point. Ok. Donc, pour ceux qui étaient inquiets sur comment cela fonctionne, vous avez vous définissez votre propre model carras. Donc, ici, vous voyez, c'est un simple R&N. Pour ceux qui ne sont pas familiar avec cela, les R&N sont un type de R&N qui s'adapte aux séquences et la conversation est une séquence. Et je vais vous montrer un exemple. J'ai eu trois mains. Donc, à la droite, j'ai tous mes exemples de training. Vous voyez, je n'ai pas tant d'exemples. C'est 240 lines. Donc, c'est 20 ou 22 exemples, je pense. Et je vais parler de l'abattement. Oui, Pierre? Non, je ne peux pas. Tout le monde peut lire? Oui. Plus ou moins? Cool. Ok. Donc, c'est le scénario que je vous montre. Et ensuite, je vais dire comment j'ai checké. Ouh, comment j'ai des savings. J'ai un point pour tout le monde. Et puis, je vais dire de savings. Et puis je vais dire, ok, vous savez ce que ils peuvent vivre avec seulement 150. Et après tout, je vais payer de mon account checké. Oui, je confirme. Ok. So, where is the magic? The magic is that in all those examples and we're not going to read them one by one now. But if you're curious, you can see afterwards and I'll show you. You will find examples where a user asks for its balance once between being asked from which account she wants to pay and confirming. You will have examples where the user changes the amount once after the confirmation but you will never have examples but there aren't examples where a user does exactly that. He asks twice the balance before confirming the source account and he changes twice the amount. Well, once the amount he wants the source account before submitting the transfer. So, it's not much. I admit that, but still it was able to adapt to something you he has never seen before with only about 22 examples. So, that's it. Thank you very much. If you want to reach me, I'm here but if I'm gone you can send me an email with that address. If you're interested in working with Raza, so please do have fun with it and if you're interested in getting paid for working with Raza, let me know. I have a lot of projects and I'm open to any arrangement, contract, part-time etc. Thank you.