Tags:
create new tag
, view all tags

Stage de Alexis Guyot - IUT Dijon - [3/04/18 au 22/06/18]

Important : cette page est réservée au suivi du stage, merci de ne pas la modifier

Informations générales pour les stagiaires

Pour toute information concernant ce stage : contacter André, Sébastien, Thomas

Sujet

Stage (Avril - Juin 2018)

Accès au chatbot : http://130.79.128.184:8084/Chatbot_v1/

Avril

  • 3,
    • arrivée
    • présentations et inscriptions à TWiki et Gitlab
    • Lecture des rapports et remarques des prédécesseurs (Aymon et Pierre)
    • Installation de Netbeans
    • Etude détaillée du code fait précédemment
      • Difficultés :
        1. Le javascript ne s'initialisait pas au chargement de la page
        2. A la création du Tagger, exception levée (le chemin du fichier ne peut pas être considéré comme un chemin de classe)
        3. Problème similaire avec la ligne d'en dessous, concernant le DepedencyParser (ValideServlet, ligne 33)
      • Solutions :
        1. La fonction d'initialisation s'appelait init(). En changeant le nom en initialisation(), tout fonctionne.
        2. Le MaxTagger n'est plus créé à partir du chemin du fichier mais est créé à partir d'un InputStream.
        3. A travailler le lendemain.
  • 4,
    • Résolution du problème restant de la veille : il fallait ajouter dans le CLASSPATH un lien vers le Models de coreNLP, nettoyer et reconstruire le projet (lien 1).
    • 14h : Réunion avec les tuteurs, rapide présentation des chatbots créés lors des projets tutorés et établissement d'une liste de tâche à faire pour la suite :
      • Pendant + ou - une semaine : étude de simbad, vizier et sesame + familiarisation avec environnement
  • 5,
    • Etude approfondie de Sésame : fonctionnement et sortie XML.
    • Familiarisation avec le langage astronomique avec début d'un lexique.
    • Début d'étude de l'ADQL et de SimbadTAP.
    • Création d'un petit programme Javascript qui questionne Sésame, récupère le XML, le parse et affiche les informations obtenues sur SIMBAD.
      • A finir sur ce point : Revoir le parseur (actuellement ne gère pas les balises auto-fermantes et les balises contenant d'autres balises (juste les balises de la forme <balise>contenu</balise> en fait)).
  • 6,
    • Suite du travail sur le parseur. Tout marche correctement maintenant. Le programme récupère également les données sur NED et Vizier et les affiche toutes. (pour plus tard, le code afin de récupérer des données sur ces plate-formes via Sésame est fonctionnel)
    • De 10h à 12h : Café et conférence sur le futur du planétorium et du jardin des sciences.
    • Approfondissement sur TAP, et notamment sur VizierTAP.
    • Amélioration du programme afin de proposer un mode où seuls les synonymes/autres faà§ons d'appeler un objet astronomique sont gardés (et affichés). Cela permettra plus tard de proposer de généraliser ou d'affiner la précision d'une recherche.
  • 9,
    • Séminaire d'accueil
    • Suite de l'étude de TAP (Simbad et VizieR)
    • Implémentation dans le projet javascript Test du requêtage avec TAP
    • Ce projet-ci permet également maintenant de remonter uniquement les coordonnées après requête à Sesame (utile pour VizieRTAP)

  • 10,
    • Point rapide avec André concernant le plan pour le reste de la semaine :
      • Finir le petit programme de test en permettant à l'utilisateur de préciser son intention
      • Isoler les parents/children/siblings de SIMBAD
      • Réfléchir à comment créer un contexte lors de la discussion (souvenirs des intentions passées, ...)
      • Se renseigner sur le machine learning pouvant être couplé au chatbot
    • Fin du programme
    • Prise de notes concernant le deep learning et comment ce dernier est utilisé dans le domaine des chatbots.
    • Recherches sur des technologies et des concepts de mémoire pour chatbots : LSTM, GRU.
    • Installation de rasa core pour quelques tests autour du machine learning.
  • 11,
    • Suite et fin de l'installation de Rasa Core et NLU.
    • Elaboration de quelques petits chatbots de test grâce à la documentation de Rasa pour manipuler les outils de machine learning proposés par la bibliothèque.
    • Rédaction d'un document de synthèse sur toutes les recherches et lectures concernant le machine learning et l'apport d'un contexte pour un chatbot.
  • 12,
    • Travail sur Wit.ai, un moteur de traitement du langage naturel créé par Facebook dans la même veine que Luis.ai, mais complètement gratuit.
    • Création d'un bot test pour tester les limites de l'API (pas ultra convaincant pour l'instant, à voir).
    • Mise en place dans le programme Test d'un mode pour requêter Wit.ai, récupérer l'intention de l'utilsateur et les mots importants pour obtenir les bonnes informations.
    • Premier lien entre Wit et Simbad pour répondre à l'intention la plus simple : L'utilisateur veut une information sur un objet.
    • 14h : réunion pour faire le point sur l'avancement et sur la suite.
      • Objectifs de la semaine :
        • Finir le requêtage VizierTAP
        • Récupérer les parents, enfants et frères (liens entre les objets) par Simbad.
        • Etudier et comparer différents moteurs de traitement du langage naturel utilisables et viables pour le projet.
  • 13,
    • Implémentation dans le programme Test du requêtage VizieRTAP : Informations tirées de deux catalogues parmi ceux proposés, le plus populaire et le plus récent.
      • Remarque : Après beaucoup de cheveux arrachés, tout fonctionne. Champagne.
    • Documentation, commentaires et ré-organisation sur la quasi totalité du code pour en faciliter la compréhension.
  • 16,
    • Travail sur les liens de parenté entre les objets astronomiques sur SIMBAD.
    • Implémentation dans le programme Test de nouveaux modes pour obtenir les enfants, les parents, ou les deux d'un objet depuis SIMBAD.
    • Mise en place d'un système de "preview" pour obtenir quelques informations générales (nom principal, type d'objet, coordonnées et type spectral) sur un objet astronomique survolé avec la souris.
    • Quand on clique sur un objet possédant une preview, une requête SimbadTAP est lancée sur l'objet en question pour obtenir toutes les informations possibles.
    • Ajout d'un bouton "back" pour revenir à l'étape précédente.
    • Ajout de l'affichage des unités quand c'est possible pour les résultats des requêtes TAP.
  • 17,
    • Etude de différentes solutions de traitement du langage naturel.
    • Etude (très) approfondie de DialogFlow : lecture de la documentation, création d'un bot test.
    • Création d'un vrai bot DialogFlow adapté au projet : entrainement pour matriser correctement l'intention "what is the [measure] of [object] ?"
    • Implémentation du requetage DialogFlow dans le programme Test.
  • 18,
    • Création d'un tout premier prototype de chatbot capable de comprendre les "small talks" (fonctionnalité fournie par DialogFlow) et l'intention basique citée précédemment.
    • Cette v0.1 du chatbot vérifie que l'objet existe grace à Simbad, si oui requete d'abord Simbad, puis VizieR en cas de dernier recours (le catalogue le plus populaire et le plus récent).
  • 19,
    • Suite du travail sur le prototype de chatbot :
      • Débugage d'une partie du système de requêtage.
      • Amélioration de la partie "small talk"
      • Implémentation de l'intention "try again" que l'utilisateur peut déclencher s'il n'obtient pas la réponse qu'il souhaite sur Simbad. Quand l'intention est déclenchée, la même requête est effectuée sur VizieR avec l'aide du contexte DialogFlow.
      • Mise en place d'un système d'historique pour se souvenir des dernières requêtes de l'utilisateur pendant la session en cours (historique créé à la première requête, détruit lors de la fermeture de la page).
      • La barre de recherche propose un système d'autocomplétion basé sur l'historique.
    • Rapide debriefing avec André sur l'avancement du projet. A faire d'ici mardi :
      • Rapport complet sur DialogFlow : présentation, avantages, inconvénients, politique de confidentialité, ...
      • Implémenter plus d'intentions.
      • Rajouter une étape intermédiaire entre Simbad et Vizier pour requêter Ned.
  • 20,
    • Quelques tests sur NED.
    • Rédaction d'un document de synthèse sur Dialogflow.
    • Séminaire sur les galaxies riches en hydrogène.
    • Entrainement du chatbot.
  • 23,
    • Rédaction d'un mail au service support de Dialogflow afin de les questionner concernant leur politique de confidentialité.
    • Création d'un nouveau bot miroir du premier, afin de pouvoir développer de nouvelles fonctionnalités sans craindre de tout casser.
    • Implémentation de nouvelles intentions dans le moteur du bot :
      • get_count pour les questions de type "How many ...". (Cette intention est pour l'instant comprise mais non-interprétée dans le code, à faire demain)
      • get_parents pour obtenir les parents/généraliser une étoile donnée.
      • get_children pour obtenir les enfants/préciser une étoile donnée.
    • Implémentation dans le chatbot des requêtes sur la hiérarchie (enfants/parents) et du système de preview.
    • Quand on clique sur un objet possédant une preview, une requête est faite à Simbad pour obtenir un maximum d'informations possibles sur l'objet. Le résultat est affiché dans un nouveau message.
    • Correction d'un bug avec les menus dépliants de jQuery (ils étaient appliqués à travers un id au lieu d'une classe CSS, ce qui faisait qu'un seul menu était affichable à la fois sur la page).
    • Les informations obtenues de SIMBAD s'affichent maintenant toutes dans un menu déroulant, pour éviter au maximum les longs messages très encombrants.
  • 24,
    • Correction d'un bug non-géré pour l'instant concernant les requêtes à TAP VizieR. Parfois pour un objet donné la requête pour trouver le catalogue le plus populaire fonctionnait, et celle concernant le plus récent échouait pour une raison inconnue.
      • Raison : Certains catalogues possédent un '+' dans leur id, qui est interprété et remplacé par un espace lors du décodage de l'URL pendant un requêtage HTTP.
      • Solution : Remplacer le '+' par son équivalent encodé soit '%2B' (voir partie bugs connus).
    • Ajout d'un message temporaire contenant un gif de chargement pour simuler le fait que le chatbot écrit pendant qu'il attend les réponses des différentes requêtes.
    • Les requêtes VizieR, toujours en deux temps (catalogue le plus populaire, puis le plus récent), affichent maintenant leurs résultats au fur et à mesure qu'elles les obtiennent plutà´t que tout d'un coup à la fin (réduit le temps d'attente sans réponse du chatbot de moitié).
    • Entrainement du chatbot, le taux d'erreur sur les intentions implémentées jusque-là est maintenant très faible (à part pour l'intention get_count, voir partie bugs connus ci-dessous).
    • Rajout d'une nouvelle intention "show_image" qui est capable d'isoler l'objet demandé et éventuellement une longueur d'onde à afficher.
    • Gestion dans le code de cette intention (pas de prise en compte de la longueur d'onde pour l'instant).
      • Il reste un bug quand on veut afficher plusieurs images à la suite.
    • Réunion avec Sébastien et André : Présentation de l'avancement et discussion de nouveaux objectifs :
      • Essayer de modifier la distance de Levenshtein en ramenant à la même taille les deux chaà®nes avant comparaison.
      • Améliorer l'ergonomie des réponses : Proposer un système de formatage par type de mesure, récupérer la vignette du catalogue, ajouter des liens vers les pages Vizier pour les catalogues, vers des liens biblio pour les bibcodes.
      • Regarder thesaurus-uat.
      • Se pencher sur la question de l'aide à la saisie.
      • Récupérer les siblings --> Enfants des parents.
      • Fixer le timeout.
      • Déployer l'application sur un serveur pour pouvoir le tester à distance.
  • 25,
    • Réponse de l'équipe de Dialogflow à propos de la confidentialité --> Modification du pdf sur Dialogflow pour préciser la dernière partie.
    • Modification du système de vérification de la distance de Levenshtein pour prendre en compte l'idée soulevée lors de la réunion d'hier. Il s'avère que c'était une bonne idée, tout fonctionne comme voulu maintenant.
    • Les noms des catalogues sont maintenant des hyperliens qui renvoient vers VizieR.
    • Les bibcodes sont maintenant cliquables et renvoient vers la page Simbad dédiée.
    • Création d'une fonction pour récupérer les siblings (dans le programme test, pas encore implémentée dans le chatbot).
    • Correction du bug avec aladin et l'affichage de plusieurs images de suite :
      • Problème : l'API Javascript d'Aladin-Lite utilise un id pour localiser l'endroit où afficher les informations. Or, alors qu'un id est censé être unique, demander plusieurs images de suite revenait à créer plusieurs messages avec le même id.
      • Conséquences : Seul le premier message affichait l'image. D'autres bulles étaient créées mais ne contenaient que le nom de l'étoile et un grand espace vide.
      • Correction apportée : La div aladin est remplacée à chaque fois que l'utilisateur veut une nouvelle image par une capture png de l'écran qui était affiché.
    • Entrainement du chatbot.
    • J'ai commencé à regarder pour mettre à disposition un serveur local à travers Ambari pour rendre accessible le projet depuis d'autres machines. (bloqué à l'étape 2 de la création d'un cluster)
  • 26,
    • Travail sur l'autocomplétion :
      • Implémentation d'un système qui autocomplète mot par mot --> Bien mais pas le plus intéressant possible (il faudrait le coupler à un algorithme de prédiction de texte)
    • Recherches sur les algorithmes de prédiction de texte (comme sur les téléphones portables). Les arbres PATRICIA pourraient être intéressants, à creuser demain (J'ai envoyé un mail au prof avec qui j'avais travaillé les arbres pour connaitre son avis, en attente d'une réponse).
    • Travail sur l'historique, pouvoir récupérer les dernières questions posées en appuyant sur les flèches haut et bas.
      • PS : L'historique rentre en conflit avec l'autocomplétion puisque les flèches haut et bas servent aussi à choisir un élément de la liste d'autocomplétion
    • Séance planétarium.
  • 27,
    • Suite du travail sur l'autocomplétion/prédiction de texte.
    • Séminaire sur le traitement des images astronomiques.
    • Implémentation d'un algorithme de prédiction de texte (fonctionnel), puis d'un autre un peu plus évolué (non fonctionnel).
  • 30,
    • Reprise du travail sur la prédiction de texte un peu plus évoluée, les résultats ne sont pas très convaincants.
    • Ajout de la prédiction de texte (celle fonctionnelle) dans l'interface du chatbot.
    • Ajout d'une nouvelle intention pour récupérer les siblings
    • Implémentation du code de récupération des siblings dans le code du chatbot.
    • Amélioration de l'animation d'attente de réponse.
    • Modification du code pour permettre un formatage de réponse particulier pour certaines mesures récupérées de Simbad.
    • Création d'une mise en forme pour la parallaxe (identique à celle proposée sur Simbad).

Mai

  • 2,
    • Suite du travail sur le formatage des réponses pour certaines mesures :
      • Le type spectral, accompagné d'un sticker dont la couleur s'adapte en fonction de la couleur de l'étoile
      • Les coordonnées, affichées en décimal et en ICRS
      • Le mouvement propre
      • Le redshift/radial velocity
      • Le type d'objet
      • Les flux
    • Implémentation dans le code de deux nouveaux types de requêtes vers SIMBAD : une pour récupérer les flux (magnitudes), et une pour le type de l'objet (la version rédigée et longue), deux types de données non présentes dans la table principale.
    • Mise à jour de la mise en page des previews + correction d'un bug présent jusque là (les données affichées étaient celles de Sirius à chaque fois).
  • 3,
    • Etude d'une solution pouvant etre mise en place concernant les intentions de type "how many", plusieurs questions se posent à propos de ce point, à voir pendant la prochaine réunion.
    • Reprise totale du système d'historique : Suppression de l'autocomplétion jquery pour pouvoir récupérer les précédentes entrées avec les flèches haut et bas.
    • Modification de l'algorithme derrière la prédiction de texte, le précédent étant trop lent avec un gros corpus de mots.
    • Déploiement d'un serveur Tomcat pour accéder au chatbot depuis l'extérieur. Ceci est maintenant possible à cette adresse : http://130.79.128.184:8084/Chatbot_v1/
    • Entrainement du chatbot.
  • 4,
    • Matin : Café + Séminaire (ajout de commentaires dans le code avant)
    • Implémentation dans Dialogflow et dans le code d'une nouvelle intention liée aux catalogues :
      • Obtenir une liste de catalogues en fonction de certains paramètres : nom du catalogue, type d'objet étudié, nom de l'objet étudié, mesure présente + possiblité de préciser comment ordonner les résultats (par date ou par popularité).
    • Messages d'erreurs plus explicites.
    • Tentative de début de conception objet pour rendre le code ouvert à l'extension mais fermé à la modification (principe O de SOLID) --> Il semblerait que la PO ne soit pas très adaptée dans notre cas, à voir.
    • Correction de bugs, notamment avec Vizier (voir partie bugs connus).
    • Entrainement du chatbot.
  • 7,
    • Rédaction d'un document récapitulatif des fonctionnalités disponibles avec le chatbot.
    • Création d'une étape de désambiguisation pour l'intention avec les catalogues car beaucoup de confusion entre oid et otype (ce qui est normal au fond, un humain non-initié à l'astronomie aurait le même problème).
    • On peut maintenant préciser la longueur d'onde dans laquelle on veut une image.
    • Ajout d'un message d'accueil dans lequel le chatbot explique rapidement ce dont il est capable. En cliquant sur les fonctionnalités proposées, un nouveau message est rédigé dans lequel plus de précisions sont données. Parmi ces précisions, on peut aussi trouver entre 1 et 3 phrases types sur lesquelles on peut cliquer pour les obtenir directement dans la barre de recherche.
    • Réunion avec André.
  • 9,
    • Reprise à zéro d'un algorithme de prediction de texte/autocomplétion fait main puisque rien sur Internet.
      • Conception et mise en place d'une structure inspirée par le fonctionnement des bases de données.
      • C'est un petit pas pour l'homme mais un grand pas pour le chatbot : celui-ci est maintenant capable d'autocompléter un mot quand il est en cours d'écriture et de faire de la prédiction pour le suivant.
      • Implémentation de cette nouvelle fonctionnalité dans le code.
      • Amélioration de la structure pour prendre en charge un système de score qui s'incrémente quand un mot est entré plusieurs fois --> Les mots avec un plus gros score (donc plus fréquents) sont proposés en premier.
      • PS : Les limites de cette structure ne sont pas encore connues. Pour l'instant avec environ 80 mots tout fonctionne correctement. A tester ultérieurement.
    • La distance est maintenant calculée à partir de la parallaxe récupérée sur Simbad (la mesure n'était pas gérée pour l'instant).
  • 11,
    • Correction d'un bug d'affichage sur les boutons de prédiction de texte.
    • Etablissement d'une liste d'idées d'améliorations pour les prochains jours :
      • (fait) Proposer les 3 types de coordonnées, pas juste le format ICRS.
      • (fait) Pouvoir préciser le format de coordonnées voulu (ICRS, galactiques et l'autre).
      • (fait) Sérialiser la structure de prédiction pour la stocker dans le local storage.
      • (fait) Récupérer la structure sérialisée à la construction si elle existe.
      • (fait) Ajouter des vignettes devant les flux avec les couleurs correspondantes.
      • (fait) Modifier la couleur des vignettes devant les types spectraux.
      • (fait) Modifier l'intention get_measure pour gérer le cas où l'utilisateur entre un type d'objet et pas un nom.
      • (fait) Modifier l'intention get_measure pour obtenir une mesure sur un parent/enfant/frère.
      • (fait) Gérer le cas des mots trop grands par rapport à la taille des boutons de prédiction.
    • Correction d'un bug dans le système de score de la prédiction de texte.
    • A faire la prochaine fois : régler le bug d'affichage des vignettes pour les flux.
  • 14,
    • Correction du bug des vignettes.
    • Panne du PC : Travail sur le rapport de stage.
    • Quelques recherches sur la conversion de format pour les coordonnées : pas super clair donc on passe pour l'instant.
    • Travail sur les recherches SIMBAD TAP avec un type d'objet.
  • 15,
    • Implémentation du code pour gérer les types d'objets avec Simbad.
    • Correction de bugs autour de l'utilisation de SIMBAD et de Vizier TAP.
    • Implémentation du code pour gérer les types d'objets avec VizierTAP.
    • Ajout de commentaires dans le code.
    • Améliorations concernant la gestion des types d'objets avec Simbad :
      • Avant de continuer le processus, le programme vérifie que le type d'objet existe sur Simbad. Si c'est le cas et qu'il en trouve plusieurs qui correspondent, il demande à l'utilisateur le type d'objet qu'il recherche.
      • Elimination des problèmes de casse (parfois les types d'objets dans Simbad possèdent une majuscule, parfois non).
  • 16,
    • Meilleure gestion des erreurs durant le processus de requêtage de Vizier.
    • Les requêtes Vizier ne sont plus sensibles à la casse, ce qui résout beaucoup de problèmes avec cette fonctionnalité.
    • Travail sur obtenir une mesure sur les enfants/parents/siblings d'un objet :
      • Au départ, je voulais que Dialogflow soit directement capable de comprendre quand la mesure ne concerne pas un objet mais un e/p/s. Après quelques tests, cette solution s'est avérée moyenne, puisque le taux d'erreur est très élevé (les deux intentions sont sémantiquement trop proches). Suite à ces constatations, l'idée suivante m'est venue.
      • Récupérer pour chaque enfant/parent/sibling trouvé ses mesures principales (celles situées dans la table basic de simbad), puis dresser une sorte de "portrait-robot" des enfants/parents/siblings de l'objet demandé, ses informations étant les valeurs médianes de toutes celles obtenues.
      • Tests et implémentation de cette idée.
    • Correction d'un bug autour de la preview et amélioration de son rendu.
    • Rédaction de courtes présentations de simbad, vizier et aladin pour le rapport.
  • 17,
    • La mesure "everything" est maintenant gérée par le code, afin de récupérer toutes les informations possibles sur un objet. ("Tell me everything about ...")
    • Correction de bugs.
    • Le code est maintenant entièrement et précisément commenté et documenté.
    • Amélioration de la lisibilité du code sur certaines fonctions un peu longues.
    • Réunion, nouveaux objectifs :
      • (fait) Modifier le calcul de la distance : distance pc = 1000/parallaxe; distance yl = d pc * 3.26.
      • (fait) Pour reqûetes TAP (et pour preview), problèmes d'encodage --> ', +, ...
      • (fait) Dans le message d'accueil, écrire la phrase type générale et en-dessous une phrase type précise.
      • (fait) Modifier le css du widget Aladin pour le rendre responsive.
      • (fait) Pour la classe CSS "important", utiliser une police avec la même largeur de caractère.
      • (fait) Il y a un bug avec cette entrée : "Best catalogue for redshift of 2C 273".
      • (fait) Rajouter un timeout pour toutes les requêtes à des services extérieurs.
      • (fait) Implémenter le contexte pour les images (Show me this objet).
      • (fait) Possiblité de préciser le flux à afficher, comme pour les coordonnées.
      • (fait) Trouver une solution pour rendre le bot utilisable par plusieurs personnes en même temps sans avoir de problème avec le contexte.
      • (fait) Modifier les mesures sur children/parents/siblings.
      • (fait) Trouver un moyen de préciser plusieurs mesures en un message.
  • 18,
    • Réunion de présentation de la solution de virtualisation.
    • Travail sur les objectifs énoncés le 17 Mai : Distance, Encodage, Message d'accueil, Widget Aladin, Police, Timeout, Flux précis.
    • Visite de la grande coupole.
    • Correction d'un mauvais comportement de la structure de prédiction : Les mots prédits n'étaient pas classés par score.
  • 22,
    • Correction du bug énoncé dans la liste des objectifs.
    • Nouvelle amélioration des messages d'erreurs : Ajout de messages d'erreurs en cas de timeout ou plus générallement d'échecs lors des requêtes à des APIs distantes.
      • Cela permet de savoir à quelle étape le processus a planté, et le message d'erreur complet est affiché dans la console.
    • Changements au niveau des requêtes hiérarchiques.
      • Amélioration du code --> De 250+ lignes à 79, commentaires et documentation inclus.
      • Suppression du système d'enfant/parent/frère type.
      • Dans la liste déroulante, les mesures principales sont affichées en plus du nom du parent/fils/frère si la valeur récupérée n'est pas nulle.
    • Résolution du problème de contexte : Dialogflow gère les concepts de sessions si une sessionID lui est passée. Le contexte est spécifique à la session.
    • Création d'un générateur de sessionID. A la création l'ID est stocké dans le local storage, et est récupéré les fois d'après. Cela signifie que le contexte peut survivre à un rafraichissement de page.
    • Ajout de la gestion du contexte pour les images :
      • On peut maintenant demander une mesure sur un objet, puis demander une image sans redonner le nom.
      • On peut maintenant changer la longueur d'onde étudiée sans re-préciser le nom de l'objet.
    • On peut maintenant préciser plusieurs mesures pour l'intention "get_measure"
  • 23,
    • Suite du travail sur les mesures multiples :
      • Les mesures supplémentaires demandées grâce au contexte ("and its ...") gèrent maintenant les mesures multiples.
      • Les requêtes VizieR gèrent maintenant les mesures multiples.
    • Préparations de requêtes intéressantes pour démontrer les fonctionnalités du chatbot lors d'une démo.
    • Correction de bugs trouvés pendant la préparation.
  • 24,
    • Ajout d'un mode "démo" au chatbot :
      • Déclenché en appuyant sur la touche F4 en étant dans la barre.
      • Remplace l'historique par les requêtes isolées hier.
      • Quand une phrase de la démo est envoyée au chatbot, elle est retirée de la liste.
    • Correction du bug de scrolling qui survenait avec Aladin Light (enfin !)
    • Ajout de combinaisons pour les claviers qui ne possèdent pas les touches Fn, pour pouvoir avoir accès aux raccourcis : F1 --> Ctrl +1, F2 --> Ctrl + 2, F3 --> Ctrl + 3, F4 --> Ctrl + 4
    • Réunion. A travailler :
      • (fait) Rendre l'interface responsive, ou au moins jolie sur tous les supports.
      • (fait) Régler le problème avec les previews.
      • (fait) Corriger le bug avec cette phrase : "What is the parallax of m31"
      • Entrainer le chatbot.
      • Trouver et corriger un max de bugs en vue de tests par d'autres personnes.
      • (fait) Mieux gérer le cas des mots prédits trop longs.
  • 25,
    • Correction du bug avec les previews qui clignotaient sur l'écran parfois.
    • Correction du bug avec Vizier (celui de la liste ci-dessus).
    • Travail sur l'interface :
      • Changement au niveau des boutons de prédiction : Le fond était avant une image, ce qui rendait moche sur certains supports. Maintenant c'est full css.
      • Changement sur la zone de chat : La barre de scrolling horizontale, complètement inutile pour le chat, n'est maintenant plus visible.
      • La barre verticale pour scroller est plus jolie sur tous les navigateurs sauf Firefox, IE et Edge (fonctionnalité pas encore supportée, la barre par défaut est donc affichée).
      • Correction d'un bug de positionnement de la barre de recherche par rapport aux boutons.
    • Entrainement du moteur de NLU du chatbot.
  • 28,
    • L'interface de base est maintenant propre sur tous les supports principaux proposés par le navigateur en faisant Ctrl + Maj + M
    • Les mots prédits sont maintenant correctement centrés et leur police est diminuée si le mot n'entre pas entièrement dans le bouton.
    • Entrainement du chatbot.
    • Travail sur le rapport.
  • 29,
    • Le focus est maintenant automatiquement rendu à la barre de recherche lorsque le "thinking mode" est désactivé.
    • Corrections mineures.
    • Gros changements par rapport aux small talks :
      • La gestion de ces messages ne se fait plus par l'option par défaut proposée par Dialogflow mais grâce à un agent pré-construit par l'entreprise spécialisé dans ce domaine et fusionné avec le nôtre.
      • Avantages : La reconnaissance et le traitement des small talks est beaucoup plus efficace. Et de fait, ils ne sont plus confondus avec l'intention show_image, qui traite aussi des termes isolés.
      • Inconvénients : Le nombre d'intentions est passé d'une dizaine à plus de 90. En soi, ceci n'est absolument pas un problème pour l'utilisateur ou pour le code, cela ne fait aucune différence lors de l'utilisation du chatbot et cela n'a aucun impact sur la durée de prise de décision mais l'entrainement est beaucoup plus long (2 ou 3 minutes au lieu de quelques secondes). Après c'est loin d'être handicapant non plus, le jeu en vaut la chandelle comme disent les jeunes.
    • Entrainement du chatbot.
    • Créations de quelques slides de présentation des processus derrières les principales intentions reconnues par le chatbot.
  • 30,
    • Modifications au niveau de la preview.
    • Entrainement du chatbot.
    • Travail sur le rapport.
    • Présentation de l'outil à Emmanuelle Perret et Gilles Landais. Quelques nouvelles pistes pour la suite :
      • (fait) Rendre les noms d'objets cliquables, l'hyperlien renvoyant vers Simbad.
      • (fait) Pour les enfants/parents/siblings, filtrer avec les types d'objets précisés (ex: Galaxies)
      • (fait) Indiquer pour une image si des spectres existent sur VizieR.
      • (fait) Pour les recherches VizieR avec coordonnées, indiquer le radius utilisé.
      • (fait) Proposer en plus des flux un graphique comme proposé sur le portail dans la partie "Photometric Points".
      • (fait) Pouvoir rechercher un catalogue grâce au nom de l'auteur.
      • (fait) Pouvoir rechercher des objets autour d'un point ou d'un autre objet.
      • (fait) Ajouter des logos pour identifier visuellement d'où viennent les données.
      • (fait) Corriger le bug trouvé avec MocServer.
  • 31,
    • Entrainement du chatbot et point suite à la présentation d'hier (ce qui a marché, ce qui n'a pas marché, corrections erreurs, ...)
    • Les noms d'objets astronomiques cités dans les réponses du chatbot sont maintenant des liens vers leur page Simbad dédiée.
    • Correction de bugs identifiés hier pendant la présentation.
    • On peut maintenant demander une image d'un type d'objet. L'objet affiché est choisi au hasard parmi les correspondances SIMBAD.
    • Le logo de la base où les infos sont récupérées est affiché en bas des messages.
    • Le rayon de recherche utilisé pour les requêtes à VizieR est maintenant explicité dans le message.

Juin

  • 1,
    • Nouvelle fonctionnalité : quand une image est affichée, le programme cherche des spectres dans VizieR. S'il en trouve, il l'indique à l'utilisateur et l'invite à aller les consulter sur la page VizieR dédiée (avec les bons paramètres pour les retrouver).
    • Correction d'un problème avec la distance de Levenshtein.
    • Entrainement du chatbot.
    • Travail sur le rapport.
  • 4,
    • Ajout de la possibilité de préciser le nom de l'auteur lors de la recherche des catalogues. Cette fonctionnalité est prise en charge par le NLU mais pas encore par le code puisque je n'arrive pas à trouver le bon mot-clé pour MocServer.
    • Lorsque l'on cherche les parentés d'un objet, on peut préciser les types voulus (ex : Which stars are Sirius' children ?)
    • Travail sur la nouvelle intention pour trouver des objets dans un rayon autour d'un autre :
      • Si une image aladin-light est lancée, l'utilisateur peut parcourir le ciel et s'arrêter sur un astre. S'il veut savoir le nom et le type de l'objet sur lequel il se trouve, il peut le demander au chatbot (phrase type : Find this object).
      • L'utilisateur peut demander les objets autour d'un autre, avec la possibilité de préciser le rayon de recherche. Les résultats sont affichés dans le widget Aladin et cliquer sur un objet voisin affiche une petite table contenant les informations essentielles.
  • 5,
    • Ajout de la possibilité de préciser le type d'objet à propos de la recherche autour d'un objet.
    • Ajout d'une sécurité au cas où le NLU confondrait oid et coordinates.
    • Travail sur le rapport.
    • Entrainement du chatbot.
  • 6,
    • Correction de bugs créés lors de l'ajout de la dernière fonctionnalité.
    • Pré-soutenances de Lilian et de Mathieu.
    • Présentation du chatbot. Quelques idées :
      • (fait) Retravailler les intentions "everything" en rajoutant un format fiche synthèse et en gérant le cas des types d'objets.
      • (fait) Régler le bug avec la preview qui se duplique.
      • (fait) Régler le bug avec VizieR.
      • (fait) Améliorer la précision des résultats VizieR, en adaptant le radius par exemple.
      • Proposer une option pour reporter un bug qui génère un fichier texte contenant le script de la conversation et le contenu des erreurs.
      • Lorsque beaucoup de messages sont affichés et que certains se retrouvent hors-champ au dessus, ajouter une indication graphique (genre une flèche).
    • Travail sur le rapport.
    • Réunion avec André par rapport à la présentation du matin, à l'avancement du rapport et à la soutenance.
    • Début de travail sur la correction des bugs énoncés ci-dessus.
  • 7,
    • Fin du travail sur la correction des bugs.
    • Entrainement du chatbot suite aux essais de la veille.
    • Mise à jour du message d'accueil pour rajouter la nouvelle fonctionnalité.
    • Travail sur le rapport.
  • 8,
    • La preview s'adapte maintenant à la position de la souris dans l'écran. S'il n'y a pas assez de place pour l'afficher en entier sans descendre la page, elle se déplace et s'affiche en haut à droite plutôt qu'en bas à droite.
    • Fin du rapport.
  • 11,
    • Un format fiche-synthèse a été ajouté pour les mesures "everything".
    • Mise en commun de la version miroir créée pendant l'IVOA et la version serveur.
    • Ajout d'un bouton de création de script en cas d'erreur.
    • Travail sur l'export de ce script. Quelques problèmes :
      • Javascript ne peux pas générer de fichier .txt.
      • Je suis nul en PHP.
  • 12,
    • Le radius de recherche VizieR s'adapte maintenant à la taille de l'objet recherché.
    • Application de quelques correctifs sur le rapport.
    • Entrainement du chatbot.
  • 13, 14
    • Travail sur la soutenance.
    • Tests et correction de bugs.
  • 15,
    • Ajout du graphique "Photometric Points" du portail lorsque l'utilisateur demande les flux d'un objet.
    • Tests et correction de bugs.
    • Fin du diapo de la soutenance.
    • Le code est de nouveau correctement documenté et commenté.
  • 18,
    • Pré-soutenance de stage.
    • Modifications sur le diapo suite aux retours.
    • Correction d'un bug identifié autour de VizieR (oui encore un).
    • Recherches concernant la récupération de mesures supplémentaires : la température et la période.
      • Aucun résultat pertinent trouvé.
    • Ajout d'une dernière intention pour lister un ensemble d'objets en précisant un type d'objet et éventuellement une condition sur une des mesures (ex : redshift > 6).
  • 19,
    • Suite du travail sur la dernière intention.
      • Amélioration du système de compréhension de la condition.
      • L'utilisateur peut maintenant préciser plusieurs conditions à appliquer autour des données suivantes : redshift, parallax, right ascension et declination.
      • L'utilisateur peut maintenant demander que le type d'objet soit automatiquement calqué sur celui d'un objet de référence. (ex : "List some objects looking like Sirius" va chercher une liste d'objets possèdant l'object type "Double or Multiple Stars", comme Sirius)
    • Amélioration des fiches synthèses : Seuls les champs où la donnée existe et est présente sont affichés, plutôt que de tout afficher et de laisser vide.
    • Ajout dans la démo de quelques phrases pour illustrer les fonctionnalités de recherche autour d'un point et le listage d'objets astronomiques.
    • Ajout dans le message d'accueil de la nouvelle fonctionnalité.
  • 20,
    • Début d'une document complète et en français du code.
  • 21,
    • Soutenance de stage à Dijon.
  • 22,

Liens

Versions testables

  • ...

Documentation

  • Lexique.pdf: Lexique des termes astronomiques rencontrés durant le stage.

  • Machine_learning.pdf: Synthèse sur le machine learning dans le domaine du traitement du langage naturel

  • Dialogflow.pdf: Présentation du moteur de traitement du langage naturel Dialogflow

Liste de questions que l'on peut imaginer voir traitées par un portail intelligent

  1. What is the redshift of 3C273? What is the redshift of the Virgo Cluster?
  2. What is the parallax of Barnard's star? What is the distance of Barnard's star? What is the proper motion of Barnard's star?
  3. What is the effective temperature of Sirius?
  4. What are the galactic coordinates of Geminga?
  5. Which galaxy interacts with NGC 4038?
  6. Show me an image of the Pleiades in the K band
  7. How many QSOs are there at redshift larger than 6? How many QSOs are there at z>6?
  8. What is the redshift of galaxies members of the Virgo cluster?
  9. Find globular clusters within 3° of M31. Find globular clusters in M31.
  10. Query the latest Veron catalogue
  11. What is the period of Algol? List of periods of Algol-type stars.
  12. What is the effective temperature of T Tau? What is the effective temperature of T Tauri stars?
  13. Find supernovae in galaxies brighter than V=12
  14. How many planets orbit Kepler 20?
  15. List of catalogues measuring surface gravity of giant stars
  16. Get color thumbnails of Messier objects
  17. List of galactic X-ray supernova remnants
  • Remarques et discussions sur les questions ci-dessus

Catégorisation des mots-clés à identifer : meas = quantité mesurée; oid = nom d'objet; otype = type d'objet; author = auteur; mission = instrument ou mission; data = nom d'un dataset, catalogue ou type de données?; wl = wavelength domain?

  1. meas:redshift && oid:3C273. Résultat attendu = valeur (avec erreur, bibcode...). Réponse peut être trouvée dans SIMBAD, ou dans différents catalogues VizieR.
  2. meas:parallax && oid:"Barnard's star". Idem question 1. Pour meas:distance, besoin de faire un calcul à partir de parallax. Pour meas:"proper motion", valeur vectorielle avec 2 composantes + calcul de la norme?
  3. meas:"effective temperature" && oid:Sirius. Idem question 1.
  4. meas:"galactic position" && oid:Geminga. Réponse = deux composantes de position : longitude, latitude galactique.
  5. oid:"NGC 4038", et besoin d'interpréter la grammaire pour comprendre qu'on s'intéresse au lien hiérarchique de cet objet dans SIMBAD
  6. data:image && wl:em.IR.K && oid:Pleiades. Besoin d'identifer les datasets pertinents dans le serveur Aladin, ou bien données associées VizieR, et restreindre à la position de l'objet demandé, et taille du champ de vue appropriée.
  7. otype:QSO && meas:redshift, + restriction en valeurs de redshift
  8. meas:redshift && oid=Virgo cluster && otype=galaxy + information membership
  9. otype=GC + restriction par membership ou région du ciel
  10. name:Veron. Trouver le bon catalogue dans VizieR en triant par date, ou au moins lister les catalogues de cet auteur.
  11. meas:period && oid=Algol. Se trouve dans les données mesures associées SIMBAD, ou bien des catalogues VizieR. Attention à l'ambiguité otype:Algol, besoin de renvoyer une liste dans ce cas.
  12. meas:"effective temperature" && oid:"T Tauri". Idem, ambiguité avec otype:"T Tauri"
  13. otype:SN + lien hiérarchique (ou recherche par rayon?) avec otype:galaxy + contrainte sur meas:"phot.mag;em.opt.V"
  14. oid:"Kepler 20" : comptage sur hierarchie et otype:planet sur children
  15. meas:"surface gravity" && otype:"giant star" && data:catalogue
  16. data:image && wl:em.opt. Interpréter Messier comme une liste d'objets implicite à partir d'un catalogue ou par le dictionnaire de nomenclature? data:Messier
  17. otype:SNR && wl:"X ray". "galactic" pas évident à interpréter. Liste d'objets SIMBAD ou catalogues VizieR ?

Travail post stage éventuel

  • ...

Liste des améliorations à envisager

  • Ajout d'un système de reconnaissance et de synthèse vocale.
  • Créer une fonction de correspondance entre les noms d'objets comme rentrés sur Simbad et d'autres façon de le dire. Ex : Binary Stars = Double or Multiple Stars.
  • Faire en sorte que les requêtes à MocServer ne retournent que des catalogues et non pas des tables.

Bugs connus

  • Attention aux requêtes HTTP : Certains catalogues VizieR contiennent des '+' dans leur id, et les '+' sont interprétés comme des espaces lors du décodage de l'URL --> Le mauvais nom est demandé à VizieR, ce qui provoque une erreur. Le cas du '+' est identifié et corrigé, mais ce bug pourrait avoir lieu pour certains autres caractères, à voir.
    • Correction : Identifier le caractère problématique et le remplacer par son encodage URL (Par exemple, '+' --> '%2B').
  • Avec Dialogflow : Le cerveau du bot traite correctement une requête (logs de décisions accessibles dans le menu "Training") mais renvoie une réponse différente et fausse. Bug rare mais qui a tendance à arriver quand les requêtes contiennent des caractères comme '>', '<', '=', ...
    • Remarque : Sà»rement un bug de la v2 de l'API, déployée très récemment avant l'utilisation pour le projet (à vrai dire le jour après les premiers tests sur l'outil). Un patch pourrait être apporté assez rapidement.
    • Sinon : Utiliser les versions "langage naturel" des comparateurs : écrire supérieur à , ou des superlatifs comme "higher", "brighter", "harder", "better", "faster", "stronger" ... Qui sont mieux comprises.

  • Erreur VizieR pour les requêtes suivantes :
    • What are the galactic coordinates of Sirius (Résolu)
Topic attachments
I Attachment Action Size Date Who Comment
Unknown file formatdocx Alexis_Guyot_IQS4-B2_Rapport_stage.docx manage 16082.0 K 2018-06-22 - 14:09 UnknownUser Rapport de stage format Word
PDFpdf Alexis_Guyot_IQS4-B2_Rapport_stage.pdf manage 5015.0 K 2018-06-22 - 14:05 UnknownUser Rapport de stage
PDFpdf Alexis_Guyot_IQS4B2_Soutenance_Stage_final.pdf manage 1293.6 K 2018-06-22 - 14:15 UnknownUser  
PDFpdf Comprendre_Sesame.pdf manage 42.6 K 2018-04-06 - 14:22 UnknownUser Document synthèse sur Sésame
PDFpdf Dialogflow.pdf manage 170.1 K 2018-04-25 - 07:34 UnknownUser Présentation du moteur de traitement du langage naturel Dialogflow
Unknown file formatdocx Documentation_du_code_du_chatbot.docx manage 82.7 K 2018-06-22 - 14:13 UnknownUser Documentation du code du chatbot au format Word
PDFpdf Documentation_du_code_du_chatbot.pdf manage 438.6 K 2018-06-22 - 14:07 UnknownUser Documentation du code du chatbot.
PDFpdf Lexique.pdf manage 38.2 K 2018-04-06 - 14:22 UnknownUser Lexique des termes astronomiques rencontrés au cours du stage
PDFpdf Machine_learning.pdf manage 90.0 K 2018-04-11 - 13:17 UnknownUser Synthèse sur le machine learning dans le domaine du traitement du langage naturel
Topic revision: r82 - 2018-06-22 - AlexisGuyot
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback