From c8ee73b8f74e3b269760485adbff63ff4d9e0113 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Thu, 23 Nov 2023 17:01:22 +0100 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'un=20script=20de=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +++ CategoriesGramaticalesCombinatoire.ods | Bin 21769 -> 22384 bytes ccg-test.py | 54 +++++++++++++++++++++++++ phrases.txt | 32 +++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 .gitignore create mode 100644 ccg-test.py create mode 100644 phrases.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f38e59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Assignated folder for python venv +.env/ + +# Lock files from libreoffice +.~lock* diff --git a/CategoriesGramaticalesCombinatoire.ods b/CategoriesGramaticalesCombinatoire.ods index f9d6c81f19536eb267f06d0f635a14a04c75a316..18278a31e17026354dec240d1689426b6aac9546 100644 GIT binary patch delta 17900 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 Ygz$hJy+1^nsWEW!oe*`luR$Os0Jqaa%K!iX delta 17374 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 diff --git a/ccg-test.py b/ccg-test.py new file mode 100644 index 0000000..13b12b5 --- /dev/null +++ b/ccg-test.py @@ -0,0 +1,54 @@ +from nltk.ccg import chart, lexicon +import pandas as pd +import numpy as np + + +# On importe notre lexique sous forme de tableur +table = pd.read_excel("CategoriesGramaticalesCombinatoire.ods", engine="odf") + +# On récupère le nombre de mots qui ont été définis +n = len(table['MOT']) + +# On donne la liste des catégories primitives +lexstring=':- S,N,Pp\n' +# On ajoute la notation V pour N\S +lexstring+='V :: N\\S\n' + +# On lis les données depuis le tableur en une chaine de caractère parsable +for i in range(n): + for j in range(3): + if isinstance(table['Cat'+str(j)][i],str): + for mot in table['MOT'][i].split('/'): + lexstring+=mot+' => ' + table['Cat'+str(j)][i] + '\n' + +# Pour inverser les slash dans le lexicon +#lexstring = lexstring.replace('\\','#').replace('/','\\').replace('#','/') + +# On crée notre lexique +lex = lexicon.fromstring(lexstring) +#print(lex) + +# On crée le parser, on donne l'ensemble des règles qu'il est cencé connaître +#parser = chart.CCGChartParser(lex, chart.DefaultRuleSet) +parser = chart.CCGChartParser(lex, chart.ApplicationRuleSet) + +# On lit les phrases dans le fichier +with open('phrases.txt') as f: + lines = f.readlines() + + # On ajoute quelques phrases de test supplémentaires + lines.append("chat dort") + lines.append("pouet souris") + lines.append("quel chat mange la souris ?") + lines.append("pouet prout ?") + lines.append("chat surdort") + + for phrase in lines: + # On met tout en minuscule + phrase = phrase.lower().strip() + print('#',phrase) + + # Et on affiche tous les arbres de dérivation trouvés + for parse in parser.parse(phrase.split()): + chart.printCCGDerivation(parse) + diff --git a/phrases.txt b/phrases.txt new file mode 100644 index 0000000..81cbfcd --- /dev/null +++ b/phrases.txt @@ -0,0 +1,32 @@ +Le chat dort +Il dort +Le chat dort paisiblement +Le chat noir dort +Le méchant chat dort +Le très méchant chat dort +Le chat de la sœur de mon voisin dort +Le chat que mon voisin lui donne mange +Le chat qui dort est noir +Le chat mange la souris +Le chat la mange +Il la mange +Quel chat mange la souris ? +Qui mange la souris ? +Quelle souris mange le chat ? +La souris est mangée par le chat +Elle est mangée par le chat +Quelle souris est mangée par le chat ? +Le chat mange la souris avec ses dents +Le chat la mange avec ses dents +Avec quoi le chat mange la souris ? +Le rat donne un fromage à la souris +Un fromage est donné par le rat à la souris +A quelle souris un fromage est donné par le rat ? +Il le donne à la souris +Il le lui donne +Il souhaite que mon voisin lui donne le chat +Il souhaite donner le chat à mon voisin +Le chat de mon voisin pourchasse et aMrape la souris +La souris dort et le chat de mon voisin aMrape la souris +Le chat dort et la souris dort +Le chat et la souris dorment