 Bonsoir, Montréal-Piton. Good evening Montreal-Piton and welcome to Montreal-Piton 88, hypnotized statue. Bienvenue à Montréal-Piton 88, statue hypnotisé. Ce soir, on va avoir, après qu'on parle de l'heure de ce soir, deux petites choses à mentionner. Bien, joignez-vous à nous sur Slack. L'URL est ici, l'URL est dans la description du vidéo sur YouTube et on est dans le canal Meeting sur Slack et comme sur tous les autres endroits où vous pouvez mettre des commentaires. On vous invite à respecter notre col de conduite qui dit simplement, soyez excellent les uns envers les autres. Si il y a un problème, si vous voyez quelque chose qui vous semble pas excellent, trouvez-moi, Yannick ou Duc, qui s'appelle Duc sur Slack et dites-nous là puis on va faire notre possible pour régler ça. Et nous allons faire notre mieux pour résolver cette situation. Maintenant, aujourd'hui, nous allons avoir trois présentations techniques, tous focussant sur la machine d'apprentissage ou l'intelligence artificielle. Donc, premièrement, je vais finir de vous donner les mots à l'entraînement dans un moment ou deux. Et puis, Jean-Philippe va nous expliquer comment utiliser le processus naturel pour analyser les plateformes des parties politiques qui ont fait une guerre très difficile jusqu'à aujourd'hui. Et puis, George va nous expliquer comment utiliser un drone avec une automation de surveillance à la maison. Et puis Pablo va nous expliquer sur le papier un outil utilisant un notebook du Jupyter pour maintenir la recueil de cette recueil. Après ceci, nous vous invitons tous à nous rejoindre sur GTC. Nous allons avoir une heure de live ou une heure de virtual où nous pouvons avoir notre favorite drink et parler de code ou Python ou tout ce qui vous fait plaisir. Je répète ça en français rapidement. Donc, je vais terminer bientôt les mots d'ouverture. Et ensuite, Jean-Philippe va nous parler comment utiliser le traitement de langage naturel pour faire l'analyse des plateformes des parties politiques. Ensuite, George va nous parler de l'utilisation d'un drone dji-telo pour faire de la surveillance domestique, la surveillance de son domicile. Et ensuite Pablo va nous parler de paper, un outil qui utilise du Jupyter notebook pour se faire le suivi de ses lectures. Par la suite, on vous invite tous à vous joindre à nous sur GTC pour faire un apéro virtuel où on va avoir notre rafraîchissement favori et avoir des conversations soit de code, soit sur les élections, pas trop des élections, je suppose, et quelques sujets qui vous rend heureux. Autre chose à mentionner, on va avoir une soirée d'exercice pendant le mercredi prochain, le 29. Donc, c'est une soirée, on vous invite à vous joindre à nous. On a quelques exercices d'analyse de données déjà préparées avec Pandas. On fait ça sur Jupyter notebook et on fait essentiellement du code interactif. Toutes les informations sont sur Meetup. On va avoir un sprint de traduction du 15... Oh, c'est moi, je bafouille un peu. On va avoir un sprint de traduction du 15 octobre au 15 novembre. On va travailler sur la documentation officielle de Python, traduire ça en français et donc pendant un mois complet et idéalement, on va avoir une très bonne couverture de la documentation de Python 3.10 qui sort à peu près au même moment, au moment où la version finale de Python 3.10 va être publiée. Et comme toujours, vous pouvez vous suivre sur Facebook ou sur LinkedIn et on a le calendrier des événements ici qui est posté. Je répète ça en anglais. D'autres choses à mentionner. Donc, la semaine prochaine, on va avoir une soirée d'exercices pour faire des données d'analyse avec Pandas. C'est une session de live programmation. On vous invite à nous joindre, à voir comment nous utilisons Pandas pour faire des simple exercices avec des données d'analyse. C'est tout sur le notebook du Jupyter. Et ensuite, on va avoir un sprint de traduction du 15 octobre à la 15 novembre. Et on va chercher des gens pour nous aider à traduire la documentation officielle de Python 3.10 qui devrait être publiée à peu près à cette époque. Et nous suivons comme toujours sur Facebook et LinkedIn. Et vous avez le lien ici pour notre calendrier d'événement jusqu'à la fin de l'année. On remercie notre sponsor, FGNR, qui est hosté à notre heure virtuelle aujourd'hui. Et ensuite, il y a le crédit pour cette belle picture bleue-snake que j'utilise ici pour mon slide. Maintenant, avant de commencer avec notre première présentation, vous m'avez remarqué aujourd'hui que tous nos soucis sont en train de faire des formes de machine-learning ou d'autres. Et je l'ai ici, Don Shu, qui est hosté au podcast 26.1 sur machine-learning et il a un petit annoncement sur ce sujet. Bonjour Don ! Hey Yannick, comment allez-vous ? Ça va bien. C'est génial. Bien, tout le monde, oui. Oui, allez-y, Don. Vous êtes hosté à ce podcast, vous parlez de machine-learning, vous êtes invité à la machine-learning ou des researchers de l'AI chaque semaine ou chaque mois ? Nous avons été sur hiatus. Donc, comme part de notre revamp, je suis en train, et Brian Ray, qui est hosté avec moi, nous cherchons un troisième participant à nous joindre comme hosté et un éditeur du podcast. Donc, nous voulons planifier un relaunch et inviter cette personne à nous joindre à planir et à mettre en place un plan d'éditorial pour le podcast. À la date, nous avons publié 48 épisodes et nous avons inclus Travis Oliphant, Peter Wong, et Fernanda Perez, pour l'exemple. Brian Ray, c'est le directeur de management de ML à Mavenwave. C'est un subsidiarié de un giant français qui a un compte de 100 000. Je suis particulièrement intéressé dans l'intersection des disciplines. Par exemple, nous avons eu un guest de Lélie Emmer, qui est venu d'un background de coding, et elle travaille avec des biologistes pour les breakthroughs pharmaceutiques, par exemple. Et ces types de soucis sont très intéressants à moi. Mais nous aimerions inviter quelqu'un qui n'a pas l'air comme nous, pour nous joindre à l'autor de 26.1. C'est excellent. Oui, il y a beaucoup d'enseignements et AI en Montréal, donc j'espère qu'on va trouver la righte personne dans notre audience. Et je veux mentionner que le podcast est disponible sur Spotify. Où peut-on entendre les épisodes existants ? Spotify, Apple Podcast, c'est distribué partout. Vous pouvez aussi le trouver sur le site AI-podcast.com. Pour me contacter, je suis sur le slack. Et les emails sont très bons. C'est donn.chu.com, S-H-E-U.com. Je suis facile à atteindre. C'est parfait. Merci beaucoup, Don. Merci beaucoup, Janak. Merci, Montréal Python. Excellent. Et maintenant, on va voir le programme principal de la nuit. Alors, notre premier présentateur va être Jean-Philippe Brochu, qui va nous parler de comment utiliser le traitement de langage naturel en Python pour analyser les plateformes des partis politiques qui se battent très fortement jusqu'à aujourd'hui. Alors, notre prochain présentateur, notre premier présentateur va être Jean-Philippe Brochu, qui va nous parler de comment utiliser le traitement de langage naturel en Python pour analyser les plateformes des partis politiques qui se battaient très fort jusqu'à hier. Jean-Philippe. Thank you, Yannick, for the introduction. Merci Yannick pour l'introduction. Donc, c'est ça, dans cette heure d'élection, je me suis intéressé à toutes les données qui tournent autour des élections. Puis, j'ai trouvé que le langage Python, c'était un bon outil pour vraiment avoir une manière un petit plus moins subjective d'aller chercher cette information-là, puis de faire différents graphiques représentations pour prendre de meilleures décisions. Donc, ce que je vais vous montrer aujourd'hui, je vais commencer à vous montrer les diaposites que j'ai ici. Ce que je vais vous montrer aujourd'hui, c'est une analyse des différents partis politiques qui étaient faites à partir du débat des chefs qu'a eu lieu en anglais le 6 septembre. Donc, la division du 6 septembre, ce qui a été fait, c'est qu'il y a eu un site internet qui a eu l'aimabilité de retranscrire au complet le débat des chefs qui a été d'une durée de deux heures. Donc, ce qu'on fait, c'est qu'on utilise Google Collabs pour aller chercher l'HTML de ce site-là, si je montre les prochaines étapes ici, Google Collabs pour aller chercher l'HTML de ce site-là. Donc, on utilise, à l'intérieur de Google Collabs, on utilise Requests pour vraiment aller chercher l'HTML du site. Ensuite de ça, on utilise Beautiful Soup pour aller chercher à l'intérieur de ce HTML-là la partie qui représente les communications qui ont eu lieu pendant ce débat-là. Donc, ce soit Beautiful Soup, c'est vraiment pour focusser sur qu'est-ce qui nous intéresse exactement. Donc, ce qu'on obtient après ces étapes-là, et je vais vous montrer un petit peu plus tard dans Google Collabs à quoi ça ressemble, ça s'en vient très vite, on obtient une liste. Donc, à l'intérieur de cette liste-là, tout simplement, c'est qu'on la transfert en DataFrame. Et si on regarde à une des valeurs de cette liste-là, est-elle étapes brut, pour ça j'ai indiqué annoncées brut, c'est qu'il est divisé en trois parties. La personne qui parle, le moment exact ou cette personne-là a pris la parole, et qu'est-ce qui a été annoncé. Comme, par exemple, c'est Cool Evening, mais ça pourrait être des longues phrases-là, je peux valer jusqu'à cinq, six phrases, par exemple. Donc, si on revient à notre étape précédente, après avoir fait les étapes-là, d'aller stripper les données, puis d'aller prendre toutes les annoncées, puis on a amené ça dans un DataFrame, on obtient ceci. On va chercher nos données brut dans cette colonne-là pour se créer d'une nouvelle colonne. Donc, si je regarde ici les étapes, bon, à l'intérieur de cette valeur-là, il y a trois valeurs, en fait, et le non. Fait qu'on utilise une fonction pour aller chercher la première partie de cette valeur-là, une autre fonction pour aller chercher la deuxième partie, et une autre fonction pour utiliser la dernière partie. À cette étape-là, notre DataFrame contient l'information brut qui était décortiquée en trois morceaux. Vous allez voir que tout au long de la présentation, on continue à utiliser cette DataFrame-là pour ramener d'autres informations supplémentaires. Donc, c'est focussé sur cette DataFrame-là. Vous allez voir qu'avec ça, une fois qu'on a bien rassemblé notre information dans la DataFrame, on est capable d'utiliser différents outils pour représenter ces données-là, pour avoir des meilleures idées de qu'est-ce qui a été dit, par quel politique, par quel chef, pardon, à quel moment, qui interagit avec qui, quel genre de sentiments qui sont exprimés par les chefs au travers de leurs mots. Donc, c'est ça. Je vais vous amener directement dans Google Collab. Juste ici. Ok, donc, on va passer les étapes dans Google Collab. Je vais vous parler rapidement des hydrérées et modules qui sont utilisés. Pour ce qui est de la représentation, sous forme d'image, donc de diagrammes avec les flèches et les boules, pour voir un peu le flux de communication tout au long du débat. On utilise GravVis. GravVis, c'est un outil qui existe depuis quand même quelques années. Il n'est pas néboussé en Python, ça va très bien, c'est très pratique. NRC Lex. Donc, NRC Lex, c'est un outil qui permet d'aller voir à l'intérieur des mots, à l'intérieur des phrases, pardon, pour voir quel genre de mots qu'est utilisé. Puis ensuite de ça, on est capable de faire une représentation pour dire, ah, ces mots-là, ça représente tel type de sentiments. À ma grande surprise, j'ai vu que c'était développé au Canada par the National Research Council, l'Institut de recherche canadien. Donc, c'est ça. Vraiment, dans le Python, on peut être fiers d'être canadien. Et ensuite de ça, j'utilise aussi OpenAI pour faire un résumé de textes pour avoir vraiment une représentation plus concrète à haut niveau de ce qui s'est passé pendant ce débat-là. Donc, une fois qu'on a installé ça, il y a plusieurs librairies en passant qui viennent par défaut dans Google Collab parce que, comme par exemple Panda, on n'a pas besoin de l'installer, il est déjà là. Donc, les librairies au niveau d'importation, il y a le OS, qui est très souvent là. Après ça, il y a Panda qui vous crène à ses peut-être qui vous permet de facilement aménituler les données. Ensuite de ça, on va juste repartir le canal. Ok, parfait. Le vrai correct. Donc, au niveau des librairies qui sont utilisées, on a Request, on a Beautiful Soup, comme je voyais tantôt dans la présentation, Request est utilisée pour aller chercher l'HTML du site qui contient la transcription complète. Beautiful Soup est utilisée pour aller chercher exactement qu'est-ce qu'on nous intéresse comme communication. Je l'en ai parlé tout à l'heure pour les représentations graphiques. Il y a ensuite de ça, NLTK. NLTK, c'est un outil qui permet d'aller au travers des textes puis de faire une représentation plus simplifiée pour un ordinateur. Des fois, à travers des textes, on a plusieurs milliers de mots. NLTK, ce qui fait, c'est qu'ils regardent au travers de ces mots-là. Ils amènent la source des mots. Vous allez voir plus en détail par la suite. C'est aussi l'exe que j'en ai parlé au plénéal de le voir ça. J'utilise aussi un des paramètres pour être capable d'afficher une image dans Google Calabre. Donc, ceci est fait. On va l'assembler plus bas. Donc, première étape d'aller chercher le HTML du site. On utilise cette fonction-là ici qui va chercher l'HTML et vient nous ramener sur forme de variable, ça s'appelle HTMLData. Nos données d'HTML. Ensuite, on utilise la Parsware de BeautifulSoup pour aller vraiment chercher l'information et la transmettre du forme des listes. Ensuite de ça, on obtient ceci. Donc, si je reviens au slide de tout à l'heure, là, on est vraiment à l'étape ici. Donc, on a notre liste qui est là. On voit premier élément de la liste avec une virgule, deuxième élément de la liste. Au début, on voit speaker1, speaker2, mais ça commence en fait ici. Parce que, dans leur introduction, il y a eu des extraits d'anciens débat des chefs avec la chanson d'introduction. Mais vraiment, tout est retranscrit au complet. On partait avec un bon tapasette à la région. Donc, on ne gardera pas ces informations-là. Par la suite, on va vraiment se concentrer entre les interactions qui a été interviewé, qui a parlé après qui. C'était qui les interviewers, c'était qui les chefs et on. Donc, je vais enchaîner ici. Ah, je pense qu'il y a une installation qui n'a pas fonctionné. On va recommencer parfait. Je serais invité ça. Reparse.html Beautiful Soup Notre liste Et voilà. Ok, de toute façon, on voit déjà les images qui sont en-dessus. Donc, on est capable de voir vraiment de partir de notre tapasette au ferme zoo. Ce n'est pas compliqué, les cellules. Bien sûr, dans le feu de l'action, quelques minutes avant, ça fonctionne. Mais dans le feu de l'action, ça peut arriver que ça bloque. Donc, si je descends plus bas, on a ici un... on split notre tapasette. Et ensuite de ça, on a la fonction qui nous permet d'expliquer notre information. L'information expliquait en fonction de ce qu'on voit de notre tapasette. Donc, comme je disais, au début, on se sépare notre chaîne en différents morceaux. Ça, c'est notre premier séparateur. Donc, on regarde qu'est-ce qu'il y a à gauche de ça. C'est notre présentateur. Après ça, on regarde ici qu'est-ce qu'il y a à gauche de ça. C'est le temps à lequel les annonces ont été dit. Et en tout cas, ce qui est à droite complètement, c'est le narrateur. Donc, je ne pourrais pas le complé au complet, mais on va quand même avoir une bonne idée de ce qui se passe. Donc, ici, on utilise un liste comprienne pour aller couper en morceaux chacune des données de la fonction et on la ramène respectivement dans ces colonnes-là. Ensuite de ça, à cette étape-là, ce qu'on regarde, toujours notre tapasette de départ qu'on voyait tout à l'heure, notre information de base qui est ici à l'origine. Ensuite de ça, on les prend la première partie de ça ici. Donc, on les prend le speaker name à la pression d'attendre le temps à lequel ça a été annoncé et ensuite de ça, les mots qui ont été dit exactement. Donc, on continue ici. Ce qu'on fait ici à ce moment-là, c'est qu'on note qui était l'interprécuteur précédent. Donc, pour chacune des lignes, chaque fois ou quelqu'un a parlé, on note c'était qui exactement qui a parlé avant. C'est l'information qui est pertinente pour voir un peu les interactions entre les différentes personnes. Donc, par la suite, ce qu'on fait, puisque l'outil gravise doit être utilisé certaines clés pour mieux représenter les informations et que il y a certains politiciens qui contiennent, érenauto par exemple, contient un apostrophe dans son nom. Donc, j'ai utilisé les initiales. Avec Perkin, c'est très facile de sortir les initiales. Donc, on utilise vraiment la fonction Perkin qui est ici, qui nous donne nos initiales. Avec ça, on a été capables de créer ce qui nous intéresse. Si je descends plus bas, notre data frame, moi, ce qu'on est rendu dans notre data frame, donc, j'ai eu un peu de câlin de départ ici qui contient notre information brute. On continue à droite. On a les initiales de la personne qui parle et on a les initiales de la personne qui a parlé juste avant. Donc, c'est ça. Notre data frame grandit au travers du temps. On se rajoute de l'information supplémentaire. Cette pour ça que vous avez regardé, ici, j'ai noté par moi-même, j'ai fait deux listes différents. La liste des chefs, donc, les chefs des partis politiques et la liste des intervieweurs. Ceci va servir, sert ici à nous dresser une liste, nous faire une colonne en fait. Est-ce qu'il s'agit d'un chef qui est en train de parler? Est-ce qu'il s'agit d'un interviewer ou il s'agit de quelqu'un d'autre? Donc, avec cette fonction-là, ici, on appelle la fonction avec une liste compréhende pour aller peupler la colonne qui s'appelle speaker type. Ensuite de ça, on note le type d'interprocuteur. Donc, en fait, l'interprocuteur précédent, parce qu'encore une fois, on veut s'intéresser à qui qui parlait avant qui, parce que ça nous montre un peu les interactions pendant les différentes personnes. Ok, donc là, à cette étape-là, on est capable de faire certaines petites statistiques. Donc, les statistiques, c'est très de base à ce niveau-là. On commence petit. On s'intéresse au nombre de mots qui ont été dits par chacun des personnes. Donc, ça regarde à la fin, la colonne NB words, nombre de mots. Fait qu'à ce moment-là, précis, par exemple, ici, c'est l'intervieweur qui parlait au début. Elle a dit 97 mots. Ensuite de ça, Yves-François Blanchard qui a dit 2 mots, Blanchet, pardon, qui a dit 2 mots. On est capable de faire des 7 secs, puis, si on descend plus bas, ce qu'on fait, c'est qu'on regarde la quantité de mots énoncés, puis on regroupe par personnes que parlait et son type de le type de personne, s'il s'agit d'un chef ou d'un présentateur. Et on attient notre dataset de sommaire qui contient toutes ces informations-là. Donc, dans le débat, la personne qui a le plus dit de mots dans ce débat-là, précisément, c'est Justin Trudeau avec 3532 mots. Ensuite de ça, c'est Jack Minting avec 3517 mots. Aaron O'Toole à 3313. Et si on regarde la personne qui semble avoir le moins parlé, une moins dite de mots dans le débat, c'est Yves-François Blanchet avec 2417. C'est des statistiques sommaires, mais on va se rendre quand même plus loin de ça. Donc, ici, on a fait la même chose, mais on s'est intéressé au nombre de fois où il y a une interaction. Donc, bon, la personne qui a eu le plus d'interaction, ce qui est normal, c'est l'intervieweur. Sachee Curl a eu 153 interactions. Ensuite de ça, Justin Trudeau, 81 interactions et ainsi de suite, Yves-François Blanchet a eu 49. On va descendre plus bas. Le nombre de mots, le nombre de fois a pris la parole. Dans le fond, on a fait l'un divisé par l'autre. Donc, Amnipon est celle qui, à chaque fois qu'apprenait la parole, disait en moyenne 62.54 mots et François Blanchet qui est le deuxième chef, si on regarde ça mal et chef, en position dans le décompte, a 43.32 mots. Et ensuite de ça, on continue, on continue Justin Trudeau qui est à 43.6 mots. Donc, c'est sûr qu'ici, il y a un impact aussi entre le fait est-ce qu'il y a eu des interruptions habituellement, dans le débat on sait bien, peut-être, le monde n'a pas tout le temps de compléter leurs idées mais ça me donne une idée de à quel point il y avait des interactions fréquentes et c'est qui qui a eu quand même la chance de peut-être un peu plus compléter ces idées par rapport à d'autres. Si on descend plus bas maintenant. On s'intéresse à faire une représentation du débat sous forme de schéma. C'est à ce moment-là qu'on utilise gravis. Donc, il y a deux étapes, de deux étapes dans ce moment-là. On a notre notre fonction qui nous permet d'obtenir notre data frame qui va bâtir les nœuds de notre diagramme si on peut le dire. Donc, les nœuds ça représente les personnes qui parlent donc, cette fonction-là nous permet de tenir ça. Ensuite de ça la fonction qui permet d'obtenir les edges, donc les edges on parle de flèches. Donc, les flèches de notre diagramme cette fonction-là retourne à data frame qui contient notre information. Et ça c'est simplement la fonction qui prend les data frames qu'on a vu juste avant, les fonctions et qui ramène sous forme de en fait qui écoutent le petit gravis pour nous permettre de voir ces informations-là. Donc, encore une fois, ça c'est les nœuds et ici c'est les flèches, les edges. Donc, une fois qu'on compile tout ça ensemble, ça nous donne un graphique de ce genre-là. Et plus la flèche est large, plus il y a eu une quantité grande d'interaction avec cette personne-là. Donc, la meilleure de lire cette information-là, c'est lorsque Justin Trudeau parlait, Justin Trudeau a parlé plusieurs fois après, par exemple Erin O'Toole, Jack Ninting et l'interviewage Sachi Kearl. Par contre il n'a pas parlé, on voit la largeur ici de la flèche, il n'a pas mais ça m'a parlé beaucoup après un mini-port. Donc, ça donne un peu une idée de la stratégie d'utiliser le débat. On voit que Justin a voulu focusser son énergie sur Erin O'Toole et Jack Ninting. Donc, c'est ça. C'est un peu inconsciente dans le feu de l'action, on ne voit pas ces genres de choses qu'on ne voit pas nécessairement mais en faisant, en utilisant le Python pour traiter ces données-là. C'est un genre d'information qui me permet de voir. Donc, je me suis intéressé un même genre de choses pour chacun des chefs. Jack Ninting, Jack Ninting beaucoup d'interactions avec Justin Trudeau, Sachi Kearl, un petit peu Erin O'Toole mais pas beaucoup et François Blanchet. Donc, la ligne n'est pas épaisse. Si on continue plus bas, Erin O'Toole. Donc, Erin O'Toole beaucoup avec Justin Trudeau, un peu Jack Ninting, pas beaucoup avec Erin O'Toole et Annanie Porte, pas beaucoup avec François Blanchet. Annanie Porte. Donc, Annanie Porte, elle, elle avait une stratégie un petit peu différente. Elle semble avoir répondu beaucoup après Jack Ninting. Beaucoup plus qu'avec Justin Trudeau. Donc, c'est comme si elle semblait vouloir convaincre les éteurs après que Jack Ninting avait parlé. C'est peut-être, ça avait pas fait partie de la stratégie politique. Des fois, dans les débats, on voit qu'il y a vraiment beaucoup de personnes, mais j'ai l'impression que, selon leur stratégie, pendant qu'une certaine personne parle, ils sont en train de passer à leur chose pour que, lorsque la personne cible se met à parler, qu'il soit prêt à répondre. Donc, si on descend plus loin, maintenant, et François Blanchet, on se remarque, c'est vraiment que répondu à la question, il a souvent été la première personne à répondre à la question de Sashi Girl, mais par la suite, lorsqu'on embarquait dans le débat, au niveau des interactions avec les autres personnes, il n'y a pas eu beaucoup d'interactions à ce niveau-là. Donc, on a re-sablé toutes ces informations-là ensemble à cette étape-là, et on s'intéresse donc, plus les flèches sont larges, on parle une fois à la largeur de la flèche, plus il y a des interactions. Si on regarde, à l'oeil, le débat il y a eu beaucoup d'interactions à Jack Ninting, Justin Thudeau, qui est Aaron O'Toole. Comme on voyait avec Anna Nicole, il n'y a pas eu nécessairement beaucoup d'interactions avec Justin Thudeau, donc elle n'a pas souvent parlé après Justin Thudeau, mais elle a plus souvent parlé Anna Nippon, après Jack Ninting. Donc, on continue notre projet un petit peu plus loin, et là, on s'est intéressé à trouver une manière de simplifier notre texte. Ce qu'on fait, on utilise NLTK, à l'heure de NLTK, on a différents outils qui nous permettent de simplifier notre texte. Donc, on a ici un exemple. Lorsqu'on stime un texte ou une partie de texte ou une phrase, c'est qu'on ramène les mots à leur origine. Donc, on a un exemple ici Chocolataise, Chocolatelie, Vanoramie Choco. Donc non seulement on diminue la longueur de nos phrases, mais d'abord et avant tout, on diminue le nombre de mots, la variabilité du nombre de mots qui sont utilisés dans notre texte, pour que ça soit plus facile à comprendre pour un ordinateur. Donc, ici, on continue ici à simplifier notre texte. Je vais vous montrer un petit peu plus bas. Ici, on élève les stop words. Donc, les stop words NLTK, contient une liste de stop words en anglais. Donc, ce qu'on fait, c'est qu'on élève ces mots-là encore une fois pour que ça soit plus facile à comprendre pour un ordinateur. Ici, on a la fonction qui enlève nos stop words. Je vais vous montrer un exemple de ce que ça nous donne, qui est un petit peu plus clair. Donc, après avoir passé toutes ces étapes-là, j'ai pris une phrase, comme exemple, pour vous montrer un peu qu'est-ce que NLTK peut faire sur un texte pour le rendre plus facile à comprendre pour un ordinateur. Donc, j'ai vraiment apprécié la question et j'ai envie de dire bonjour à tous ceux qui l'entendent. Une fois que cette phrase-là a passé au travers de nos filtres qu'on vient d'avoir, ça se résume à really appreciate question once a good even everyone tuning in. Fait que la phrase a ratiste, mais aussi elle vient un petit peu plus robotique. Fait que c'est plus facile pour un ordinateur de la comprendre. Fait que si on traduit en français, c'est, j'ai vraiment, la partie du haut, c'est, j'ai vraiment apprécié la question et je veux dire bonsoir à tout le monde qui vient d'arriver. Et si on fait la partie traduit du bord en français, c'est vraiment apprécié question veux dire good bonne soirée tout le monde qui arrive. Donc, c'est un petit peu plus robotique, mais c'est plus facile pour un ordinateur après d'aller chercher ces données-là. Donc, au niveau des émotions, parce que là, il y a aussi l'ex qui était capable d'aller voir dans chacun des mots, les mots robotiques, si on peut dire. C'est quoi les émotions qui ont été témoignées pendant cette, tout ce débat des chefs-là. Donc, si on regarde plus bas, en fait, ici on a déjà certaines informations, si on regroupe, si on regarde plus bas ici, on est capable de voir qui a exprimé, par exemple, plus de anger dans ses propos peut-être des mots plus stressants. Au niveau de la trust, de la confiance, bien sûr c'est le policien. Il y a tous des bonnes cotes en trust. Il y a les mots qui ont exprimé pendant leur communication du débat. Ils ont tous aspiré une certaine confiance. Si on regarde un niveau des policiens, la personne qui a la meilleure cote au niveau de la confiance c'est François Blanchet, suivi de ce qu'on fait, c'est qu'on utilise Plotly pour représenter ces données-là sur une manière un petit peu plus acréable à l'œil. Donc on obtient ceci. C'est un peu, j'ai pas pris tous les paramètres tous les types d'émotions qui peuvent être transnés au travers des mots. J'en ai pris quelques-unes. Mais ça nous montre un peu où est-ce que c'est possible que chacun des policiens se positionne par rapport à son vocabulaire. Donc on voit surtout envers, on voit Erin O'Toole qui est ici, on voit qu'il se distingue un petit peu des autres. Donc au niveau de Langer, donc l'excitement il se tient plus bas dans son type de vocabulaire. Au niveau de la surprise un petit peu plus haut que les autres. Puis on voit que pour les autres on peut en enlever quelques-uns. Mais on voit maintenant Yves-François Blanchet par rapport à Justin Trudeau. Justin Trudeau exprime un petit plus de peur dans ses mots que Yves-François Blanchet. Ça nous permet de voir un petit peu une représentation très sommable où se situe un policier par rapport au mot qu'il exprime. On va continuer ici avec tout. Je me suis intéressé à ce moment-là. Différents segments dans notre schéma de communication. Lorsque Justin Trudeau communiquait et que Jack Minting était la personne qui avait parlé avant qu'est-ce qui était dit à ce moment-là? Donc j'ai sorti toutes les phrases. On voit ça ici. Ce que j'ai fait, j'ai utilisé OpenAI qui est un API qui est disponible depuis peu qui était entreprimé sur des milliards de paramètres qui nous permet de faire plusieurs choses dont résumer des textes. Donc j'ai utilisé je ne peux pas vous montrer ma clé mais j'ai utilisé WeQuest. J'ai fait des requêtes pour aller chercher l'information en propos de comment OpenAI résumait des gros textes en quelques mots et j'ai obtenu ces réponses-là. En dessous de ça, dans cette réponse-là du texte qui a été summarisé en quelques mots, j'ai en plus enlevé les stop works pour avoir de quoi d'encore plus concis et j'ai fait ça pour quelques fonctions. En dessous de ça, j'ai encore utilisé Gravity. J'ai continué un peu le graphique qu'on voyait d'interaction des différents chefs entre eux. J'ai utilisé ça pour représenter certains segments. Donc si on regarde au niveau des communications que lorsque Erin Auto répondait à Justin Trudeau, les mots qui ont été en fait les sujets qui ont été traités à ce moment-là, on parle de Canadian Voice Absent China donc l'absence de la voie de la communication du Canada en Chine. On parle de 300 villes canadiens. J'imagine qu'on va parler du Covid. Hong Kong, on parle de Huawei, Michael, les droits humains, l'ONU. J'ai n'essayé d'appartrer les premiers acheteurs de maison et les taxes d'achat pour les maisons. J'ai aussi fait un deuxième segment. J'ai pas fait toutes les segments parce que je ne voulais pas non plus que ça devienne trop long. J'ai aussi fait un deuxième segment donc c'était intéressé à toutes les communications qui étaient faites par Justin Trudeau et que c'était Jack Menzing qui avait parlé juste avant. On suppose qu'il y a eu quand même une interaction entre les deux. Les sujets qui ont été traités c'est les droits humains, les changements climatiques, le Canada, les États-Unis, G7, la Chine et autres. Donc c'est ça. De cette manière-là j'ai voulu un peu vous exprimer à quel point le Python est un langage pour faire différents schémas, différents graphiques mais en plus on parlait de la formation au travers des textes pour vraiment avoir une meilleure idée pour simplifier dans le fond un débat et d'avoir une représentation globale de tout ça pour voir où est-ce que ça positionne les candidats au niveau de leur vocabulaire au niveau à quel point quels sont les sujets qui traitent au niveau de leur stratégie aussi parce qu'on voit que certains qui ont tendance à répondre plus avant donc c'est ça. J'espère que vous avez apprécié la présentation. N'hésitez pas s'il y a des questions ou autres, ça me ferait plaisir. Merci beaucoup Jean-Philippe. J'amène Duc qui va souhaiter notre modérateur de questions pour cette session et je rappelle à tout le monde que vous pouvez poser vos questions soit sur Slack ou dans les commentaires du livestream sur YouTube et je laisse Duc modérer le tout. Merci Yannick. Jean-Philippe pour ta présentation c'est très intéressant je ne savais pas qu'on peut faire plein plein de choses comme ça des analystes comme ça. J'ai une question c'est moi qui je ne connais pas très bien un grand fils est-ce qu'il n'y a pas d'autres comme on dit internaïf de grand fils ? Oui Yannick c'est quand même d'autres j'avais la chance de l'utiliser dans le passé je n'ai pas eu besoin de l'apprendre mais est-ce que j'aime de gravier c'est son principe donc il est très simple si on va faire une boule suivie d'une flèche après ça de nos boules on écrit A-B et il va faire ce dessin si on écrit C-B il va comprendre que le B existe déjà il va faire les deux segments entre eux donc on a besoin de dire il y a une relation entre ceci et ceci une relation entre ceci et ceci et une fois que tu définis toutes tes relations il est capable de trouver la meilleure la plus optimale de représenter ce schéma donc si tu as beaucoup d'interactions il va mettre plus au centre par contre des choses qui ont moins d'interactions il va mettre plus à l'extérieur c'est comme ça qu'on a réussi si on a appelé différentes personnes d'abord ok je vais google un peu sur un grand vise aussi est-ce qu'il y a une façon pour qu'on puisse voir ton code pour qu'on participe ton code il est sur Google Collab je vais le publier on peut regarder ensemble comment on peut le rendre disponible pour tout le monde ok c'est bon je suis la partie de la clé d'API que je ne pourrais pas vous montrer mais la reste je pourrai vous montrer ça ok c'est bon mais aussi Google Collab je n'ai jamais utilisé je ne sais pas s'il y a une façon facile de partager ça mais bref on en discute peut-être on peut envoyer le lien par coréen au membre plus tard ok merci pour ça je vois pour être sûr qu'on n'a pas d'autres questions je pense que tout est bon je pense qu'on est bon pour passer à notre présentateur excellent merci Jean-Philippe excellent et notre prochain présentateur va être Georges je dois regarder mes notes Georges Georges et mes notes qui ne sont pas là ça ok je vous régule ça ok notre prochain présentateur va être Georges Adamopoulos qui va nous parler d'automatiser la surveillance domestique avec un drone TGI TELO Georges Adamopoulos va nous parler de automater la surveillance avec un drone TGI et interestingly enough Georges est le author de l'intelligence et de l'introduction et aussi le founder de Neptune Financial et ici il est Georges je ne pense pas que j'ai votre écran Georges, si vous voulez partager ça je vais vous l'introduire ok vous pouvez voir mon écran je le vois, excellent merci bonjour tout le monde je suis Georges et je vais vous parler un petit peu de le drone TGI et j'ai l'occasion d'avoir le drone et un petit peu de ma histoire et de comment je suis allé faire ce projet, donc je vais juste partager un petit point de power ici peut-être que tout le monde le voit ok cool donc le drone TGI qu'est-ce que c'est donc essentiellement c'est un drone et malheureusement ce n'est pas assez d'expenses, c'est beaucoup plus d'expenses que les drones je pense que la dernière fois j'ai checké c'est environ 100$, 150$ en Amazon donc ce n'est pas assez d'expenses comparé à des drones que le DJI fait et essentiellement et ça a juste coulissé dans la closette pendant quelques années et je n'ai pas vraiment payé de jouer avec ça d'exception d'étendre le téléphone et faire ce genre de choses mais essentiellement ce qui s'est passé c'est que j'ai commencé à prendre des codes et des pysons spécifiquement j'ai commencé à penser que c'est assez cool si je pouvais coder le drone et faire des choses basées sur le code Python donc j'ai commencé à faire de la recherche c'est probablement un moyen de faire ça parce que quand j'allais connecter avec mon téléphone j'allais connecter avec un réseau wifi et mon téléphone m'aurait envoyé des commandes sur le drone sur un réseau wifi donc j'ai décidé que c'est probablement un moyen de faire ça même si j'ai hâte de coder mais pourtant quand je suis allé online j'ai trouvé différents libraries que je vais vous montrer très vite et ces libraries sont essentiellement créées une interface où vous pouvez essentiellement communiquer avec le drone et il y a déjà pré-programmés des fonctions dans les libraries qui vous permettent de faire des choses comme le drone je veux que vous aviez de plus de 50 mètres et de plus de 5 secondes et de plus de 5 secondes et des choses comme ça qui vous permettent de faire le drone faire toutes les couleurs pour que vous puissiez aller au côté de la gauche mais c'est plus cool que ça et je vais vous montrer ce que c'est plus cool que ça c'est que je réalise que ce drone a un petit caméra et ce que vous pouvez faire avec le Python c'est qu'on peut avoir le fait d'un feed live de vidéo pour arriver à votre computer et ce que ça fait c'est que ça vous permet de faire des choses avec ce feed vidéo donc comme une vision de computer que vous pourriez faire une source vous pouvez faire ça live sur le DJI Telotro en utilisant les libraries comme OpenCV et FaceRecognition donc ça ouvre un whole host de possibilités parce que maintenant votre drone peut voir donc vous pouvez reconnaître des objets vous pouvez reconnaître des gens ou vous pouvez faire des choses comme ça et vous pouvez essentiellement créer une autre chose où votre drone peut faire des choses c'est essentiellement ce qui m'a inspiré de travailler sur ce projet et oui, c'est tout et le projet c'est juste un drone la version que je vais vous montrer c'est juste ce que c'est c'est qu'il y a un keyboard sur votre computer vous connectez à ça sur votre computer et le keyboard vous permet comme un jeu de vidéo pour aller sur le drone vous utilisez A-W-S-D pour bouger le drone sur le 2D plane vous utilisez la clé A-W-S-D pour bouger le drone la clé A-W-S-D et la clé de la droite pour bouger comme ça c'est ce que le keyboard vous permet et puis la version OpenCV la caméra ici vous permet de reconnaître les gens comme vous êtes physiquement en volant donc, vous regardez pourquoi j'ai fait ça ? c'est génial c'est cool j'aime juste le faire et j'ai toujours pensé de meilleures manières sur comment improvement j'ai travaillé récemment sur comment faire ce type d'autonomie et faire apprécier la maison et puis le voler pour aller sur le drone d'en faire plus de machine j'ai bien sûr Amazon avec un produit comme ça c'est cool ok je vais vous montrer le code mais c'est le geste de les libraries que j'ai utilisé DJI TelloPie quelqu'un a fait ça c'est un github repository et ça m'a aidé pour connecter avec un Tello drone CV2 OpenCV NumPie m'a aidé à faire des arrays de chaque frame pour que vous reconnaissiez les valeurs différentes face recognition c'est juste un moyen facile de reconnaître les faces et faire des encodings qu'on va parler plus tard keyboard c'est juste un clé logger c'est juste quand vous cliquez S ou W ou A ou up arrow ou down arrow pour que vous puissiez faire le drone pour que vous puissiez jouer un jeu importation de temps est importante parce que le drone continuellement ou plus vite comme votre WI loop c'est tout de suite un WI loop pour que vous puissiez envoyer quelque chose pour que vous puissiez mettre un peu de buffer et puis envoyer la prochaine commande juste pour ne pas overloader le drone il y a des problèmes qui se passent et puis le threading pour que vous puissiez faire un peu de processus en même temps et je suis sûr qu'il y a des moyens de faire ça mais le threading a travaillé bien pour moi c'est tout de suite mais le threading pour que vous puissiez faire un peu de processus en même temps et pour que vous puissiez faire un peu de processus je sais que le multi-processing serait probablement mieux mais le threading c'est juste ce que j'ai utilisé ok donc les 3 parts de ce code sont part 1, contrôler le drone avec un keyboard part 2, reconnaître le drone avec la caméra et part 3 on va continuer dans le wild donc, on va vérifier le code si vous regardez ici c'est la même chose que avant sorry, le laptop je ne vais pas pouvoir rouler le code live sur ce laptop je vais essayer de rouler sur un autre laptop la raison pour laquelle c'est comme je l'ai dit le seul moyen de contrôler le drone c'est qu'il faut avoir une connecte wifi et pourtant je peux avoir une connecte wifi pour mon router pour que je puisse faire ce stream pour le drone en même temps donc je vais devoir rouler sur un autre laptop mais j'ai une vidéo live pour que les gens puissent voir comment ça marche donc, importez les mêmes libraries comme avant puis on va créer un objet ici essentiellement connecter pour ouvrir le stream et je ne pense pas que j'aille mettre ça dans le powerpoint mais j'ai aussi importé ce library essentiellement ce que c'est c'est pour les computers windows c'est pour les computers pour que les computers puissent dire quelque chose donc, par exemple, vous verrez j'ai eu une chose si elle reconnaît ma mère ou un de mes amis ou quelque chose comme ça c'est quelque chose spécifique par rapport à qui elle est ok, c'est la première chose ok, avec Height avec Height le bandwidth entre le computer et le telodrome est restricte car le telodrome ne peut pas transmettre de la vidéo de haute qualité ou de la qualité de qualité comme des interactions en haut je ne suis pas sûr que le bandwidth est mais ce n'est pas trop haute donc vous avez dû restricter l'un de ces pixels pour que vous puissiez faire ça donc ce sera plus tard c'est quand on utilise l'un des émissions face recognition. Et essentiellement, vous avez des images et vous êtes en train de les lire et de créer un code face en code avec eux. Et essentiellement, c'est un grand array que vous pourrez reconnaître plus tard. Donc, comme vous pouvez le voir ici, j'ai un pour moi, mon nom est George, mon père, mon maman, et un couple de mes amis ici. Donc, alors que vous faites des codes face, vous assignez-les à un nom. Donc, mon nom est assigné à moi, mon maman est assigné à mon maman, mon père est assigné à mon père, et ceci et ceci. Et je vais voir si je peux... J'espère que je ne vais pas le faire, si je le fais. Mais si je peux retourner pour une seconde, juste pour vous montrer ce que les images que nous utilisons sont. Oui. Donc, pour l'exemple, ce serait l'exemple de la picture que nous utilisons. Donc, c'est la picture que le drone va utiliser et base itself off of to recognize me. Et puis, every time it recognizes me, it's gonna be based on the fact that my face looks similar to the face encoding, that it has every time it imports my image and creates it. So, that's pretty much it. Okay. So, that's the basic stuff that has to happen before you run any code. Next is you're creating a CV2 rectangle, which essentially is you're creating a rectangle where you're gonna define the frame, the left, the top, so the frame is the frame, but the left, the top, the right, the bottom, and the name. And essentially, you're going to draw a little box on top of whatever it's like flying around. You can draw a box around a person and have that person's name. So, if it's flying around and it sees me, then I can see on the screen that it says, as a box around my face and it says George. So, that's a little part there. Then, face recognition. So, essentially, this is where the tello drone is gonna keep sending frames and I'm gonna interpret them as CV2. So, it's gonna come as a frame. It's gonna look through the facing coatings to see if any of the faces is anywhere and it's gonna define the top, right, bottom, left of the face. And then, based off of that, it's gonna say, okay, we know this is George or we know this is like, if it doesn't know, it's gonna say it's unknown or if it's my mom, it's gonna say Voola, something like that. So, then, after that happens and after it recognizes the face, it's gonna say hello face and name, which is the name of the person. And then, it's gonna say, if name equals whatever, you can make it do specific actions. Like, it had a point where, if it saw one of my friends, then it would like run after my friend and try and go towards and kind of thing. Now, I just have been doing better things like just saying, would you like to fly the drone? Can you please make cookie dough? Hi, you're a clown, chess game? Whatever, stuff like that, that's more safe. And then, wait, you're resizing the frame, putting the text on the frame and then you're showing the image on the actual screen itself. So, that's the first part. The next part is actually getting the keyboard input. So, here's all the values for, like when you're actually plugging in, I can show this now. When you have RC control values, you're gonna tell the drone at every point whether or not you want a value to be zero, one, whatever, where you want it to go and what that means essentially is, are we moving to the left? Are we moving to the right? Are we moving forward? Are we moving backwards? Are we moving up? Are we turning? And that's what those values mean. So, you obviously wanna set those values to all be zero at the beginning. You can set a speed, so you can set 100 or 50 and that will change the speed that your drone is gonna interact with. It's gonna go fast, it's gonna go slow, what that kind of thing. And then, as you click a button, it's gonna essentially say, so if I click a, for example, that's gonna mean LR is left-right and LR is gonna turn negative 100, so it's gonna go that way. And then LR, if I click the D, D button, it's gonna mean LR is gonna go to 100, it's gonna go all the way in the opposite direction and the drone's gonna go towards the right. So, that works for the left-right, front-back, up-down, turn clockwise, counterclockwise, landing, takeoff, flip forward, whatever, and then you return this value at the end. And then the last thing you've got to do is the threading. So, I recognize this isn't the best use of threading, but it works somehow, but you essentially have to thread the code so it actually runs properly and then you plug the values and send them, send RC control in a while loop, essentially tell the drone what are you doing and then this is the little speed value or you tell the drone to not receive it or the code to stop sending something for a little while. Sorry, wrong thing here. Okay, so that's the three parts of the code. And the consequences of not threading in the code is that the communication between computer and drone is too slow and the computer is gonna be looking for, for example, face recognition when it should be telling, like, receiving the keyboard clicks and actually doing that loss of control over the drone. I've had an instance where the drone recognized someone and is flying towards them, but I can't stop the drone because the drone is busy, like, the computer is too busy trying to figure out who that person is and then it just smashes into them. So, that's why threading is a good thing. Okay. So, this is the video demo. I'm just gonna play it on YouTube because it's easier to do so. But this is a quick video demo. I apologize because the mic is not the best. There's a little issue with the mic, but it should still work if I'm not mistaken. All right. Sorry, it's taking a little while. My Wi-Fi's not the best. We're gonna just do a little quick demo of my drone running in action. So, you see the code now, let's see what it can actually do. So, first things first. Sorry, I changed the e-coli, by the way. First, you go back to the drone, out back, the computer has connected to the drone, and as soon as it starts, you can output consistently about light. You can see no expected response what the computer is actually telling the drone to do. So, now, this little file here should be able to see. So, now we can actually see what the drone cameras. So, if I'm taking my drone and I move it, you can see that we can look around here. Let me look around a little bit, around my kitchen. And just to show you a little bit of the PageStrike recognition feature, if I go like this. Hello, George. Would you like to fly the drone? So, it says, hello, George. Would you like to fly the drone? That's the input that I had, like, on the computer, say. You can see that as I move around, it recognized. Now, I got my drone down, and I'm gonna make it fly. And we're gonna go towards my mom on the other side of the room. And we're gonna see if it can recognize her and how we go tomorrow. So, all right, we just took off. Gonna go towards my mom. Oh! I will see if it recognizes her. Hello, Gula. Can you please make the cookie dough? So, essentially, the drone just said, hello, Gula. Can you please make the cookie dough? Can you please make the cookie dough? So, the reason for that is because, when I made this drone, I wanted my mom to make cookie dough. But you can see that, as I fly around the room, it recognizes the purpose. Hello, Gula. Can you please make the cookie dough? Can you please make the cookie dough? And you can see that, as many people as you want, I can interact with them as well. That's a cool demonstration. So, that's my short video demonstration. And now, hopefully, we can get the live demonstration going. So, sorry, there's a little bit of a little issue with the quality of the video. But hopefully, I can get this drone to work. So, I'm gonna run it on another computer. And sorry, it's not working right now. Give me one second. So, essentially, what I'm trying to do is I'm just gonna try and get the drone to connect to my laptop. And then, once it connects to my laptop, I can fly it around or just kind of show it live as it's working. But I've been having issues with my computer where it doesn't connect to a Wi-Fi, there's an issue with the Wi-Fi card, and that's what's happening right now. So, here, I'm just gonna try to restart it quickly and I'll continue on with the rest while I do that. So, essentially, essentially, so, the rest of that, so that's essentially the project, it's just creating that, that the next goals, as I said before, are to have the drone fly itself around and do something more like that, maybe do different kind of ideas, maybe try and do obstacle cores or try and do different things aside from people's faces. But I like this project that helped me learn a little bit more about how to use this kind of stuff. And it actually really taught me why Python is a language that a lot of people like because it was really easy to do face recognition with Python. You saw it, it took three lines of code to recognize a matrix. And there's not a lot of other languages that can do that and that's why Python is pretty special, in my opinion. So, it really helped me to do that. And the last thing, sorry, the last thing is that, as said before, when he was introducing me, I have published a book and actually a couple of weeks ago, that's what I spent the last couple of years working on, called Artificial General Intelligence. It is available on Amazon. If you're interested, type my name in, type in Artificial General Intelligence and you'll see that. This is one of the areas that obviously artificial intelligence, something I'm pretty passionate about. And if you're interested, take a look. And I think I have the drone working now. So we should probably get a cool demo like that. Okay. So essentially what I'm gonna do now, so I have my drone is on, my drone's Wi-Fi network is now available. So I'm able to connect on my, so I have another computer here too. And this is my computer where I have the code that's gonna be able to run on it. And I hope it works cause it's been giving me a lot of issues lately. Okay, sorry, false hope. It's not working, sorry about that, but thanks guys for listening. And I appreciate it. Merci. Thank you George. That was very interesting. And I'm gonna bring back who's gonna be our moderator for the questions. Okay. Thank you Yannick. Thank you George. It's look like you have a lot of fun to do that project. Okay. And I thought you showed the Python library. And if I understand correctly, it is on Kithop, right? Ah, it is on Kithop. Okay. Yes, the only thing is to read. Sorry? Yeah. Are you still there? Oh, I think we lost. Yeah, I'm here. That's right. I think I can hear you now, so. Okay cool, yeah. Yeah, I mean it's also, it's Amazon who did the code and put it on Kithop so everybody can use and share and everything. Ah, no, not the tello drone that's made by someone else. I'm not actually sure who that's made by. But Amazon has made something pretty similar. It's not a tello drone, but it's a drone that kind of charges and flies around your house. But it's kind of similar to what I'm doing here. But no, that that's made by someone else. I can share that as well if you'd like. Okay, yeah, yeah, yeah, yeah. Okay, yeah. Ah, yeah, let me see if we have a lot of, if we have another question from a meeting or I don't see any question. I think. And are you gonna stay with us for the Sencassette? Maybe you can fly your drone live to show us at the Sencassette. Sure. Okay, cool. Yeah, I think we're gonna move on to the next presenter and we will chat with George after the Sencassette to see the live show. Okay, thank you George. Thank you George. Thank you Janik. Excellent. Et maintenant on va passer à notre prochaine présentation. Alors on a Dr. Pablo Duboué qui est un scientifique indépendant. Un des membres de l'équipe originale de IBM Watson, l'intelligence artificielle qui avait joué à Jeopardy et un des co-fondateurs de la compagnie et un enseignement co-fondateur de la compagnie. Un des, je ne sais pas comment on disait ça au passé. Co-fondateur de la compagnie Éredite Science à Montréal et auteur de The Art of Feature Engineering on a beaucoup de auteurs sur l'intelligence artificielle ce soir. Qui va nous parler? Le paper, un outil qui utilise Jupiter notebook pour suivre vos lectures. Alors notre prochaine présentateur, Dr. Pablo Duboué, un scientifique indépendant qui est un des membres originaux de l'IBM Watson, l'intelligence artificielle qui avait joué à la TV show Jeopardy et aussi co-fondateur d'Éredite Science et auteur de The Art of Feature Engineering et il va nous parler sur le paper un outil pour suivre nos lectures dans la compagnie. Bonjour tout le monde, c'est très, très sympa d'être là-bas à Montréal-Python. J'ai mis mon premier talk à Montréal qui était hosté par Yannick en 2011 sur l'LTK et en fait c'était quand j'ai commencé à apprendre Python. Donc mon talk d'aujourd'hui est plus concerné par le programme de développement et de l'intelligence artificielle. J'ai eu un autre talk que j'aurais donné sur l'encryption homomorphique pour la machine-learning que je vais parler à la fin. Le talk d'aujourd'hui est plus sur comment construire le software dans un moyen d'avoir des personnes qui communiquent avec le programme. Et l'idée ici c'est que tous les jours c'est un programme. La compétition de l'église est vraiment en train de cacher. Et vous pouvez l'avoir remarqué particulièrement avec la pandémie tous les gens semblent apprendre le programme et plus en plus un testament à le succès de la communauté Python c'est aussi que tous les gens sont en train de apprendre le programme Python. Donc quand nous regardons le développement traditionnel vous avez un bac-end qui encapsule les états dans la forme d'un ou plus d'autres objets et un frontend qui expose une fonctionnalité spécifique du bac-end d'objets. Il y a beaucoup d'objets. Premièrement la fonctionnalité nouvelle dans le bac-end c'est un bouton de l'air quand il s'expose aux utilisateurs parce qu'il y a une fonctionnalité nouvelle dans le bac-end et le frontend doit être construit. Encorement il s'agit d'utiliser les utilisateurs spécifiques dans l'interface. Combien de fois vous avez eu des gens complotés sur des changements sur les websites qui resultent dans les dégâts favoris des workflows. Et un autre aspect est que nous restons les utilisateurs par l'imagination et les skills du programme et du software. Et en fait même ceci c'est l'une des questions pourquoi beaucoup de fois l'open source n'a pas réussi à atteindre son potentiel. Oui, si nous pouvons obtenir tous les utilisateurs pour aussi utiliser les skills et l'imagination pour augmenter le software alors l'open source va avoir quelque chose qui va faire en comparaison avec le software propitarié. Donc dans cette l'alternative de la développement de la software traditionnelle c'est ce que j'appelle la philosophie de Smalltalk Smalltalk, une langue très grande depuis les années 70 et 80. Dans cette langue tous les utilisateurs sont développeurs et il n'y a pas de distinction entre programme et l'utilisation du software. Et tout se passe dans un environnement intégré. Pour cette philosophie il devrait être très naturel pour les développeurs Python, parce que Python est une langue très routée sur l'interprète qui a des sépareils, la commande de l'aide, la commande de l'air et d'autres sortes de commandes qui font apprendre dans vos libraries pour l'exploration interprète un pattern très commun pour les développeurs. Et ça peut être plus d'extendant en utilisant les frameworks du Jupyter qui permettent d'améliorer les éléments de l'Ui custom. Donc ces éléments de l'Ui custom ont donné un talk sur Monreal Python. C'était mon dernier talk dans Monreal juste avant de vivre dans la ville de l'utiliser l'Ui Widgets pour un petit prototype et l'interface de l'utilisation. Maintenant, après ça j'ai voulu une étape plus j'ai réalisé pour le particulier que j'avais construit. Je n'ai pas besoin d'un meilleur UI. Ces widgets dans Monreal et Jupyter Notebooks étaient les meilleurs UI pour le tool. Et le tool itself c'est appelé PAPER et c'est l'avis d'assurer un tract de choses que l'on a écrit en utilisant Jupyter Notebooks. En fait, ce tool est assez difficile pour les gens qui travaillent en AI aujourd'hui c'est le nombre de nouvelles informations publiées dans le fil. C'est très, très difficile d'assurer un tract de toutes les choses que l'on read. Oui et pour lire le papier de recherche c'est un peu beaucoup d'efforts qui sont derrière. Alors, pourquoi le lire et ne pas l'oublier? D'accord? En fait, les recherches ont pris tant de temps de lire et tant de temps de garder la metadata. Vous savez, de garder les crames pour trouver cette information encore. Dans l'information retrieval, ce qui est un des fields que j'ai travaillé sur, il y a un concept qui s'appelle Known Item Search. Oui. C'est différent d'un moment que vous cherchez pour quelque chose que vous ne savez que cela existe. Known Item Search signifie que vous vous vous recueille quelque chose et que vous savez que cela existe et que vous essayez de le trouver. Donc, ce problème a été très, très, très rare. Et ce qui est régulièrement important, c'est que vous êtes en train de trouver des blogs que vous avez recueillis et que c'est probablement que Google gagne les liens sur medium.com qui est très bien à tourner Google sur ses web pages. Donc la façon d'enfuir a eu ces petits coups et les coups ne sont pas nécessairement et différentes personnes ont différentes clés, oui. Donc, dans mon cas personnel, normalement je ne m'en souviens pas le titre ou les autres de la paper, mais je m'en souviens, oui, ce papier est relevant à quelque chose que je veux faire et je suis en train de regarder ce papier. Je m'en souviens quand je l'ai lu, comme l'espace physique où je l'ai lu, ou comment je l'ai lu dans l'application physique. Je m'en souviens quand je l'ai lu sur mon téléphone, sur un tablette, oui. Je m'en souviens aussi comment je l'ai trouvé et qui l'a approximé. Donc, en gardant ce type de metadata et en permettant les gens à choisir quel type de metadata qu'ils veulent avoir, c'est ce qu'ils ont fait pour écrire ce tool. Ce tool s'appelle le papier, c'est un acronyme sur l'artif et le papier repositorien. J'ai commencé en 2012, donc il a été développé pour beaucoup, beaucoup d'années. Je l'ai très récemment utilisé à l'open source. Ce truc est plus de construire un software Python dans une façon petite. Si vous voulez voir un truc exclusif sur le tool, j'ai un lien sur l'écran et c'est aussi sur YouTube. Mais le tool, le basis, c'est qu'il a un modèle de data qui est un single file. C'est un appareil d'attribut de l'artif et de l'artif représenté dans un file Yaml. C'est une main-map avec un biptexte qui est un format d'expression des références. Dès le modèle de data, il y a deux autres components qui sont optionnels. Il y a un file repositorien qui est un manager d'asset digital qui va copier les différents PDFs ou d'autres sources de papier dans une base basée de base basée dans le système de file. Finalement, il y a un enjeu de recherche qui extracte tous les textes des PDFs, l'indexe et vous permet de faire différents types de queries, particulièrement un exemple de query où vous pouvez trouver des papiers similaires à l'existence. Et dans la présentation, j'ai le lien, j'ai un tout... walkthroughs through the tool, et d'abord, ce que nous allons faire maintenant, c'est un brief. Donc... C'est dans Github, et c'est le docteur d'Avslash's paper. Et c'est un des samples notebooks qui créent un projet de scratch. Donc... C'est... C'est un p variable, c'est l'indexe de papier. Et... Comme vous vous interviendrez, le state de l'objectif change, et vous pouvez voir cette version hash pour vous donner une idée de... le state de l'objectif. C'est ce que l'entrée d'Avslash's BipTecs qui ressemble à... C'est un format d'Latex, ce... Le système de papier de papier de l'an 70, créé par Don Nuth. Donc ici, c'est une entrée qui a un nom, un autre, un titre, qui a été publié en un an. Et de cette façon, nous avons importé cette entrée. Et chaque note dans ce graph, c'est aussi un Python fictionnel, donc il peut être utilisé et utilisé dans cette session Jupyter Notebook comme on veut. Et... Parce que ce repos a été ouvert avec Autosave, ce file Yaml a été créé, et nous pouvons voir. Et... Nous pouvons aussi ouvrir avec un objectif séparé, et voir que... Donc c'est ce que le file ressemble à, et c'est la entrée que nous avons créée. Nous pouvons aussi ouvrir avec un objectif séparé, et la version hash sera la même. Et maintenant, c'est ce que j'ai mentionné, que l'utilisation des widgets custom, vous avez un peu plus d'interface intéressante. Nous pouvons le rendre dans une bonne façon, et nous pouvons aussi éditer. Oui. Donc, ce code pour éditer, c'est très bon, en utilisant les clôtures et les modifications dynamiques. Donc ici, nous pouvons, par exemple, dire que je veux ajouter une entrée particulière, par exemple, un chapter. Oui, et maintenant, nous pouvons dire que c'était un chapter 5. Oui. Et... Si nous venons ici, encore, et nous disons... Je veux voir... ce note, oui. Maintenant, il y a un chapter 5. Ok? Donc, en cette façon, travailler avec le programme devient un dialogue de programme, et nous pouvons interagir, en tant qu'aide pour différentes fonctionnalités, commencer à créer de nouvelles topics, et l'un des plus grands aspects est de créer ces formes fulles, les notes fulles, oui. Et si ces formes sont pointées à un file particulier, le système va ingérer le file pour le manager de l'asset digital, pour ce démon, je ne fais pas ça. Et par exemple, ici, nous pouvons dire, ok, c'est le... Houvell et Wiesel, c'est la perception visuelle, oui. C'est la personne, etc. Et puis, nous pouvons commencer à ajouter les entrées, comme les textes VIP, nous avons juste ajouté. Donc, ici, nous pouvons choisir le note que nous avons créé, et, comme vous le voyez, nous commençons à développer le note, et nous disons que c'est lié au sujet de la vision computer, que c'est une autre chose que nous avons créée. Et puis, nous pouvons prendre ces notes. Oui. Et... C'est aussi une liste d'entraînement. Je veux lire ces papiers. Et... A eux. Et encore, c'est un render. La autre chose qui vous permet, c'est d'exporter tous ces websites statiques que vous pouvez utiliser sans avoir Python. Et... Je voudrais vous montrer un peu de... un peu... un peu de AI ici. C'est l'un des aspects textiles. Donc ici, le système fait un peu de papiers que j'ai publié. Actuellement, cette partie, je pense, je vais donner un peu de Python Et puis, il va lire ces papiers, il extracte le texte et il les store dans une search repository. Et là-bas, vous pouvez faire des searches similaires. Vous pouvez regarder les textes extractifs et faire des enquêtes similaires. Les enquêtes similaires sont très utiles pour une variété de choses et sont aussi utiles pour les systèmes de recommandation. C'est ce que j'ai, et c'est tout en Github. J'ai utilisé ce tool pour écrire mon livre « The Art of Future Engineering ». Le livre a environ 300 citations. J'ai eu un third dans le livre. Qu'est-ce qu'il y a d'autre ? Ce tool est 100% Montréal. Il a commencé à Fulhab. J'ai eu beaucoup d'aide et d'encouragement par Rupert Brooks. J'ai présenté mon livre « Montréal Python » et Jörg Peristerakis. J'ai aussi eu beaucoup de discussions sur le modèle de data. C'est disponible dans Github. J'ai utilisé un livre « 10,000 lines of Jupyter notebooks ». Il a 5 case studies. Tout ce qui s'appelle « Open Source ». J'ai publié un livre sur « Data Science for Tourism ». J'ai utilisé un livre « Airbnb open data » en utilisant PySpark. Le livre « No Books » n'utilise pas les numpies. L'exemple des numpies est aussi dans le même livre que l'autre livre. J'ai utilisé un livre « Machine Learning ». J'ai récemment donné un tutoriel sur « Machine Learning over encrypted data ». Mais vous pouvez voir le matériel là-bas. J'ai ouvert des questions. J'ai regardé la chute avec vous. Merci beaucoup. Merci Pablo et je ramène Duc pour la période de questions. C'est bon. Merci Yannick. C'est toujours le fun de ravoir notre présentateur. On a eu ça depuis des années. Avec les choses victuelles, ça nous ramène. Mais ça nous fait toujours chaud au cœur. Si tu comprends bien, tu es à Bencouverte. Oui, mon coeur, c'est vrai. Mais malheureusement, avec la maladie et la pandémie, c'est difficile de faire la voyage. C'est un peu loin de Montréal à Bencouverte. C'est bon. On fait notre présentation victuelle. Tu peux toujours nous rejoindre. Je pars avec toi. Je regarde à même temps sur Slack et sur Youtube Canon. Je ne vois pas de questions en ce moment. Je pense que de toute façon, il est assez tard. On peut tout aller à Ottawa. Si il y a d'autres gens qui veulent nous poser des questions, ils peuvent nous rejoindre. On continue à chasser là-bas. On peut avoir le lien pour Jindy? Oui, Yannick. Je reviens. Je mets ça à l'écran à l'instant même. J'ai une petite note. Si vous êtes impatient, vous ne voulez pas attendre que je le mette à l'écran. Vous pouvez regarder dans la description du canal Youtube. C'est là. J'ai un Daniel qui est prêt à rentrer. Ici, MP87. Ah, c'est voyé. L'URL est très simple. C'est PiMTL-MID.FGNR.CO FGNR est notre commanditaire qui héberge notre rencontre virtuelle. C'est SlashMP88. Qui s'appelait, vous l'appelez peut-être, Statue Iptatisé. L'URL, pour la version Happy Hour, c'est très simple. C'est dans la description du vidéo Youtube, qui devrait être cliquée là-bas. C'est PiMTL-MID.FGNR, notre commanditaire.Ca. SlashMP88. Qui s'appelait, Statue Iptatisé. Je veux vous dire, on a usually a a satisfaction survey at the end of this, of these meetings, but we don't this time, because maybe we were thinking that this survey is constricting your thoughts on the feedback you would like to give us. So if you have some feedback, please send it to us as a Slack comment or by email or whatever is your favorite way of communicating with us. We would love to hear your thoughts about what kind of meeting, what kind of topics we should be covering and if you enjoy just like we do, to do things like translation sprints. On that, thank you everyone and we see you on GC for the virtual Happy Hour. Bye bye.