From 9153673316a2880360f90368a774a9ababce0af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Sun, 29 Sep 2019 15:03:53 -0400 Subject: [PATCH] petites corrections pour que le Makrdown compile --- rapport.md | 86 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 49 insertions(+), 37 deletions(-) diff --git a/rapport.md b/rapport.md index 1724bc4..ddb2e3e 100644 --- a/rapport.md +++ b/rapport.md @@ -1,11 +1,13 @@ +--- +title: IFT-7022 - Traitement automatique de la langue naturelle +author: François Pelletier (908144032) +date: 30 septembre 2019 +geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm" +output: pdf_document +--- + # Travail pratique 1 -IFT-7022 — Traitement automatique de la langue naturelle - -Remis par François Pelletier - -Étudiant # 908144032 - ## Conversion de questions L'objectif de ce problème est de convertir un ensemble de questions en affirmations à l'aide d'expressions régulières et règles de substitution. @@ -22,25 +24,25 @@ Toutes ces règles sont enchainées les unes à la suite des autres. Comme la co Les motifs suivent cet ordre. Sauf indication contraire, le groupe affirmatif à convertir est situé après le motif recherché : -1. Mot-question **qui**, suivi d'un verbe auxiliaire, sous forme d'énumération partielle -2. Mot-question **qu'est-ce qu'** -3. Mot-question **que** suivi d'un verbe d'état ou d'action. J'ai ici utilisé une énumération partielle pour identifier les verbes présents dans les questions en échantillon. -4. Mot-question **où** ou de la forme **dans quelle** suivi d'une catégorie géographique, sous forme d'énumération partielle. J'ai aussi capturé la forme particulière **quelle est la capitale** où je remplace le mot **quelle** par où, afin de correspondre au motif précédent. Ceci me permet d'éviter une règle additionnelle. -5. Mot-question **quel** suivi soit du mot âge et du verbe avoir, soit du verbe auxiliaire et d'un nom représentant une quantité, sous forme d'énumération -6. Mot-question **quel** suivi du verbe être (forme générique du motif précédent) -7. Mot question **quand** ou groupe **en quelle année** -8. Mot question **pourquoi** -9. Mot question **combien** suivi de **de**. -10. Mot question **combien** suivi de **y a-t-il**. La différence ici est que la réponse conserve l'ordre de la question et qu'il faut transformer **y a-t-il** en **il y a**. -11. Mot-question **quel** à la fin de la question. Ce motif sert à attraper une forme moins fréquente de questions où la question est posée après le groupe affirmatif. +1. Mot-question **qui**, suivi d'un verbe auxiliaire, sous forme d'énumération partielle +2. Mot-question **qu'est-ce qu'** +3. Mot-question **que** suivi d'un verbe d'état ou d'action. J'ai ici utilisé une énumération partielle pour identifier les verbes présents dans les questions en échantillon. +4. Mot-question **où** ou de la forme **dans quelle** suivi d'une catégorie géographique, sous forme d'énumération partielle. J'ai aussi capturé la forme particulière **quelle est la capitale** où je remplace le mot **quelle** par où, afin de correspondre au motif précédent. Ceci me permet d'éviter une règle additionnelle. +5. Mot-question **quel** suivi soit du mot âge et du verbe avoir, soit du verbe auxiliaire et d'un nom représentant une quantité, sous forme d'énumération +6. Mot-question **quel** suivi du verbe être (forme générique du motif précédent) +7. Mot question **quand** ou groupe **en quelle année** +8. Mot question **pourquoi** +9. Mot question **combien** suivi de **de**. +10. Mot question **combien** suivi de **y a-t-il**. La différence ici est que la réponse conserve l'ordre de la question et qu'il faut transformer **y a-t-il** en **il y a**. +11. Mot-question **quel** à la fin de la question. Ce motif sert à attraper une forme moins fréquente de questions où la question est posée après le groupe affirmatif. Quelques modifications au niveau de la phrase viennent ensuite *nettoyer* la résultante : -12. Suppression des inversions *-il*, *-elle*, *-t-il*, *-t-elle* -13. Inversion du pronom *vous* -14. Retrait des doubles espaces -15. Retrait des espaces au début de la phrase -16. Retrait des espaces après les apostrophes +12. Suppression des inversions *-il*, *-elle*, *-t-il*, *-t-elle* +13. Inversion du pronom *vous* +14. Retrait des doubles espaces +15. Retrait des espaces au début de la phrase +16. Retrait des espaces après les apostrophes ### Résultats @@ -48,14 +50,21 @@ Quelques modifications au niveau de la phrase viennent ensuite *nettoyer* la ré Sur l'ensemble des questions à convertir, quatre réponses ne correspondaient pas à celles dans le fichier d'entrainement, avant d'avoir effectué les améliorations suite à la connaissance du fichier de test : -Situation 1. `Q : Qui était Galileo?` - - Comme cette question correspond au motif 1, la réponse que le module produit est **Luc Lamontagne était Galileo.**, alors qu'elle aurait du tomber dans la catégorie *autre*. Pour ce faire, cela aurait nécessité une analyse syntaxique. -Situation 2. `Q : A quelle distance se trouve la ligne de service du net au tennis?` - - Il me reste le mot distance au début de l'affirmation, que je n'arrive pas à enlever sans devoir faire une expression trop spécifique. -Situation 3. `Q : Combien de litres dans un gallon?` - - C'est la seule question de cette forme où la réponse donnée est au début et non à la fin. -Situation 4. `Q : Que fait-on avec des drapeaux usés ou périmés?` - - Encore une fois, c'est la seule version où la réponse est au début et non à la fin. Ma réponse est équivalente. +Situation 1. `Q : Qui était Galileo?`: + +- Comme cette question correspond au motif 1, la réponse que le module produit est **Luc Lamontagne était Galileo.**, alors qu'elle aurait du tomber dans la catégorie *autre*. Pour ce faire, cela aurait nécessité une analyse syntaxique. + +Situation 2. `Q : A quelle distance se trouve la ligne de service du net au tennis?`: + +- Il me reste le mot distance au début de l'affirmation, que je n'arrive pas à enlever sans devoir faire une expression trop spécifique. + +Situation 3. `Q : Combien de litres dans un gallon?`: + +- C'est la seule question de cette forme où la réponse donnée est au début et non à la fin. + +Situation 4. `Q : Que fait-on avec des drapeaux usés ou périmés?`: + +- Encore une fois, c'est la seule version où la réponse est au début et non à la fin. Ma réponse est équivalente. #### Fichier de test @@ -66,16 +75,19 @@ J'apporte les modifications suivantes pour diminuer le nombre d'erreurs: - Ajout du mot `profondeur` à la règle 5: enlève une erreur - J'ajoute un groupe de capture optionnel `est né` à la règle 7, enlève une erreur. - Séparation de la règle 1 pour le **qui** en deux expression pour gérer les temps de verbe présent et participe passé. La réponse n'est pas au même endroit dans la phrase pour ces deux situations: enlève trois erreurs -- Ajout d'une expression régulière pour gérer "quel est le nom du chef" après celles qui gère le mot-question **qui**: enlève une erreur. +- Ajout d'une expression régulière pour gérer `quel est le nom du chef` après celles qui gère le mot-question **qui**: enlève une erreur. - Je sépare la règle 4 pour gérer `capitale` et `emplacement` séparément. J'enlève deux erreurs dans le fichier de test mais j'ajoute une erreur dans le fichier d'entrainement à la question `Quelle est la capitale de la Yougoslavie?`, car il y a un `à` de trop dans la réponse. J'élimine donc 8 erreurs à l'aide de 3 nouvelles expressions régulières et en améliorant une expression existante. Il subsiste 2 erreurs: -Situation 1. `Q : À quelle vitesse est le son?` - - Même erreur que la situation 2 dans le fichier d'entrainement -Situation 2. `Q : Combien de cœurs a une pieuvre?` - - Même erreur que la situation 3 dans le fichier d'entrainement +Situation 1. `Q : À quelle vitesse est le son?`: + +- Même erreur que la situation 2 dans le fichier d'entrainement + +Situation 2. `Q : Combien de cœurs a une pieuvre?`: + +- Même erreur que la situation 3 dans le fichier d'entrainement ## Origine du nom de famille @@ -211,8 +223,8 @@ from pandas import DataFrame - [Documentation de Seaborn](https://seaborn.pydata.org) - [Documentation de Python 3.7: The Python Standard Library](https://docs.python.org/3.7/library/) - Stack Overflow: - - https://stackoverflow.com/a/7716358 - - https://stackoverflow.com/a/280156 + - [Réponse #7716358](https://stackoverflow.com/a/7716358) + - [Réponse #280156](https://stackoverflow.com/a/280156)