• Aucun résultat trouvé

Pour obtenir les sources au complet se rendre sur : https://github.com/focom/proto-memoire Une partie des commandes cypher pour générer le graphe du domaine :

def createQuery(name):

beginQuery = "CREATE (student:Student {name:" + f"'{name}'"

+",personality:[2,3,10]})," createQuery = beginQuery + """ {name:"homophone",grade:0,id_node:5,history:0,score:0}), //Level 2 (Ceasy:Chapitre {name:"Contenus dapprentissage",grade:0,id_node:6,score:0,weight:0,history:0}), (Chard:Chapitre {name:"Contenus dappronfondissement",grade:0,id_node:7,score:0,weight:0,history:0}), (Tphrase:Chapitre {name:"Type de phrase",grade:0,id_node:8,score:0,weight:0,history:0}), (conjugaison:Chapitre {name:"Contenus pour laccord du verbe",grade:0,score:0,weight:0,id_node:9,history:0}), (omonyme:Chapitre

{name:"Homonyme",grade:0,id_node:10,score:0,weight:0,history:0}),(autre:Chap itre {name:"Autre Cas",grade:0,id_node:11,score:0,weight:0,history:0}), // Relation between chapter

(student)-[:link]->(t1), (t1)-[:link]->(t2), (cphrase)-[:link]->(t1), (tphrase)-[:link]->(t1),(homophone)-[:link]- >(t2), (Ceasy)-[:link]->(cphrase),(Chard)-[:link]->(cphrase), (Tphrase)-[:link]->(tphrase),(conjugaison)-[:link]->(tphrase), (omonyme)-[:link]->(homophone),(autre)-[:link]->(homophone), // Exercice 1

(:Exercice {id_node:12,instruction:"Trouve le sujet", question:"Mon petit frere derange les visiteur", answer:["petit frere","visiteur"], correct:"petit frere"})-[:link]->(Ceasy),

(:Exercice {id_node:13,instruction:"Trouve le sujet", question:"Je vais parler à mon pere, demain matin", answer:["je","pere"], correct:"je"})- [:link]->(Ceasy),

(:Exercice {id_node:14,instruction:"Trouve le sujet", question:"Ma soeur Isabelle partage mes impressions", answer:["Isabelle","impressions"],

(:Exercice {id_node:15,instruction:"Trouve le sujet", question:"Mon petit frere Pierre regrette ses gestes", answer:["Pierre","gestes"], correct:"Pierre"})-[:link]->(Ceasy),

(:Exercice {id_node:16,instruction:"Trouve le sujet", question:"Au souper, mon pere le réprimandera", answer:["pere","souper"],

correct:"pere"})-[:link]->(Ceasy),

(:Exercice {id_node:17,instruction:"Trouve le complement de la phrase", question:"La petite sexcusera à la prochaine visite", answer:["à la

prochaine visite","La petite"], correct:"à la prochaine visite"})-[:link]- >(Ceasy),

(:Exercice {id_node:18,instruction:"Trouve le complement de la phrase", question:"Mon pere doit le reprendre plusieurs fois", answer:["plusieur fois","Pere"], correct:"plusieur fois"})-[:link]->(Ceasy),

(:Exercice {id_node:19,instruction:"Trouve le complement de la phrase", question:"Jaime la pizza avec du poivron", answer:["avec du poivron","la pizza"], correct:"avec du poivron"})-[:link]->(Ceasy),

(:Exercice {id_node:20,instruction:"Trouve le complement de la phrase", question:"Morgane trouve un mouton rouge dans le champ", answer:["dans le champ","Morganne"], correct:"dans le champ"})-[:link]->(Ceasy),

(:Exercice {id_node:21,instruction:"Trouve le complement de la phrase", question:"Le voisin decouvre le tresor dans le jardin", answer:["dans le jardin","decouvre"], correct:"dans le jardin"})-[:link]->(Ceasy),

(:Exercice {id_node:22,instruction:"Trouve le verbe", question:"Morgane trouve un mouton rouge dans le champ", answer:["trouve","dans"],

correct:"mange"})-[:link]->(Ceasy),

(:Exercice {id_node:23,instruction:"Trouve le verbe", question:"Meme si nous sommes en hivers", answer:["sommes","meme si"], correct:"jaime"})- [:link]->(Ceasy),

(:Exercice {id_node:24,instruction:"Trouve le verbe", question:"La vache broute lherbe", answer:["broute","lherbe"], correct:"broute"})-[:link]-

>(Ceasy),

// Exercice 2

(:Exercice {id_node:25,instruction:"Trouve le sujet", question:"Les mathematiques sont une matierre difficile",

answer:["mathemathique","Matiere"], correct:"mathematique"})-[:link]- >(Chard),

(:Exercice {id_node:26,instruction:"Trouve le sujet", question:"Chaque cours, les eleves de ma classe tracillent fort ", answer:["les

elevent","cours"], correct:"les elevent"})-[:link]->(Chard), (:Exercice {id_node:27,instruction:"Trouve le sujet",

question:"Heuresement, notre professeur nous aide beaucoup", answer:["notre professeur","nous"], correct:"notre professeur"})-[:link]->(Chard),

(:Exercice {id_node:28,instruction:"Trouve le sujet", question:"Madame Christine nous encourage sans cesse", answer:["Madame Christine","nous"], correct:"Madame Christine"})-[:link]->(Chard),

(:Exercice {id_node:29,instruction:"Trouve le sujet", question:"Nous avons tous reussis lors du dernier test", answer:["Nous","tous"],

correct:"Nous"})-[:link]->(Chard),

(:Exercice {id_node:30,instruction:"Trouve le complement de la phrase", question:"La prochaine fois, ma classe participera a un concours",

answer:["la prochaine fois","un concours"], correct:"la prochaine fois"})- [:link]->(Chard),

(:Exercice {id_node:31,instruction:"Trouve le complement de la phrase", question:"Madame Christine exigera le meilleur de nous", answer:["de

nous","exigera"], correct:"de nous"})-[:link]->(Chard),

(:Exercice {id_node:32,instruction:"Trouve le complement de la phrase", question:"Chaque fin de cours, elle nous remet des problemes a resoudre.", answer:["chaque fin de cours","des problemes a resoudres"], correct:"chaque fin de cours"})-[:link]->(Chard),

(:Exercice {id_node:33,instruction:"Trouve le complement de la phrase", question:"Le soir, à la maison, mes parents maident", answer:["à la

maison","maident"], correct:"à la maison"})-[:link]->(Chard),

(:Exercice {id_node:34,instruction:"Trouve le complement de la phrase", question:"Mon ami Mario et moi travaillons en equipe", answer:["dans le jardin","decouvre"], correct:"dans le jardin"})-[:link]->(Chard),

(:Exercice {id_node:35,instruction:"Trouve le verbe", question:"Nous voulons gagner le concours le mois prochain", answer:["voulons","prochain"], correct:"voulons"})-[:link]->(Chard),

(:Exercice {id_node:36,instruction:"Trouve le verbe", question:"Sous la pluis, je suis bien couvert sous mon parapluie", answer:["suis","couvert"], correct:"suis"})-[:link]->(Chard),

(:Exercice {id_node:37,instruction:"Trouve le verbe", question:"Dans la savane, le lion est le rois des animaux.", answer:["est","des animaux"], correct:"est"})-[:link]->(Chard),

[…]

return createQuery

Pour les calculs de cote et de répartition probabiliste :

import numpy as np

# import matplotlib.pyplot as plt

def make_gauss(N, sig, mu):

return lambda x: (N/(sig * (2*np.pi)**.5) * np.e ** (-(x-mu)**2/(2 * sig**2)))

def getScore(history, array): return 0

print('history: ',history) print('array: ',array)

percentage = [0, 0.4, 0.6, 0.8, 1] print('longuer array: ', len(array)) importance = 1/len(array)

totalScore = 0

for score in array:

temp = percentage[score] * importance totalScore += temp

s80 = totalScore * 0.8

s20 = percentage[history] * 0.2

print('s80: '+str(s80)) print('s20: '+str(s20))

print('score du vecteur: '+ str(s80 + s20)) return s80 + s20

def generateRepartition(score): x = np.arange(-100, 100, 0.1) sig = np.sqrt(100)

sig=0.1

mu = score # Correspond a p(m) => esperance mu = 0.44

x1 = np.arange(-1000, 0.4, 0.001) x2 = np.arange(0.4, 0.6, 0.001) x3 = np.arange(0.6, 0.8, 0.001) x4 = np.arange(0.8, 1000, 0.001)

p1 = trapz(make_gauss(1, sig, mu)(x1), x1) p2 = trapz(make_gauss(1, sig, mu)(x2), x2) p3 = trapz(make_gauss(1, sig, mu)(x3), x3) p4 = trapz(make_gauss(1, sig, mu)(x4), x4)

print('p(0) == 1 si le vecteur est nul sinon p(0) == 0') print('p(1): '+str(p1))

print('p(2): '+str(p2)) print('p(3): '+str(p3)) print('p(4): '+str(p4))

print('Somme des probabilite : '+ str(p1 + p2 + p3 + p4)) def printGaussian(m): ax = plt.figure().add_subplot(1,1,1) x = np.arange(-100, 100, 0.1) s = np.sqrt(100) # m = [30] # Correspond a p(m) => esperance c = ['b'] gauss = make_gauss(1, s, m)(x) ax.plot(x, gauss, c, linewidth=2) plt.xlim(-100, 100)

plt.ylim(0, 1)

plt.legend(['m='+str(m)+' s=sqrt(100)'], loc='best') plt.show()

def getGrade(score): if(score < 0.4): return 1

if (0.4<= score and score < 0.6): return 2

if (0.6<= score and score < 0.8): return 3

if (0.8 <= score and score < 1): return 4

else:

return 0

Classe responsable de l’interface de jeu :

from tkinter import *

import numpy as np

import time class Game: def

__init__(self,main,instruction,question,correct,wrong,number_exer,id_node):

self.a_instruction = instruction self.a_question = question

self.a_wrong = wrong self.gui = main.gui self.main = main self.number_exo = number_exer self.id_node = id_node self.iteration = 0 self.numberCorrect = 0 self.numberWrong = 0 self.timesCorrect = [] self.timesWrong = [] self.nbCorrect = 0 self.nbFalse = 0 self.instruction = StringVar() self.question = StringVar() self.correct = StringVar() self.false = StringVar() self.tips = StringVar() self.error_count = 0

def askExercises(self): # efface l'écran

for widget in self.gui.winfo_children(): widget.destroy()

# Met en place l'archi pour les exercices

instruction = Label(self.gui,textvariable=self.instruction) instruction.grid(column=1,row=0,columnspan=3,rowspan=1) question = Label(self.gui,textvariable=self.question) question.grid(column=1,row=2,columnspan=3,rowspan=1)

correct = Button(self.gui,textvariable=self.correct, command= lambda: self.stepInExercise(True))

false = Button(self.gui,textvariable=self.false, command= lambda: self.stepInExercise(False))

correct.grid(column=1,row=4,columnspan=2,rowspan=1) false.grid(column=3,row=4,columnspan=2,rowspan=1)

self.instruction.set(self.a_instruction[self.iteration]) self.question.set(self.a_question[self.iteration])

self.correct.set(self.a_correct[self.iteration]) self.false.set(self.a_wrong[self.iteration]) self.startTime = time.time()

def showTips(self):

tips = Frame(self.gui,borderwidth=2,relief=GROOVE) tips.grid(column=1, columnspan=4,row=6, rowspan=3) tips_label=Label(tips,textvariable=self.tips) tips_label.pack(padx=10,pady=10)

self._getStudentTip()

Button(tips,text='OK',command=lambda:tips.destroy()).pack(padx=10,pady=10) return 0

def _getStudentTip(self):

if (self.main.student.mechanic == 0):

self.tips.set('N\'hesite pas a parler de cet exercice avec tes camarades')

if(self.main.student.mechanic == 1):

self.tips.set('Continue tes efforts, tu va rattraper le score des tes camarades')

if(self.main.student.mechanic == 2):

self.tips.set('<Marchant> Lit ce parchemin, il te sera utile')

def stepInExercise(self,bool): # Save the time to answer if(bool == True):

self.nbCorrect += 1

time_to_answer = time.time() - self.startTime self.timesCorrect.append(time_to_answer) else: self.error_count += 1 self.nbFalse += 1 if(self.error_count == 3): self.showTips() self.error_count = 0

time_to_answer = time.time() - self.startTime self.timesWrong.append(time_to_answer)

# iterate on exercise self.iteration += 1

# Calculate time to answer

if(self.iteration == self.number_exo): #si plus de positif

a = np.array(self.timesCorrect) mean = a.mean()

# si moyenne temps inferieur a 15s alors 4 if (mean < 15): grade = 4 # sinon 3 else: grade = 3 # Si plus de negatif else: a = np.array(self.timesWrong) mean = a.mean()

# si moyenne temps inferieur a 35s alors 2 if (mean < 35): grade = 2 # sinon 1 else: grade = 1 # Quit exercise print('end') self.main.endExercise(grade,self.id_node) return 0

# Change text on screen

self.instruction.set(self.a_instruction[self.iteration]) self.question.set(self.a_question[self.iteration])

self.correct.set(self.a_correct[self.iteration]) self.false.set(self.a_wrong[self.iteration])

Documents relatifs