diff --git a/CategoriesGramaticalesCombinatoire.ods b/CategoriesGramaticalesCombinatoire.ods index 18278a3..4cecb7e 100644 Binary files a/CategoriesGramaticalesCombinatoire.ods and b/CategoriesGramaticalesCombinatoire.ods differ diff --git a/ccg-test.py b/ccg-test.py index 13b12b5..501d54a 100644 --- a/ccg-test.py +++ b/ccg-test.py @@ -12,7 +12,7 @@ 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' +lexstring+='V :: S\\N\n' # On lis les données depuis le tableur en une chaine de caractère parsable for i in range(n): @@ -26,29 +26,35 @@ for i in range(n): # 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) +parser = chart.CCGChartParser(lex, chart.DefaultRuleSet) +#parser = chart.CCGChartParser(lex, chart.ApplicationRuleSet) + +printTotal=True +printDerivations=not printTotal # 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") + + lines.append("mon voisin lui donne le chat") 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) + if printDerivations: + print("============================================================================") + print('#',phrase) + lex = lexicon.fromstring(lexstring) + parser = chart.CCGChartParser(lex, chart.ApplicationRuleSet) + # Et on affiche tous les arbres de dérivation trouvés + i=0 + for parse in parser.parse(phrase.split()): + i+=1 + if printDerivations: + chart.printCCGDerivation(parse) + + if printTotal: + print(i,phrase) diff --git a/ccg-test2.py b/ccg-test2.py new file mode 100644 index 0000000..1328bae --- /dev/null +++ b/ccg-test2.py @@ -0,0 +1,18 @@ +from nltk.ccg import chart, lexicon +import pandas as pd +import numpy as np + + +lexstring=''' +:- S,N +chat => N +dort => N\S +''' + +lex = lexicon.fromstring(lexstring) +print(lex) +parser = chart.CCGChartParser(lex, chart.ApplicationRuleSet) + +phrase="chat dort" +for parse in parser.parse(phrase.split()): + chart.printCCGDerivation(parse) diff --git a/ccg-test3.py b/ccg-test3.py new file mode 100644 index 0000000..33b519f --- /dev/null +++ b/ccg-test3.py @@ -0,0 +1,61 @@ +from nltk.ccg import chart, lexicon + +lex = lexicon.fromstring(''' + :- S, NP, N, VP + + Det :: NP/N + Pro :: NP + Modal :: S\\NP/VP + + TV :: VP/NP + DTV :: TV/NP + + the => Det + + that => Det + that => NP + + I => Pro + you => Pro + we => Pro + + chef => N + cake => N + children => N + dough => N + + will => Modal + should => Modal + might => Modal + must => Modal + + and => var\\.,var/.,var + + to => VP[to]/VP + + without => (VP\\VP)/VP[ing] + + be => TV + cook => TV + eat => TV + + cooking => VP[ing]/NP + + give => DTV + + is => (S\\NP)/NP + prefer => (S\\NP)/NP + + which => (N\\N)/(S/NP) + + persuade => (VP/VP[to])/NP + ''') + +parser = chart.CCGChartParser(lex, chart.DefaultRuleSet) +for parse in parser.parse("you prefer that cake".split()): + chart.printCCGDerivation(parse) + break + +for parse in parser.parse("that is the cake which you prefer".split()): + chart.printCCGDerivation(parse) + break diff --git a/phrases.txt b/phrases.txt index 81cbfcd..09a0eae 100644 --- a/phrases.txt +++ b/phrases.txt @@ -26,7 +26,7 @@ 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 de mon voisin pourchasse et attrape la souris +La souris dort et le chat de mon voisin attrape la souris Le chat dort et la souris dort Le chat et la souris dorment