From c01ffefaacc9cef0b18cc25ecbc035cf21c30e61 Mon Sep 17 00:00:00 2001 From: Mysaa Date: Tue, 28 Nov 2023 23:19:42 +0100 Subject: [PATCH] Final tidying up, added random tests --- Report.ipynb | 92 +++- ccg.ods | Bin 30539 -> 31997 bytes randomizedTests.txt | 1116 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1189 insertions(+), 19 deletions(-) create mode 100644 randomizedTests.txt diff --git a/Report.ipynb b/Report.ipynb index 4c2246f..c5df591 100644 --- a/Report.ipynb +++ b/Report.ipynb @@ -6,7 +6,6 @@ "metadata": {}, "outputs": [], "source": [ - "from nltk.ccg.api import PrimitiveCategory\n", "from nltk.ccg.lexicon import CCGLexicon, Token, augParseCategory\n", "from nltk.ccg.chart import CCGChart,CCGLeafEdge,BinaryCombinatorRule,CCGEdge,CCGChartParser\n", "from nltk.ccg.chart import compute_semantics,printCCGDerivation\n", @@ -15,7 +14,8 @@ "from nltk.sem.logic import Expression\n", "from numbers import Number\n", "import pandas as pd\n", - "import numpy as np" + "import random\n", + "from functools import reduce" ] }, { @@ -39,14 +39,10 @@ "metadata": {}, "source": [ "## 2.a Robustness of the grammar\n", - "Our grammar is really simple, as it has really few catégories. Therefore it is really easy to create sentences that are not grammatical. The good counterpart is that there is less probablity that a grammatical sentence will not be parsed.\n", - "\n", - "For exemple, the following agrammatical sentences are parsed:\n", - "- *manger lui donne lui mange*\n", - "- *mon chat mange par elle que souhaite il*\n", + "Our grammar is really simple, as it has really few catégories. However, every category has been highly tuned for its purpose, so very few agrammatical sentences slip through. However we did not take into account tenses, genre and plurals by choice, so some phrases that are parsed may be agrammatical in that regard - for instance, \"il le attrappe\" or \"est (elle souhaite ses fromage)\" or \"le souris\" are parsed. But for what we consider a successful parse, it is a strict grammar.\n", "\n", "## 2.b Ambiguity\n", - "The main cause of ambiguity is that there is very few catégories, therefore there is a lot of derivation trees going to the same goal. For example, because we do not differenciate *(méchant chat) noir* and *méchant (chat noir)* because both correspond to a reduction (pN pN pN -> pN pN -> pN). Because we have so few catégories, we don't have things like «adjectives order» that would fix the order in which those trees are parsed." + "The main cause of ambiguity is that there is very few catégories, therefore there is a lot of derivation trees going to the same goal. For example, because we do not differentiate *(méchant chat) noir* and *méchant (chat noir)* because both correspond to a reduction (pN pN pN -> pN pN -> pN). Because we have so few catégories, we don't have things like «adjectives order» that would fix the order in which those trees are parsed." ] }, { @@ -71,7 +67,13 @@ " '>' : 0.8,\n", " '<' : 0.8,\n", " 'B' : 0.7\n", + " '>B' : 0.7,\n", + " 'Bx' : 0.6,\n", + " '>Sx' : 0.6,\n", + " '>S' : 0.65\n", "}\n", "def rweight(rule):\n", " s = rule.__str__()\n", @@ -252,7 +254,7 @@ "metadata": {}, "outputs": [], "source": [ - "def to_pseudo_entries(table, consider_semantics = False):\n", + "def to_pseudo_entries(table, consider_semantics = False, categories_max_options = 4):\n", " \"\"\"returns a list of lists in the format ['word', 'category', 'weight', None]\n", " if consider_semantics == false else ['word', 'category', weight, 'semantic']\n", " that is left to be converted into tokens by to_wlex_entries\"\"\"\n", @@ -260,7 +262,7 @@ " entries = list()\n", " for line in range(len(table['MOT'])):\n", " for wdi, word in enumerate(table['MOT'][line].replace(\" \", \"\").split('/')):\n", - " for j in range(3):\n", + " for j in range(categories_max_options):\n", " if isinstance(table['Cat'+str(j)][line],str):\n", " category = table['Cat'+str(j)][line]\n", " weight = float(table['Weights'+str(j)][line]) if isinstance(table['Weights'+str(j)][line], Number) else 1.0\n", @@ -307,13 +309,9 @@ "\n", "# On importe notre lexique sous forme de tableur\n", "table = pd.read_excel(\"ccg.ods\", engine=\"odf\")\n", - "#print(table.keys())\n", - "\n", "# On le convertit en Lexique pondéré\n", "pe = to_pseudo_entries(table, consider_semantics = True)\n", - "#print(pe)\n", "wEntries = to_wlex_entries(pseudo_entries= pe, primitives= primitives, families= families)\n", - "#print([list(map(lambda x: f\"{k} : \"+ str(x) + str(x._semantics), L)) for k, L in wEntries.items()])\n", "lex = WeighedLexicon(start= 'S', primitives= primitives, families= families, entries= wEntries)\n" ] }, @@ -330,7 +328,7 @@ "metadata": {}, "outputs": [], "source": [ - "# On crée le parser, on donne l'ensemble des règles qu'il est cencé connaître\n", + "# On crée le parser, on donne l'ensemble des règles qu'il est sensé connaître\n", "rulesC = [ForwardApplication,BackwardApplication] \n", "rulesC += [ForwardComposition,BackwardComposition,BackwardBx]\n", "rulesC += [ForwardSubstitution,BackwardSx]\n", @@ -382,17 +380,73 @@ "source": [ "for tokens in phrases:\n", " \n", + " print(reduce(lambda x,y: x + \" \" + y,tokens, \"\"))\n", " # On compte les arbres de dérivation trouvés\n", - " i = len(list(parser.parse(tokens)))\n", + " try:\n", + " i = len(list(parser.parse(tokens)))\n", + " except:\n", + " print(\"#SOME RANDOM ASSERT ERROR EVEN IF EVERYTHING WORKS FINE#\")\n", + " \n", " print(\"Found\",i,\"derivations for sentence\",*tokens)\n", "\n", " # On affiche la dérivation la meilleure pour l'arbre\n", " if (i != 0):\n", - " t,d = bestTree(tokens, lex, rulesC)\n", + " try:\n", + " t,d = bestTree(tokens, lex, rulesC)\n", + " except:\n", + " print(\"#SOME RANDOM ASSERT ERROR EVEN IF EVERYTHING WORKS FINE#\")\n", " print(\"Best derivation tree has weight\",d)\n", + " print('\\n')\n", " printCCGDerivation(t)\n", + " print('\\n')\n", + " print(\"#\"*42)\n", + " print('\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Randomized testing\n", "\n", - " print(\"#\"*42)" + "The code that we have used for testing strictness." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def import_words(table):\n", + " return list({word for line in range(len(table['MOT'])) for word in table['MOT'][line].replace(\" \", \"\").split('/')})\n", + "\n", + "def random_tests():\n", + " Words = import_words(table)\n", + " random_phrases = [reduce(lambda x,y: x + \" \" + y + \" \", random.sample(Words, random.sample(range(2,11), 1)[0]), \"\") for i in range(500)]\n", + "\n", + " parsed = list()\n", + " parses = dict()\n", + " unparsed = list()\n", + " for phr in random_phrases:\n", + " try:\n", + " t,d = bestTree(phr.split(), lex, rulesC)\n", + " parsed.append(phr)\n", + " parses[phr] = t\n", + " except:\n", + " unparsed.append(phr)\n", + "\n", + " print(\"=\"*50)\n", + " print(f\"found the following {len(parsed)} derivations:\")\n", + " for phr in parsed:\n", + " print(phr + \" :\")\n", + " printCCGDerivation(parses[phr])\n", + " print(\"=\"*50)\n", + " print(f'{len(unparsed)} are left unparsed :')\n", + " for phr in unparsed:\n", + " print(phr)\n", + "\n", + "random_tests()" ] }, { diff --git a/ccg.ods b/ccg.ods index ea20c178d7c2b887f92616781aef2a3bdb3ce746..5d552a5775c5f89caae5b198b43979d0784a87bd 100644 GIT binary patch delta 30102 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�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 Y11Qv>Di|0TVhSf;s8MITPy`YJ0AyjBjsO4v diff --git a/randomizedTests.txt b/randomizedTests.txt new file mode 100644 index 0000000..c4693e1 --- /dev/null +++ b/randomizedTests.txt @@ -0,0 +1,1116 @@ +================================================== +found the following 32 derivations: + est attrape + ((S\N)/_var1) {\P x.P(x)} ((S\N)/N) {\n m.attrappe(m,n)} +-----------------------------------------------------------> + (S\N) {\x m.attrappe(m,x)} + est qui + ((S\N)/_var1) {\P x.P(x)} ((N\N)/(S\N)) {\V n.V(n)} +------------------------------------------------------> + (S\N) {\x n.x(n)} + ses rat + (N/pN) {\P.exists x.P(x)} pN {rat} +-------------------------------------> + N {exists x.rat(x)} + la est fromage + ((S\N)/(S\N)) {\P.exists m.P(m)} ((S\N)/_var1) {\P x.P(x)} pN {fromage} + -----------------------------------------> + (S\N) {\x.fromage(x)} +---------------------------------------------------------------------------> + (S\N) {exists m.fromage(m)} + il dorment + N {il} (S\N) {\n.dormir(n)} +------------------------------< + S {dormir(il)} + ses souris + (N/pN) {\P.exists x.P(x)} pN {souris} +----------------------------------------> + N {exists x.souris(x)} + mon sœur + (N/pN) {\P.exists x.P(x)} pN {soeur} +---------------------------------------> + N {exists x.soeur(x)} + elle dort + N {elle} (S\N) {\n.dormir(n)} +--------------------------------< + S {dormir(elle)} + la mange + ((S\N)/((S\N)/N)) {\P n.exists m.P(n,m)} ((S\N)/N) {\n m.mange(m,n)} +-----------------------------------------------------------------------> + (S\N) {\n.exists m.mange(m,n)} + est mangée + ((S\N)/_var1) {\P x.P(x)} Pp {\n x.mangé(x,n)} +-------------------------------------------------> + (S\N) {\x z65.mangé(z65,x)} + est souris + ((S\N)/_var1) {\P x.P(x)} pN {souris} +----------------------------------------> + (S\N) {\x.souris(x)} + est mangée + ((S\N)/_var1) {\P x.P(x)} Pp {\n x.mangé(x,n)} +-------------------------------------------------> + (S\N) {\x z65.mangé(z65,x)} + la chat + (N/pN) {\P.exists x.P(x)} pN {chat} +--------------------------------------> + N {exists x.chat(x)} + est le + ((S\N)/_var1) {\P x.P(x)} ((S\N)/((S\N)/N)) {\P n.exists m.P(n,m)} +---------------------------------------------------------------------> + (S\N) {\x n.exists m.x(n,m)} + donner elle + (N/N) {\n.donner(n)} N {elle} +--------------------------------> + N {donner(elle)} + est mon + ((S\N)/_var1) {\P x.P(x)} (N/pN) {\P.exists x.P(x)} +------------------------------------------------------> + (S\N) {\x.exists z66.x(z66)} + sœur noir + pN {soeur} (pN\pN) {\n.noir(n)} +----------------------------------< + pN {noir(soeur)} + ses noir voisin + (N/pN) {\P.exists x.P(x)} (pN/pN) {\n.noir(n)} pN {voisin} + -----------------------------------> + pN {noir(voisin)} +--------------------------------------------------------------> + N {exists x.noir(voisin,x)} + lui est pourchasse + ((S\N)/(S\N)) {\V n.à(V(n),lui)} ((S\N)/_var1) {\P x.P(x)} ((S\N)/N) {\n m.pourchasse(m,n)} + -------------------------------------------------------------> + (S\N) {\x m.pourchasse(m,x)} +-----------------------------------------------------------------------------------------------> + (S\N) {\n.à(\m.pourchasse(m,n),lui)} + est elle souhaite ses fromage + ((S\N)/_var1) {\P x.P(x)} N {elle} ((S\N)/N) {\N m.souhaite(m,N(m))} (N/pN) {\P.exists x.P(x)} pN {fromage} + -----------------------------------------> + N {exists x.fromage(x)} + ----------------------------------------------------------------------------> + (S\N) {\m.souhaite(m,exists x.fromage(x)(m))} + --------------------------------------------------------------------------------------< + S {souhaite(elle,exists x.fromage(x)(elle))} +-----------------------------------------------------------------------------------------------------------------> + (S\N) {\x.souhaite(elle,exists x.fromage(x)(elle),x)} + est un fromage + ((S\N)/_var1) {\P x.P(x)} (N/pN) {\P.exists x.P(x)} pN {fromage} + -----------------------------------------> + N {exists x.fromage(x)} +--------------------------------------------------------------------> + (S\N) {\x.exists x.fromage(x)(x)} + est souhaite + ((S\N)/_var1) {\P x.P(x)} ((S\N)/N) {\N m.souhaite(m,N(m))} +--------------------------------------------------------------> + (S\N) {\x m.souhaite(m,x(m))} + le souris + (N/pN) {\P.exists x.P(x)} pN {souris} +----------------------------------------> + N {exists x.souris(x)} + mon souris + (N/pN) {\P.exists x.P(x)} pN {souris} +----------------------------------------> + N {exists x.souris(x)} + la dorment + ((S\N)/(S\N)) {\P.exists m.P(m)} (S\N) {\n.dormir(n)} +--------------------------------------------------------> + (S\N) {exists m.dormir(m)} + est noir + ((S\N)/_var1) {\P x.P(x)} (pN\pN) {\n.noir(n)} +-------------------------------------------------> + (S\N) {\x.noir(x)} + mon souris + (N/pN) {\P.exists x.P(x)} pN {souris} +----------------------------------------> + N {exists x.souris(x)} + il le attrape + N {il} ((S\N)/((S\N)/N)) {\P n.exists m.P(n,m)} ((S\N)/N) {\n m.attrappe(m,n)} + --------------------------------------------------------------------------> + (S\N) {\n.exists m.attrappe(m,n)} +----------------------------------------------------------------------------------< + S {exists m.attrappe(m,il)} + et mange + (((S\N)\(S\N))/(S\N)) {\P Q x.(P(x) & Q(x))} (S\N) {\n.mange(n)} +-------------------------------------------------------------------> + ((S\N)\(S\N)) {\Q x.(mange(x) & Q(x))} + est ? + ((S\N)/_var1) {\P x.P(x)} (S\S) {\S.exists x.S(x)} +-----------------------------------------------------> + (S\N) {\x.exists z67.x(z67)} + est quoi + ((S\N)/_var1) {\P x.P(x)} (((S/(S\N))/N)\(((S\N)\(S\N))/N)) {\A q.A(q)} +--------------------------------------------------------------------------> + (S\N) {\x q.x(q)} + très noir + ((pN/pN)/(pN/pN)) {\P n.très(P(n))} (pN\pN) {\n.noir(n)} +-----------------------------------------------------------> + (pN/pN) {\n.très(noir(n))} +================================================== +968 are left unparsed : + par de souhaite mon donne dorment ses attrape sœur méchant + pourchasse ses un elle donné souris qui méchant + fromage souhaite ses mange mangé dents voisin que un de + donner sœur mangé dents mangée le à quel souris ses + ? donner la qui un paisiblement quelle que mange fromage + mangé mangée de très à quoi fromage + avec sœur ? + de mange avec souhaite ses + sœur noir mon donne dorment rat fromage un dort + mangé noir quel souris elle + donne est que paisiblement + sœur que noir mon et un est paisiblement de + il quoi paisiblement voisin quel mon + fromage est mangé souris ses chat + rat de donné elle pourchasse souhaite avec noir dents + souris la dorment par dents + voisin lui quelle qui quoi par très donné donner + méchant donné avec quelle paisiblement dorment + pourchasse attrape lui + rat il et de le un donner que mon donné + dents mangée elle pourchasse mange dort le rat paisiblement + quoi qui de rat souris voisin souhaite avec ? + quoi avec fromage mangée + donner un fromage de elle pourchasse dort mangé souris + mange attrape par quel dents méchant donner très + mon le quoi noir de dents + voisin pourchasse donner dort méchant de elle + quel est sœur + rat chat + méchant fromage chat mange mangée + lui très donné + mangée noir voisin mangé la quelle donné donner qui ? + et quoi pourchasse attrape mon voisin ses paisiblement avec + la méchant donné + un pourchasse mon de le très donné sœur paisiblement + il un + et est noir mange souris chat lui de que quoi + lui attrape souhaite quel avec pourchasse sœur ses elle + pourchasse mangé ses quelle à chat paisiblement + par méchant dort donné souhaite + mange mon + et souris donner est + chat noir donner quelle + fromage attrape ? très est donné sœur rat + pourchasse quoi un est lui + par très le la de quel sœur attrape elle + fromage sœur quelle dort chat + ses voisin à souhaite + quoi de très voisin à + mange dort chat elle + très la mange que sœur + dents qui ses + avec dorment mangé dents ? + il voisin dort pourchasse ? mange dorment + pourchasse voisin méchant que elle la + dents à et méchant la ses mangé + très fromage de donner + attrape est avec + souhaite quoi + pourchasse ses souhaite mangée ? il est fromage de noir + donné que souris elle est quelle + quel souris mon paisiblement très dents dorment est + sœur dort par lui fromage paisiblement + quel il lui que mangée avec souris mangé + noir donné le de dents + il quoi lui + ? très + donne dents + ses quel dorment dort dents donné de souris et ? + voisin le + fromage donner est chat souhaite rat noir + mangée attrape chat mangé et + est dort elle + la sœur elle et dorment mangée voisin que + dort donne noir très il lui elle attrape ses + qui méchant donne de fromage et + dents à très quoi souris + le noir souhaite avec + donné la donner mon rat + dort méchant il très ? quoi + ? voisin un quelle mangée donne donné qui ses + souris dents la + il pourchasse + méchant le il lui et donner + pourchasse méchant mon + pourchasse voisin ses + dorment donné voisin le la ? à noir + pourchasse mangé donné très le et par + souhaite donner voisin qui mangée que à méchant + est quoi dort + lui dorment ? souris que chat pourchasse donné paisiblement + souris donne un sœur ses il voisin pourchasse très + mange qui ? le méchant souhaite voisin paisiblement donné + mange à + souris qui paisiblement attrape quelle dents mangée mange que + de mange dents donne + rat que + mon et dorment la méchant de attrape est quoi fromage + qui à est + avec sœur mangée quoi méchant quelle un est + lui et quoi + fromage donne mangée souhaite un dorment très dort et avec + la donne dort rat voisin chat quelle + lui fromage que à il + sœur quelle est + sœur souris est donne à lui + mangé qui il + quel dents est sœur pourchasse + sœur quoi méchant dorment très souris elle à un + pourchasse mon dorment avec fromage + que par méchant souris elle dorment dort très + dents mangée à sœur mange donné que très + à méchant et souris + dents sœur il dorment chat qui + dort sœur fromage paisiblement mangée rat de qui + un dorment et très mangé donné noir méchant que + est pourchasse quelle chat dorment très mon par elle paisiblement + voisin fromage pourchasse ses + lui mange pourchasse dents voisin la un mangé + dents de donné mangé à que mangée + quoi voisin mangée ses mange + est ? lui ses que très mon le quoi quelle + quoi et + voisin la chat de dorment elle + avec dort + quoi mangée + méchant quel à très mange + donner donné que mangée quoi mangé qui donne paisiblement et + dorment dort il quoi noir sœur mangée + fromage donne + donné méchant mon mangée mangé et qui dents le noir + donne mon par est fromage un mangée paisiblement attrape mange + quelle dents donne donner lui + souhaite mon paisiblement + très quelle voisin donne mon rat attrape + avec à sœur souris + avec il que la rat donne sœur de à fromage + ses par + quelle ? que mon ses à très un paisiblement + dorment souris attrape donné voisin sœur + ? fromage ses quelle de dorment mangé dort le + fromage mange donné il + quel donné sœur que avec + la souhaite dorment + ses par dents lui quoi mon souhaite + mange méchant + très quelle paisiblement est noir attrape mon mangée + elle il le qui attrape sœur dents lui et quel + méchant avec elle dort donné rat donne il + dort un dorment quelle est le à + voisin donne + paisiblement il quelle à + à sœur quel que pourchasse ? quelle par il dort + lui mon pourchasse méchant elle + à quel donne donner et de + dorment que chat méchant paisiblement + de il un très dents pourchasse + la souhaite quoi très qui dort dorment + fromage ? un mange + noir le + dents dorment il rat et donné donne paisiblement fromage + ? méchant lui un pourchasse + mangé il ? voisin mange de + très paisiblement donne qui attrape souhaite mangée + ? ses souhaite + un ? qui mangé mange dents méchant souhaite dorment est + quelle est ses la chat quoi le voisin pourchasse + souris dort avec donne quel sœur est donner de + par elle sœur quel pourchasse la et de très + ? à sœur ses mon il donner la + donné mon la souhaite attrape par + mangé avec dort est la rat donner donne + rat voisin ses le par lui souhaite + quelle quel et + dents méchant lui est dort donné + ses quel + de à que + noir ses mange dorment + que à lui + le que dort + quelle rat avec mangée ? un + donne mangée mangé par qui noir dents + souhaite quelle mangé noir la très rat + quoi très mangé paisiblement souris + lui souhaite que noir fromage très qui un + et dorment par souhaite avec + paisiblement quelle + que dort + paisiblement dents dort méchant + donné méchant dents qui pourchasse + sœur de dorment donne que fromage très pourchasse + la lui à est souhaite + dents chat mon la sœur souhaite dorment + souris dort sœur à + paisiblement fromage un et dorment mon + souhaite avec elle voisin rat ses lui sœur à + attrape que sœur + et dorment paisiblement quelle dort ses le mon + donner très le méchant souhaite fromage quel quoi + que donne avec et pourchasse à attrape voisin + par très est que rat souhaite + mangée de par + et ses un + lui donne noir attrape + la par dents donne il + le souhaite est + quoi souris + rat un souhaite souris + lui ? avec donne paisiblement donner mon méchant fromage + pourchasse voisin par sœur + fromage pourchasse attrape elle très que dents + dents un + quel et sœur dort est très par qui + ses souhaite rat ? paisiblement le et + quelle dents noir chat très ses mange il quel + souris qui chat quel elle sœur mon quoi ses de + mon souhaite sœur est dort que la quoi le et + un noir la mangé voisin pourchasse souhaite dents + il dort dents à ? + quel et dorment ses paisiblement souhaite rat + paisiblement rat mange donner quoi dort à sœur par + par mangée un souhaite ses et dorment donner + noir paisiblement il quelle dorment souris rat et pourchasse voisin + donne le + par pourchasse méchant lui quoi voisin + attrape noir souris mon très + mon mange un la lui très que + donner mangé que + lui ses pourchasse il ? un donner à donne + donner souhaite il rat que donné + dort mange lui de noir donné donne et + un attrape + fromage très donne chat quel dorment ses mangée qui + quoi que fromage + qui méchant rat sœur mangée dents par la + donner et donné quelle le par + il mangé le mangée + chat donner quel paisiblement + mangé noir et de ? très par fromage + attrape avec mangé + mangé souris quoi le chat quel rat quelle par attrape + noir elle + mange souhaite chat + donne quelle mange donner qui la donné + paisiblement mangée ses qui mange elle dorment donner avec voisin + est ses donné méchant mon qui mangée dents souris dort + donne de méchant à le donné quel noir un pourchasse + et la il voisin le dents quoi + par de quel elle avec mangé méchant donner rat souris + avec donné qui pourchasse rat il souris que + quel est quelle + paisiblement la + rat noir la + dort et quel + méchant la est dents ? elle mon + quoi elle il donner attrape qui ? le + méchant mon il mangée souris à mange sœur très + attrape dort donné est un à donner + qui rat donner sœur lui + voisin noir il donne + de un lui donne ses la le voisin + donné la donne voisin qui par + donne quel lui de paisiblement + quel un est quoi mon donné mangée donner quelle souhaite + souris lui attrape avec la + pourchasse souris + par paisiblement souhaite à attrape méchant + mange ses dents et quelle dorment paisiblement + mangée mangé voisin donné rat + chat très + mange très rat elle paisiblement donne + fromage donne la de donné le rat quel + et avec dort la lui méchant il donner + chat de noir le quoi + rat quelle sœur de mangée un la + fromage elle souris mangé donne + quel il ? est + quelle paisiblement il dents avec quoi de sœur + souhaite attrape dort souris noir donne est ses un mon + très dort ses dents et fromage à rat elle sœur + la quelle fromage quel + quoi à il + la de fromage rat donner + il souris ses chat un quelle voisin à + noir dort chat que + lui dort très attrape quoi chat dorment + pourchasse chat avec fromage + mangée la + quelle un souris dorment + mange lui sœur + elle sœur lui noir pourchasse dents qui la + dort souris méchant qui quoi + mangée paisiblement de quelle souhaite souris méchant attrape et très + sœur ses ? fromage qui par + donne très pourchasse rat paisiblement par quel à mon le + mange rat chat mon très quoi + de un elle paisiblement ? + elle quoi mange donner chat ? dorment + dorment chat ses donne mange ? + quelle un + quelle mangé donné + donner et souhaite qui mangée de pourchasse quel lui donné + à mangé lui dort le + lui dents souris + mange est donner donné dents quel fromage très et + que quoi sœur avec il un lui + noir dents pourchasse voisin de + le mon il voisin de et sœur + que dents + la ? + un donner donne sœur donné mon très elle + à donne + dents sœur mangé donner à chat + ? méchant + mangé il dorment sœur ? elle la + attrape de + que dents un quel mangée méchant quelle qui mangé + il mangé noir mange avec donné souris mon + donné méchant quel la avec souris ? + dort souris + est à dorment avec + mangé donné et souhaite un lui + dort un quelle souris + elle donné à + la fromage souhaite un avec que pourchasse donner mon + donné quoi à elle + rat méchant de + sœur donner mange avec pourchasse dents souhaite le que de + dort avec par souris dorment ses dents le mon + donner mangée + mange méchant elle pourchasse donner mon de voisin + avec qui paisiblement noir méchant mange + que à donne lui sœur donné paisiblement de + donné fromage avec sœur dorment dort paisiblement un + mon de que donné méchant mange et chat avec quel + donné que un mon pourchasse noir elle de souhaite + de fromage il avec donne mangé quel + de dorment avec dents lui + il que dorment donner par à quelle sœur dents + quoi le voisin il dorment avec donne quel lui + la rat chat sœur par méchant le il donne + mangée lui donné sœur + rat très + un fromage donné souhaite dents la + souhaite méchant par quelle sœur la dents paisiblement lui fromage + rat très mon donner mangé quelle mange donné le il + il chat est que ses lui de + qui donner quoi elle noir mangée ses pourchasse + à méchant paisiblement donner ses + dort souris dorment très de + donné mangée elle + souhaite la elle + donner quelle à très dort il ses mangée voisin est + souhaite de lui à mon quel et mangé avec chat + est rat donner paisiblement donne souhaite + qui chat noir mon par donne donné + voisin sœur de chat la qui fromage le méchant + ? voisin chat + fromage très quoi donner donné mangé le mangée de est + avec attrape par + le voisin un sœur méchant + ? chat avec souris quel mange mon dort il ses + souhaite très + mangé souris qui + noir fromage mon quelle est + donne ? le mon rat mange quel chat + est souris donne méchant mangée un + quoi de très ? sœur souris quel par que voisin + qui elle de fromage noir le + elle donné il souris attrape voisin + dort quelle très par donne sœur pourchasse avec à + donné souhaite elle rat attrape méchant noir souris mon dort + dort il souris que quoi elle mon mangée rat + lui souris un souhaite paisiblement il la + est par pourchasse voisin donne rat de + donné à que dorment mangée + donner la sœur quoi pourchasse noir chat + voisin un donne + ses sœur avec souris de noir mangée quoi + méchant chat attrape avec dorment que mange quoi à + ? la mon quel dents + la de dorment souhaite dort + noir attrape mangée + il elle et qui avec lui mangé de mon + paisiblement souris rat et dort lui un dents + la pourchasse ? que donné + ses quel noir souris fromage dorment ? elle + un mange dents très méchant mangé dort quel souhaite rat + dort ses par + de sœur très un + quoi rat + méchant dorment + voisin quelle que rat donner sœur ? très + mangée est dorment le quelle mangé + quel avec le dorment souhaite souris à donné elle + pourchasse et mangée avec donné est qui donner que noir + attrape il elle mangée rat souris lui + paisiblement donné la avec mangé fromage donner + ? la mangée chat que attrape avec souhaite mange + mangé paisiblement donne rat + méchant sœur que paisiblement mange + et il qui sœur attrape donné + elle dort souris souhaite + mangée sœur qui quelle pourchasse + noir mangé un fromage très elle à + mangée de donne paisiblement + donner quel mangée + attrape par donner souris et + à par que mangée attrape mange + mange dents de ses qui + mange par un il dents que + donné à + voisin un très avec méchant qui attrape mangé est donner + dort elle méchant le + fromage est sœur mangée souris paisiblement dents un + à souris la un avec donné paisiblement de + ses donné attrape la donne souhaite lui ? + attrape méchant de ses mange très + la le paisiblement il avec mangée lui + sœur à attrape donner et + paisiblement donné noir et très chat quelle par + mange donné que quoi attrape qui + mange que à est donner attrape rat la chat et + très et méchant il dents voisin dorment avec + donné elle méchant + rat mangé ses mangée attrape le la très par + quoi dorment ses noir et quel mangé sœur rat avec + donner attrape à quel donne très méchant + à le la mon elle rat + est mon quelle quel fromage voisin avec qui donne + quel fromage avec mangée noir que + à un qui mangé + ? donne souhaite chat sœur de très qui + très ? dorment mangée méchant pourchasse attrape + pourchasse quoi souris donne sœur mangé le un + pourchasse donné ? quoi souris + quoi chat dents avec mon très fromage à + à mangée sœur voisin rat noir + un souris paisiblement il mange la par dents ? + et sœur + mon sœur le attrape fromage noir donné mange rat + très par il paisiblement donner pourchasse quel rat + rat que + sœur donne dents de quel quoi que pourchasse attrape donné + et avec sœur donné souhaite dort lui est quel rat + lui le dort la souris paisiblement avec ses fromage + elle avec noir et dents un dort par à chat + souhaite un ? souris elle le + méchant avec quel à lui mon + chat avec + et voisin chat de le donner + sœur donne avec mangé la par donné le + dorment mangée mon souris ? elle rat quel et ses + dorment dents quoi lui souris de à donne attrape rat + fromage un dents à chat mangé est + que ? fromage mangé + mon chat donner il voisin le est + sœur ses quoi mon pourchasse à avec + il dents ? avec + donne méchant donné chat souhaite noir le + ses et rat mange voisin + la quel que rat + donne donner quel paisiblement que avec + pourchasse un + pourchasse souris de qui méchant il paisiblement noir rat + souhaite il la que très mon est quel ? donne + souhaite attrape qui sœur lui souris donné + le ? mangée dorment + à chat voisin fromage donner est elle donne quoi + il et un sœur voisin à la mange quel souhaite + dorment est + lui est dents voisin quelle la il + attrape de et souhaite elle la mangé rat le + est dorment le un de mangé + dort un sœur la à mange mon + ses dorment ? souhaite de donner méchant qui avec + pourchasse dort + mangée donné est elle dorment + donne mangée fromage mangé que + donner rat à très + que donne la méchant chat attrape est + dents noir par et méchant il + quoi donne que dort + rat chat que à ses très donner + sœur très méchant avec paisiblement donné + sœur ? dorment quelle que lui + souris donné souhaite voisin le de attrape + et de un est rat la + lui dort que voisin et ? est de quelle avec + paisiblement mange et donne + paisiblement mon quoi il + dents voisin chat fromage le + dort avec et par ? mange souhaite il pourchasse sœur + ses chat paisiblement + paisiblement est avec + mange sœur méchant dorment elle + souris elle quel par dents pourchasse mon de souhaite + quel dents pourchasse le + voisin pourchasse souhaite à sœur mange + quoi par souhaite + de voisin souris mon souhaite dort rat donner + voisin par + de chat attrape + souris méchant donner dort le mangée quoi elle il avec + souhaite dents sœur méchant chat mangé rat + méchant lui souris à + dorment la dents + mangée elle quelle + rat quel attrape mange sœur est noir + donné dort chat ? avec la est voisin qui à + donner et rat + voisin attrape chat fromage le + donner dorment fromage très voisin que + chat donne dorment mangée pourchasse de est elle avec + quelle donné + voisin il dents mangée et avec est elle + quel très dorment attrape + dorment mangée le par ses + mangée à + qui à + quelle ? donner mon + un donné paisiblement dorment qui est mangé + attrape quel il la chat lui rat quelle + le mangé quelle elle avec + quoi très quelle à un méchant + souris elle rat quoi mange chat attrape + chat voisin mangée quelle est paisiblement quoi + fromage il le un souhaite la dorment par très + elle noir de le très + donne par mangée quel souris paisiblement de et sœur + voisin pourchasse par mangé donne + par mangée un lui donner que très qui et + lui mon par chat paisiblement donné à dort méchant elle + souhaite dort de est + mange est il paisiblement à + souhaite et rat paisiblement + rat mange dort dorment + donné paisiblement + et ? + mange elle quelle méchant et + dort elle le + que chat méchant qui mon lui donne mange souhaite + donné dorment paisiblement méchant que par ses elle de donner + le mangé + lui noir donne à quoi + dorment donne attrape un mon ses souhaite donner + très fromage quel est lui le elle dents + il ? avec que + méchant mange elle mangé fromage la + mangée qui dort mange dorment + chat donner rat méchant souhaite + quelle chat + souhaite ? est + quelle ? mangé noir souhaite + le pourchasse mangé donné lui + ses à quoi + fromage voisin que à le par méchant rat elle + de et un ses quelle quel mangée + est avec attrape paisiblement qui voisin lui sœur et fromage + de dents + est donné mangé un méchant voisin sœur + attrape mangée noir donne dorment dort un le par et + il méchant avec un et + mangée donner est quelle elle sœur + donné mange lui très + mangée très donné chat il attrape lui et mon + elle rat fromage noir dort donné paisiblement pourchasse + rat quoi fromage très paisiblement la dorment et quel + et mangé la est souhaite dorment voisin fromage dents + fromage sœur dort souris et méchant noir donné par qui + est rat avec dorment mangée ? + dort qui attrape très le de souris elle un quoi + souhaite méchant donner noir mangé par dents + donne le + chat la quoi quelle très ses + lui rat un quel elle + mon par quelle très dents donner lui attrape + souris elle ses attrape souhaite donner quoi mangée + méchant il souhaite donner mangé mange que dort lui souris + dents souhaite noir méchant paisiblement + paisiblement dents ses un souhaite pourchasse donné attrape souris qui + attrape souris + par mangée dents pourchasse lui + souris mon ses + à sœur fromage quelle noir quel est + quoi donne souris + que mon + mangée quelle dorment elle la quel et qui + mange paisiblement le ? un de + dorment méchant à + avec ses qui + sœur le mange qui est dort méchant souris ses donné + dort noir donne quelle lui méchant avec + paisiblement qui la et + quoi voisin + sœur chat + mon est de dort lui dorment fromage attrape avec + souhaite fromage mangé donné est + quel paisiblement pourchasse très à qui il voisin par + la donner elle + et pourchasse est attrape dents quoi + ses souris mangé dents méchant est rat quelle voisin + chat que de pourchasse ses dort très mangée mangé à + attrape dorment mon souhaite de dents sœur noir donné + que donne à qui + à qui + donné dents voisin + fromage méchant voisin + quel rat mangée donner mon elle chat souris avec + et méchant attrape dort mangée quoi souris voisin fromage rat + ? souris mon quoi à donne la mangée quel dort + donner pourchasse un la + le dort avec de + mange quoi le + le dorment ses souhaite noir dents avec + quel est lui mange et sœur paisiblement + que ? rat très lui quel méchant le mange fromage + dorment très à + de dents fromage dorment est et elle ? paisiblement noir + mangé quelle qui un sœur dort par attrape fromage mon + paisiblement ? attrape souhaite la ses mangée voisin un lui + quoi voisin qui il mange + le il mangé dorment + avec il quoi attrape ses elle mangé + chat méchant donner pourchasse donné souhaite + donner qui + paisiblement mange quoi attrape est dents méchant donné fromage sœur + dorment noir souris de il sœur ? voisin le + méchant très quelle dents + rat ? qui mangé la ses + lui mon et par + paisiblement quelle le mange dorment donner il quel attrape + quelle donne + il elle quoi sœur dorment + mon quoi avec mange ses souris mangé le ? + le que pourchasse quel voisin quoi lui + mon attrape de à donne il souhaite paisiblement mangé avec + dort souhaite qui il donner ses rat et mange + est donner à ? dents très il + paisiblement de ses + souhaite mange ses qui mangée lui il est + avec quoi quelle donné chat noir quel + méchant quoi le dorment par très quelle que + donné le que un attrape + par dort dents pourchasse ? quel noir mangée + dorment et + mon la paisiblement mangée et donner souris un avec dorment + souris est mon + mon ? + ses dents elle donner voisin attrape le il + voisin ses à dents mangé de + noir lui elle dents donné est que à pourchasse + ses par paisiblement rat quel + par pourchasse ses qui mangée + à noir méchant quel mangé attrape + paisiblement de qui très quoi noir sœur mon donné voisin + fromage mange dort le + quelle très + quel mon voisin lui méchant à pourchasse donne que rat + rat mon il pourchasse + quoi est mange souris la sœur fromage + voisin fromage et mon mangée + souris chat paisiblement noir rat qui par donné quelle avec + mangé mange à dort un ses il sœur + quoi quelle très voisin dents + quoi dort dorment dents donne + quel par + que et ? quoi à dort + quoi quel elle + voisin à donner souhaite paisiblement + chat pourchasse quoi donner paisiblement un lui elle + la quel mange quelle un paisiblement mon dorment que ses + attrape lui ? elle dents mangé noir chat que + paisiblement fromage quel sœur que lui ? dort quelle dents + mange il ? ses quelle elle la un + par donner mangé donne très de ? quoi mon + mange dort + méchant il mangé quel attrape + qui chat avec quoi à il ? la dorment + quelle noir pourchasse sœur quoi + la elle souhaite qui le mon pourchasse paisiblement donner + quoi ses mon par voisin + elle paisiblement + le ses paisiblement + dorment elle dents avec + mange lui le de qui quoi attrape + la elle souhaite dorment à de chat ses + fromage le souris noir que très avec un attrape donné + à quelle donne de noir est souhaite et + il quoi lui noir sœur dort méchant à donne + quoi dents souhaite très lui elle par ses donner sœur + par mon donner + mangé de mange est avec + de mon par ses pourchasse quel méchant un la attrape + fromage mangé dorment quel de + elle fromage + mon lui très méchant fromage à chat quoi ses + voisin noir de que dorment le + qui voisin est + est qui chat elle + lui la elle mange ? + donné attrape mangée pourchasse dents + sœur lui + de dorment noir + attrape mon ? qui donne rat par quel un noir + à quel voisin attrape mangée donne + mangée chat + avec mange souris noir + avec qui mangée elle mange mon le voisin fromage quoi + donner rat + mon lui mangé pourchasse dort + ? ses + et la + que un ? souris sœur mon + elle que attrape est à donné il mangée + dorment dents mange pourchasse le est et lui la + chat attrape pourchasse donné + quelle ses + dort par pourchasse mangé mange dents avec mon un noir + souhaite donné que ? la à dorment mange + rat mangé méchant sœur à pourchasse quelle donner + méchant donné sœur + dort quoi mangé + chat le elle qui ? sœur dorment il voisin + lui donné dents donne noir souris de + il noir souhaite mangé avec souris que pourchasse + donne attrape mangé très chat + dorment pourchasse mangée ses paisiblement + quoi noir attrape de est ? par + avec souris donné la + par mangée attrape il donné + quelle quel mangé + à ses + quoi qui très fromage la lui à et attrape + méchant avec à le mangé lui paisiblement quoi sœur + mangé voisin donné quel il avec mangée lui + ? rat à + chat quelle de rat noir mon très dort + la très elle dort chat + chat quelle par dort + pourchasse elle lui noir donné + mange mon qui ses quoi mangée donné noir et + chat paisiblement qui noir donner et donne + chat qui ses paisiblement de + mange ? donner noir + donner quelle pourchasse un par que le + noir attrape dort et ? un chat + par souhaite méchant est quel + elle souris voisin un est la pourchasse quel + sœur un méchant + dorment et avec + chat le et qui mangée quoi un + sœur la donner avec souhaite voisin un méchant chat + rat noir pourchasse par fromage que mangé le donne et + quoi fromage donné mon dort + ? quelle souhaite quel dort + chat sœur + donné lui fromage le un par + donné qui chat très mangé quel + ses dort par + dort ses de + mangé rat est attrape méchant donne elle à dents qui + pourchasse rat sœur donne qui le elle que + très de donner attrape donné quelle + lui ? qui mangé le + est de voisin souhaite paisiblement pourchasse quoi mange donne + donné mangé donner lui attrape elle sœur + attrape ses ? que + mange mangée de par fromage + ses il ? dorment dort paisiblement mon + donne fromage le donné un dort et quel + quelle souhaite + il à quel est dorment donne donner souhaite de pourchasse + qui donne mon ses fromage la quelle ? dorment + lui voisin mangée et chat attrape dorment ses méchant pourchasse + voisin pourchasse mangée dorment mangé fromage qui attrape méchant + dents voisin par un + ? mangée par et mon à + qui donne mangé rat ? + la quoi donner quelle pourchasse chat dents et il de + lui souris voisin par donner + et elle + rat et méchant est elle quelle de à fromage + chat est mangé + par donné dorment avec donne un très lui + chat avec mangé et à qui quoi donné rat mon + que attrape et donne pourchasse quel rat + ? donne à quoi très + chat dort mangé attrape mangée qui que quel sœur dents + quoi fromage et par que pourchasse + à est la mange quel ? dorment dents qui + sœur méchant quelle de mange lui que il dort + dort elle que donné mangée très et souris fromage donne + quelle mon dorment lui donné ses + par voisin mon donner méchant attrape souris mangé elle quoi + ? pourchasse attrape + pourchasse est que un la rat méchant le dents fromage + très elle fromage mangée donne voisin pourchasse + donne dents elle avec mon de + ? attrape mange dorment chat + quoi un paisiblement + souris mangée + quel et mangée chat méchant de souris le + quoi sœur de dents il quelle + souris attrape donné avec la mange voisin noir quelle paisiblement + le souris quelle quoi que + mon donné ses très de ? mangé + est donner avec de mangée mange ? fromage noir le + elle dort paisiblement donner il pourchasse est par lui que + donné et le un souhaite souris noir + mon très elle noir et chat pourchasse rat mange un + qui pourchasse dorment attrape et quoi + attrape voisin de + très donné le donner de rat souhaite un il elle + voisin quelle avec attrape chat + mangé donné voisin qui + attrape souris donne dents + avec ? est que mange dort quoi dents + noir mangé très et la quelle donner lui mange dort + noir très et la dort + fromage mangé elle dort noir quoi un + dents donné chat + donne méchant sœur quoi très ses rat la + noir ? elle donné de la fromage + de donne quel avec et donné + mon quel le mange la mangé souhaite sœur + voisin de qui + donne pourchasse noir de mangée fromage la + souhaite mange quelle la + voisin et il qui un + que et quel méchant pourchasse paisiblement sœur ? + quoi dorment très mange rat donné + qui dents avec quel mange ? + quelle rat souris le mon lui + paisiblement sœur donne mangé rat un fromage méchant ses donner + il méchant ses pourchasse noir elle de + la avec mangé donner + noir méchant il paisiblement et par à + donner qui souhaite la + rat pourchasse il la elle attrape à chat quoi est + elle souhaite + dort pourchasse mon le donner mangé quelle souris + dents que dorment mange donner ? sœur et + dort elle donner + et ses quel avec voisin à mon donner très de + quoi très voisin rat ? ses méchant lui + souhaite par le attrape souris donner dort donné de quel + qui voisin + donner de méchant donné elle voisin + ses le attrape + sœur lui + que il ? méchant mangée voisin par + quoi dorment ? et quel avec + pourchasse donné ? le sœur il mange quelle rat + quoi qui rat dorment la souris mange pourchasse le il + il et de mange noir + est ? il sœur le que + donné lui quoi + sœur mangée donné + quelle très mangée paisiblement + par lui mange que méchant mangée + dorment et + sœur elle + pourchasse attrape de fromage mon à + donner le est il quoi + méchant donné rat par mangée la donner + dorment fromage + sœur dort lui chat qui mange elle quelle ses noir + dort mon dents quoi le chat avec + voisin mangée un souris la sœur et dort + elle méchant le + souhaite dorment par chat + quoi donné elle un quelle méchant + à mange donné dort la + ? paisiblement ses et + elle souhaite + il souhaite attrape + chat et un donner il souhaite + donné donner rat la mangé souhaite quel attrape par dents + de ses noir elle mon avec est et + dorment souris avec fromage il + mange un est très fromage quel donner elle mangé + dorment ? que + fromage quoi dort mange chat est quel + pourchasse mange dorment méchant est donne ? elle + de attrape un qui dort sœur pourchasse paisiblement quel dents + rat dents + quelle dort + ? est dorment souhaite + chat mangée ? attrape lui fromage + dents mange noir quelle souris quoi ? qui le + noir attrape la + souris un fromage voisin rat quoi + noir souris mange est voisin lui elle + il quelle dents mangé ? très à pourchasse de + voisin très qui elle mange lui quelle rat + le souhaite très mange lui sœur quel donne dents + mange très souhaite + dents elle dorment le très mangé sœur et souris que + il lui dents ses donné souris + donne donné souhaite la de ? attrape pourchasse + quoi quelle mon dorment donne donner pourchasse paisiblement mange + paisiblement noir + le dorment elle ? il mangé mangée paisiblement la mange + donner dorment méchant attrape noir quelle de sœur + le mangée dort quelle fromage souhaite mon + le mangé à + mange souhaite + dents mangé qui de méchant par + à qui un elle souris et quelle noir + donner quoi est chat + que souris elle ses un par pourchasse chat dort le + dort paisiblement chat + dents donner quelle noir donne méchant mangée quoi + souris lui rat attrape chat + le voisin rat attrape donner fromage mange elle + la que mangée quelle quel qui et voisin + mange pourchasse + mangée le souhaite par très donné un lui avec + ses attrape elle mange très pourchasse donner + noir quelle donné quel dents ses est donne mangé qui + sœur un ? et fromage il ses mangé + mangée méchant + pourchasse mangée quelle donné dort la + noir mange paisiblement est ses donné très à qui + ? souhaite donné noir + donne donné quel rat ses souhaite noir un + mange souris il la très dorment + un à rat + quelle donné sœur ? qui donne voisin donner de + fromage voisin lui rat avec qui + et voisin + de avec elle noir qui + mangée pourchasse elle par est souhaite ses très à + dort chat ? noir de mangée avec + mangé pourchasse souris attrape fromage ses + mangé la le voisin mon souris + noir mangé qui souris avec + donné mangée + qui quel que paisiblement et très donner + que de mon est un elle mangée rat méchant + donne que avec ses donné elle + mangée sœur un souris mon + donne elle attrape paisiblement fromage il donné dents + paisiblement mangée est que il + pourchasse et très + fromage dents donne à la méchant avec lui + souhaite quelle dorment rat dents pourchasse la + ses dorment très il souhaite + donne elle la dents il fromage lui quelle sœur mangée + paisiblement attrape par ? noir quelle ses un sœur + par la donne pourchasse très elle le souhaite ? + il mange et de fromage dort ses + il mon à et + la à dents est le souris un noir + dorment paisiblement ? méchant + mangé très + elle attrape dents et qui donner méchant ? dorment mon + souhaite sœur lui très rat voisin qui + mangée que mon il attrape + mon souhaite donné + mangée souhaite donne qui rat et paisiblement avec ses dents + sœur il mangée chat elle paisiblement à + avec mangée rat quelle mange pourchasse à ? + lui voisin paisiblement donne dort avec + dorment paisiblement et que + et il elle lui rat quel + le pourchasse que donne méchant mangée de dents est dort