Des sous-titres ont été insérés pour découper l'ensemble et des regroupements thématiques de quelques entrées peu développées a pu être effectuées ici et là mais l"ordre chronologique des entrées est respectée.
******************************************** Extraits du Rapport de développement projet: Mots -> Jeux de mots... Juin 1998 -> juin 1999 ********************************************
Affichage des propriétés des mots dans une fenêtre de propriété
propre au mot sélectionné...
Cette fenêtre utilise un dialogue qui devra s'ajuster
selon la catégorie de mot. Ainsi selon les attributs
disponibles pour la catégorie, cette fenêtre modale
permettra l'ajustement des attributs qui sont modifiables
tels le genre pour les adjectif, nombre pour les noms, temps,
personne, mode pour les verbes etc.
Cette implantation suppose le transfert des données pour chaque mot au moment de sa saisie dans la liste. Mise au point de la routine d'assignation des paramètres. Le moment approprié pour l'activation de cette routine est le DragDrop sur le panneau de travail, au moment de la création de la copie du mot (instanciation de PMot).
nouveau design des classes de mots:
Dans le but d'installer plus de polymorphisme entre les diverses classes
de mots, j'ai repris la classification en basant ces classes
sur une classe de base (TWord) formé des champs suivants: cat(catégorie),
index, lexique. Toutes les autres classes en dérivent, n'implémentant parfois
qu'un champ ou deux de plus. Ceci constitue une économie de code en évitant la répétition de
ces trois champs dans toutes les classes.
En même temps, toutes ces classes ont èté retirées du modules des listes Ceci révèle la distinction entre les classes des mots et celles des listes de mots. Je me demande s'il ne serait pas possible de faire la meme chose avec les classes de listes...
La tentation est grande de se séparer ici du design précédent pour
entreprendre un design basé sur le mot comme étant au centre de la phrase
Dans ce design, il serait possible de n'avoir que deux listes de base:
noms et verbes, par lesquelles on atteindrait les déterminants et les
adjectifs à partir des noms. Ces listes feraient alors partie de l'opération
d'édition du nom.
Travail sur le composant TWordLabel:
Refonte de la boîte d'accord des mots. Elle devient trop encombrée rendant difficile l'implantations de nouvelles fonctions. J'ai longtemps résisté à créer des fonctions modales spécifiques pour l'ajout des déterminants et des adjectifs, selon le principe qu'une fenêtre modale correspond au déplacement vers une autre pièce, mais ici je crois que finalement la chose s'impose. J'y gagnerai je crois un contrôle plus facile de l'accord et du choix des déterminants. Il faut en effet penser que le fait de changer le nombre d'un mot dans la boîte devrait pouvoir appeler le changement de nombre sur le déterminant ( et l'adjectif ).
Ajout donc d'une nouvelle fenêtre modale consacrée à l'affichage des mots de la liste. Pour le moment deux positions sont offertes: déterminants et adjectifs. Les listes créées répondent au nombre et genre en cours dans la boîte précédente. Ceci permet de désencombrer la premiêre boîte dans laquelle il commencait à se trouver un peu trop d'éléments à afficher. Ce choix simplifie l'apparence des deux boîtes rendant de plus évident le fait de réaliser par là des fonctions spécifiques.
Le problème n'est pas lié autant aux déterminants qu'aux adjectifs. Dans le groupe nominal, un adjectif peut se trouver soit avant le nom soit après. On peut aussi trouver les deux cas ensemble. Lorsque l'adjectif se trouve avant le nom, la place du déterminant demeure au début du groupe mais le nom est déplacé vers l'arrière. Ceci a pour conséquences entre autres de demander l'accord du déterminant avec l'adjectif dans le cas où le déterminant est "l'" et que l'adjectif commence par une voyelle. Ainsi l'ajout d'un adjectif commençant par une voyelle devant un nom ne commencant pas par une voyelle doit entraîner un accord du premier en conséquence.
De même, si c'est le nom qui commence par une voyelle, le fait d'introduire un adjectif ne
commençant pas par une voyelle devant ce nom demande une réécriture du déterminant. Le cas
de l'adjectif peut aussi être caractérisé par la présence de plusieurs adjectifs dans le
même groupe. On peut ainsi avoir:
"Les beaux oiseaux bleus"
" les beaux oiseaux bleus, blancs, rouges "
" les beaux petits oiseaux ..."
Pour le moment notre solution prévoit la présence d'un adjectif avant et après.
Ces mots ajoutés sont maintenant dans un bouton. Le fait de cliquer le bouton appelle la fenêtre de choix des déterminants et des adjectifs. j'étudie la possibilité de conserver les caractéristiques de la liste dans la propriété tag du bouton. Ce fait permettrait l'appel des autres cas du mot pour répondre aux changements de genre ou de nombre.
J'ai tenté de redessiner la classe constituant le groupe nominal. Ce groupe ne conserve plus que ce qui est nécessaire, des références vers les listes premières et se constitue au moment de sa création, des copies des adj. utilisés. Le travail est long parce qu'il y a beaucoup de paramètres à mettre en place ici. Des comportements erratiques me font croire que la solution n'est pas encore tout à fait au point.
Utilisation des désinences et de radical pour la formation des déclinaisons de l'adjectif. L'adjectif utilise lui aussi maintenant les désinences ainsi qu'un radical (rad) indiquant le nombre de lettres immuables dans le mot d'origine. Ainsi, une seule copie complète de l'adjectif est conservée: le champ lexiq contient le mot au masc, sing.
Un ensemble Des[1..3] de desinences contient les suffixes utilisés pour les accords en genre et en nombre. Une fonction se charge d'appliquer ensuite l'index voulu (DesIndx) sur la désinence choisie. Finalement le tout est regroupé dans la fonction: MakeAdj qui, à partir de l'index de désinence, reconstruit l'adjectif en copiant de 1 à rad caractères comme racine à laquelle elle ajoute la désinence répondant aux genres et nombres du groupe nominal.
Quelques points sensibles à régler:
mise en place du groupeVerbe
encore en attente: les verbes du 3e goupe. Ils devraient d'abord être insérés simplement dans le lexique avec leurs irrégularités.
réflexion:
La mise en place du groupeVerbe entraîne de nouvelles conséquences
laissées de côté ou du moins imprévues au départ. Puisque le verbe
est l'élément central de la phrase, il peut être facilement associé
à la phrase en soi. Il remet en question, posé ainsi, l'existence
même du chevalet. En effet il est possible d'étendre le groupeVerbe
jusqu'à la phrase en lui associant simplement les sujets et compléments
qui le complètent.
Il serait aussi possible d'utiliser le questionnement dans l'interface pour réaliser justement l'association du sujet et du complément au verbe. Ainsi la question qui? pourrait mener à associer le sujet du verbe, en proposant les groupes nominaux déjà présents dans la zone de travail. Quand aux compléments, ils seraient appelés par des questions du type quoi?, quand?, comment?. Ce procédé est toutefois désavoué par les récents développements de la grammaire en réponse aux situations de verbes pronominaux ou de GN sans sujet...
J'ai quand même procédé aujourd'hui à l'association des routines permettant l'ajout de mots dans le chevalet (ou de la zone qui en tiendra lieu puisque pour le moment celui-ci n'est toujours qu'une zone rectangulaire sans attributs distinctifs. Quelque chose me fait penser que ce chevalet est toujours utile, permettant la représentation de la phrase comme une association des mots dans un seul bloc. La distinction qui s'opère alors permet de séparer les mots comme entités moléculaires de leur assemblage signifiant que constitue la phrase. La phrase devient une représentation de l'association des mots entre eux dans un ordre particulier.
Cette séparation en deux zones distinctes, zone de travail et chevalet, installe donc le lieu d'opérations différentes et consacre par le fait même les différents niveaux d'opérations nécessaires à la construction de la phrase. Je crois que je sujet de réflexion ici est riche et les diverses pistes offertes doivent être analysées avec soin pour en tirer tout le potentiel.
On pourra ainsi distinguer les opérations associées
A chacun de ces quatre niveaux pourront être associées des questions et des stratégies de constructions distinctes. Certaines pédagogies de l'enseignement de l'écriture ont déjà identifiées des sratégies et des scénarios de réalisation précis.
Installation des composantes liées à la nature du verbe. Correction dans l'interface, ajout des groupes liés à la transitivité, à la forme pronominale, à l'auxiliaire.
La transitivité est particulièment compliquée puisque l'on peut trouver à la fois transitivité et intransitivité chez certains verbes. Les verbes transitifs peuvent être direct, indirect ou les deux. J'ai décidé d'utiliser un type offrant toutes les possibilités permettant le choix d'une seule des positions dans la liste des possibles. Cette liste contient donc 5 états:
TIntrans, TIn_Trans, TDirect, TIndirect, TDir_Ind
Une boîte de boutons radios peut ainsi être utilisée, pour ne choisir qu'un item de la liste.
Le cas de la transitivité appelle parfois aussi l'ajout de prépositions qui sont référencées par l'utilisation d'un nombre. La liste des prépositions utilisées ici n'étant pas très longue, il serait peut-être approprié de créer une liste spécifique, distincte de la liste lonque de toutes les prépositions... ? Je crois qu'il est plus économique de procéder par référence que par copie de la préposition elle-même.
Pour l'ensemble des verbes, la règle semble être de placer dans les classes de base tous les éléments essentiels à la création de la classe du verbe et de confier à la conjuquaison l'ajout des éléments qui s'y rapportent. Ainsi la classe supérieure est le groupe verbal qui ajoute à la classe verbe les désinences nécessaires à la conjuguaison et les références au temps, au mode, au nombre et à la personne.
La hiérarchie complète se présente ainsi:
classe GV <- classe verbes <- classe mots
Séparation des deux fonctions du logiciel soit la préparation des listes de mots et l'utilisation. La création des listes intégrées prenant de plus en plus de place (en particulier avec les verbes) que pour le moment il ne semble pas important de continuer le développement d'une version où l'éditeur se trouve incorporé dans le programme principal. De plus, la séparation des deux fonctions devrait alléger un peu en supprimant quelques variables qui ne sont utiles qu'au moment de l'édition et permettre le développement de l'interface du programme comme il est prévu.
Je ne vois pas l'utilité, dans le développement de cette partie de l'application, de tenter de tout mettre dans le même programme. l'édition des listes de mots appartient vraiment ici à une fonction distincte et dans la mesure où l'utilisation des lexiques s'étend, ne mérite pas de se trouver à même le programme principal.
Cette modification suppose donc le débranchement de la routine d'écriture des listes de mots au moment de la fermeture du programme (in VarUtil). Pour le moment la lecture des listes de noms et adjectifs est maintenue à l'ouverture.
Sur le plan de l'interface, sont retirés, le choix des autres catégories et la correction de la boîte des choix qui ne contient plus que deux éléments soit les noms et les verbes. Et le retrait du panneau d'édition qui contenaient tous les boutons radios représentant les propriétés des mots. Cet allègement est substantiel et met en évidence le travail que demande la simple gestion des rapports des mots entre eux.
La catégorisation et la classification des mots devient un autre sujet qui n'est plus traité ici.
installé depuis la semaine passée, les propriétés de fins d'étiquettes sur le composant graphique du mot. Pour chaque fin de mot trois états sont maintenant disponibles soit: aucun, mâle et femelle.
=> rnone, rMale, rFem.
Ceci dans le but de permettre, sur l'image de l'imbrication de blocs dans une construction, l'expression graphique de la construction de la phrase à partir de ses divers éléments.
Ce nouveau composant reprend les paramêtres de l'ancien en y ajoutant les nouveautés. Il se nomme WordLabl2.
Du temps a été consacré à l'implantation, dans l'application, du nouveau composant. Ces possibilités font surgir une liste de questions regardant l'assemblage des mots et les propriétés à leur accorder selon les situations grammaticales.
Ainsi, un mot, à sa création dans la zone de travail, n'a pas d'attributs spécifiques autres que sa classe. (nom, verbe) Par la suite, la constitution d'un groupe nominal confère à sa partie fin_de_mot (WordRelation2) une valeur négative (rFem) le rendant apte à recevoir l'adjonction d'un groupe verbal ou prépositionnel.
Je note en passant, cette première utilisation du terme groupe prépositionnel qui soulève quelques questions non résolues. En effet ce groupe prépositionnel était déjà pensé comme faisant partie du groupe nominal mais ne serait-il pas plus évocateur graphiquement que la préposition, ayant un rôle fonctionnel dans la création de la phrase, soit représenté graphiquement avec un symbole qui lui soit propre (une forme ronde ou une autre couleur ou les deux)?
Dans le même ordre d'idée, je ne suis plus certain que l'idée de tout mettre dans un groupe verbal les relations aux autres membres de la phrase. La présence des liens visibles sur la page, unissant les divers éléments de la phrase est plus visuelle et certainement plus représentative des fonctions en cours.
Il m'apparaît aussi intéressant d'utiiser un code de couleur pour identifier les divers membres de la phrase. Peut-on dire à ce stade-ci que nous sommes à la recherche d'un modèle fonctionnel de la phrase?
Identification des tâches à combler:
Les dernières séances ont eu pour tâche principalement de refaire la section d'édition du groupe nominal. La suppression de la troisième fenêtre est maintenant réalisée rendant un peu moins lourde l'édition du mot.
Un nouveau systéme d'ajout/modification des adjectifs est aussi maintenant en place, permettant l'ajout d'un nombre indéterminé d'adjectifs avant et après le nom. Il faudra encore décider de l'ajout de virgules et de conjonction pour les énumérations de qualificatifs.
Des questions se posent, sur l'utilisation potentielle de l'outil, ce qui ne va pas sans rejoindre le fond de la problématique, le rapport aux fonctions des mots dans la constitution de la phrase. Il faudrait en effet savoir répondre à la question: mais que peut permettre d'apprendre un tel outil? Ces questions sont liées au développemnent car si la réalisation de l'appareil de mise en place du fonctionnement des mots entre eux exige sur le plan de l'organisation informatique une réflexion poussée, cet investissement n'est nullement garant des apprentissages possibles au niveau de la maîtrise de la langue.
D'une certaine façon, la collection de mots utilisable pour la réalisation d'un jeu détermine la production qui pourra en surgir. Les deux sont indissociables et nous voyons les limites de l'accès à l'ensemble du lexique comme créant une surcharge inutile et un encombrement dans les processus de navigation. (Les listes trop longues à parcourir et le recours obligé à des sous-sections, alphabétiques ou autres).
Une solution serait de permettre le chargement des fichiers voulus par l'enseignant, lequel prend une part active à l'activité en proposant le lexique. Ceci suppose de lui rendre facile la possibilité de création de listes lexicales.
La création facile du lexique passe certainement par l'utilisation de listes en format texte, quitte à rendre la création des fichiers au format du programme disponible dans le producteur de listes (LEXMAKR) Ce programme pourrait recevoir ainsi l'ajout de routines d'importation de texte ASCII.
Surle plan de la sauvegarde des fichiers, il faudra ajouter aussi la possibilité de nommer les fichiers produits: les jeux de listes, pour les rendre autonomes et individuels. Ces routines de chargement devront aussi être glissées quelque part dans le programme JDM pour permettre à l'enseignant de décider de la configuration voulue.
Toutes ces réflexions ressemblent étrangement au travail entrepris dans Scriptôt, notre traitement de texte minimal. concernant la gestion des listes. Même les solutions de configuration finiront par ressembler ici...
Autre ajout de routine intéressante ici serait la possibilité d'utilisation d'un analyseur/parseur, capable de mettre en catégories tous les mots lexicaux d'un texte. Ainsi un enseignant pourrait servir le programme de production de listes de textes complets, lesquels seraient déconstruits en listes. L'exercice serait alors de faire de nouveaux textes avec les mêmes mots, jusqu'à épuisement du stock...
La pratique d'un tel jeu a-t-elle quelque valeur pédagogique?
La mise en place d'un tri automatique sur les listes de mots rend nécessaire la révision de l'attribution de l'index aux mots. Cet index est attribué à la création du mot et ne correspond plus à sa position dans la liste lorsque celle-ci devient ordonnée alphabétiquement. Il faut mettre au point une routine pour chaque classe de mots, permettant la récupération de l'index.
Ce travail révèle de plus des manquements dans la routine de détection des voyelles. En fait il apparaît plus efficace d'attacher la détection de voyelle au déterminant plutôt qu'au groupe nominal puisque l'insertion d'un adjectif avant le nom modifie le comportement du déterminant en présence d'un mot commençant par une voyelle.
Le premier mot de la liste de mots constitué par le groupe nominal sans le déterminant (le ou les adjectifs avec le nom), est celui qui doit être analysé comme commençant par une voyelle. Modifications au code nécessaire.
Le travail que demandent toutes ces corrections semble n'avoir aucun effet sur la progression globale vers la réalisation d'un programme opérationnel. La tâche se subdivise encore en sous-tâches rendant difficile l'atteinte du but fixé. Le temps de travail a toutefois été consacré et il me faudrait prendre certaines décisions sur l'organisation de l'ensemble des tâches et en particulier sur la production de ce premier rapport qui retarde constamment.
Une des caractéristiques de cette période, il me semble est de révéler, à travers l'exploration des diverses solutions possibles, une quantité de solutions pratiquables, remettant en question la production d'une solution unique. La lecture et la découverte du domaine de la syntaxique fonctionnelle révèle en effet la possibilité de mettre en place un environnement d'analyse et de production syntaxique de la phrase qui remet un peu en question le design d'interface visé jusqu'à maintenant soit le positionnement libre des éléments de la phrase dans la zone de travail. Il semble en effet qu'une construction/ déconstruction de la phrase réponde à des règles strictes, sans rapport avec des déplacements libres des mots prisonniers de leurs relations au sein de la phrase. Piste à explorer donc.
L'intégration de la liste des adjectifs dans le groupe nominal est à peu près terminée. L'accord en genre et en nombre est opérationnel. On pourrait encore modifier l'appel des désinences par l'utilisation d'un nombre référant à une constante, ce qui serait moins lourd en termes de données conservées...
Passé la semaine à mettre en place et corriger la routine de sauvegarde de la session. Ce travail devenait nécessaire autant pour le temps qu'il faut maintenant à reproduire les conditions de vérification des divers rapports entre les mots que parce que de toute façon la chose est nécessaire et prévue dans le développement et l'utilisation efficace du logiciel.
Correction d'inadéquations ici et là. Trois positions sont à considérer pour l'enregistrement des noms selon qu'il s'agit :
Les adjectifs sont maintenant constitués en liste (qui peut prendre la longueur voulue) ainsi qu'un d'un indicateur de position (avant ou après le nom).
Correction de la création des verbes...
Ajustement de la conjuguaison ds verbes irréguliers. Mise en place de routines permettant et utilisant, les radicaux et produisant des désinences pour les verbes irréguliers. Optimisation encore possible mais la conjuguaison fonctionne maintenant sur les 4 premiers temps.
Mis en place la structure pour enregistrer les verbes, reste à la développer.
Travaillé hier la conjuguaison des participes. Les deux premiers groupes sont en place, reste à crééer la routine d'accord pour les éléments du 3e groupe.
Aujourd'hui, terminé la routine d'assignation du sujet du verbe. Cette routine attribue l'index du sujet au champ sujIndex du GV. Bien qu'aucune vérification syntaxique ne soit encore réalisée, il s'agit ici pour moi d'une avancée dans le projet, correspondant enfin au domaine à l'étude: la création de la phrase. Je crois que la mise en place de l'attribution du complément pourrait se réaliser de la même façon.
L'attribution du sujet se fait en cherchant dans la liste des sujets disponibles dans la zone de travail. Le choix dans la liste ramène l'index du sujet et l'attribue finalement au champ sujIndex du GV.
La fin de l'opération d'édition du verbe range le verbe derrière son sujet. Il faudrait encore rendre cette opération possible par glisser-déposer dans la zone de travail...
Mis à jour la routine de sauvegarde de l'environnement, section verbes. On peut maintenant sauvegarder la session de travail et retrouver les attributs des divers mots mis dans la zone de travail.
Reste à corriger l'alignement du complément et le partage du sujet entre le pronom et un GN. (On ne peut avoir les deux à la fois)
Idée pour une meilleure présentation Une liste graphique serait peut-être bien pour commencer la phrase, qui permettrait de choisir verbe, nom ou conjonction ou autre à la manière de la commande nouveau dans Office.
Ajouter la corbeille = > pour la suppression des mots et éventuellement l'espace phrase pour le stockage des assemblages de mots permettre le chargement (et la récupération) de divers lexiques courts présentés sous forme d'exercices (suppose la correction de l'éditeur de lexiques) voir à l'intégration des conjonctions. et permettre les compléments de noms débugger l'ensemble.
Mise en place de la corbeille pour détruire les mots non nécessaires. Cette routine demande la mise au point de routines de correction des index des mots dans le cas où le mot supprimé possède un index inférieur au nombre total de mots dans la zone. Seul le dernier mot créé peut être détruit sans avoir à recourir à un ajustement de l'index.
Cet ajustement doit avoir lieu à deux endroits: dans les contrôles physiques (WordLab2), dans la propriété tag, et dans la WorkList virtuelle sur l'objet TWord (le champ indx) Cela doit avoir des incidences sur les liens avec d'autres mots, dans le cas des accords ou des relations sujet ou complément. Il faudra ajuster en conséquence.
Se demander encore une fois s'il ne serait pas sage et économique de pouvoir inclure toutes ces relations dans les composants eux-mêmes, évitant ainsi la double tâche des corrections aux deux niveaux. (La chose se fait sentir aussi au moment de la sauvegarde et de la restitution, qui doivent se passer tant au niveau du composant que des classes abstraites).
Ajout d'un mot déjà présent dans la liste. Implantation d'une routine qui ne permet de placer qu'une copie du mot dans la zone de travail.
Mise en place d'une mécanique propre à la réutilisation de la corbeille. La suppression des mots est différée et la possibilité de réutilisation des mots (recyclage), retourne ces mots dans la zone de travail.
La routine de contrôle des mots présents (CheckWordList) vérifie de plus dans la corbeille et recyele elle aussi dans le cas de présence du mot voulu dans la corbeille. Cette routine fait en deux temps, confirmant l'utilisation de du recyclage au moment du survol de la zone (dragOver) où la variable booléenne recyclable est actionnée et utilisée au moment du dragDrop.
Deux variables supplémentaires MaxVisible et MaxTrash comptent respectivement le nombre de mots visibles dans la zone et le nombre de mots dans la corbeille: Un mot déposé dans la corbeille demeure propriété de la zone de travail mais avec un index négatif confirmant sa propriété invisible.
La question de la pertinence de l'indice négagif (-1) survient devant la constatation que ce stratagème ne fonctionne pas sur le zéro, qui devient un cas particulier, et qui pourtant séjourne volontiers dans la corbeille, confirmant par là la possibilité que cette valeur (l'indice négatif), soit redondante et possiblement superflue.