|
| LemCore (QObject *parent=0, QString resDir="") |
| Constructeur de la classe LemCore. Plus de détails...
|
|
bool | estAbr (QString m) |
| Teste si le mot est une abréviation. Plus de détails...
|
|
void | ajDesinence (Desinence *d) |
| ajoute la désinence d dans la map des désinences. Plus de détails...
|
|
void | ajRadicaux (Lemme *l) |
| Calcule tous les radicaux du lemme l, en se servant des modèles, les ajoute à ce lemme, et ensuite à la map * des radicaux de la classe Lemmat. Plus de détails...
|
|
QString | assim (QString a) |
| Cherche si la chaîne a peut subir une assimilation, et renvoie cette chaîne éventuellement assimilée. version sans quantités Plus de détails...
|
|
QString | assimq (QString a) |
| Cherche si la chaîne a peut subir une assimilation, et renvoie cette chaîne éventuellement assimilée. version avec quantités Plus de détails...
|
|
QMap< QString, QString > | cibles () |
| Renvoie la map des langues cibles. Plus de détails...
|
|
QString | desassim (QString a) |
| Essaie de remplacer l'assimilation de a par sa forme non assimilée, et renvoie le résultat. Plus de détails...
|
|
QString | desassimq (QString a) |
| Essaie de remplacer l'assimilation de a par sa forme non assimilée, et renvoie le résultat. Plus de détails...
|
|
bool | inv (Lemme *l, const MapLem ml) |
| Renvoie true si le lemme l faisant partie de la MaplLem ml est invariable. Plus de détails...
|
|
MapLem | lemmatise (QString f) |
| Le cœur du lemmatiseur. Plus de détails...
|
|
MapLem | lemmatiseM (QString f, bool debPhr=true, int etape=0) |
| Renvoie dans une MapLem les lemmatisations de la forme f. Plus de détails...
|
|
Lemme * | lemme (QString l) |
| cherche dans la liste des lemmes le lemme dont la clé est l, et retourne le résultat. Plus de détails...
|
|
int | nbOcc (QString l) |
| Le nombre d'occurrences du lemme dans le corpus du LASLA. Plus de détails...
|
|
QStringList | lemmes (MapLem ml) |
| renvoie la liste des graphies des lemmes de la MapLem lm sans signes diacritiques. Plus de détails...
|
|
QStringList | lignesFichier (QString nf) |
| Lit les lignes d'un fichier. Plus de détails...
|
|
Modele * | modele (QString m) |
| Renvoie l'objet de la classe Modele dont le nom est m. Plus de détails...
|
|
QString | morpho (int m) |
| explicite la morphologie dans la langue choisie Plus de détails...
|
|
QString | variable (QString v) |
| permet de remplacer la métavariable v par son contenu. Plus de détails...
|
|
void | lireHyphen (QString fichierHyphen) |
| Lit le fichier Hyphen. Plus de détails...
|
|
QString | cas (int i) |
| Accesseur du cas. Plus de détails...
|
|
QString | genre (int i) |
| Accesseur du genre. Plus de détails...
|
|
QString | nombre (int i) |
| Accesseur du nombre. Plus de détails...
|
|
QString | temps (int i) |
| Accesseur du temps. Plus de détails...
|
|
QString | modes (int i) |
| Accesseur du mode. Plus de détails...
|
|
QString | voix (int i) |
| Accesseur de la voix. Plus de détails...
|
|
QString | motsClefs (int i) |
| Accesseur des autres mots-clefs. Plus de détails...
|
|
void | setCible (QString c) |
| Permet de changer la langue cible. Plus de détails...
|
|
QString | cible () |
| Renvoie la langue cible dans sa forme abrégée (fr, en, de, it, etc.). Plus de détails...
|
|
bool | optExtension () |
| Accesseur de l'option extension, qui permet de charger l'extension. Plus de détails...
|
|
QString | tag (Lemme *l, int m) |
| Calcule le tag. Plus de détails...
|
|
int | fraction (QString listTags) |
| Évalue la probabilité conditionnelle de l'analyse connaissant le POS. Plus de détails...
|
|
int | tagOcc (QString t) |
| Renvoie le nombre d'occurrences du tag. Plus de détails...
|
|
int | trigram (QString seq) |
| Renvoie le nombre d'occurrences du trigramme. Plus de détails...
|
|
|
void | ajAssims () |
| définit les débuts de mots non assimilés, et associe à chacun sa forme assimilée. Plus de détails...
|
|
void | ajAbrev () |
| Lit le fichier d'abréviations. Plus de détails...
|
|
void | ajContractions () |
| Établit une liste qui donne, pour chaque contraction, la forme non contracte qui lui correspond. Plus de détails...
|
|
int | aRomano (QString f) |
| Convertit une chaine en chiffres romains en un nombre. Plus de détails...
|
|
void | lisIrreguliers () |
| Chargement des formes irrégulières du fichier data/irregs.la. Plus de détails...
|
|
void | lisFichierLexique (QString filepath) |
| Lecture des lemmes, synthèse et enregistrement de leurs radicaux. Plus de détails...
|
|
void | lisLexique () |
| Lecture du fichier de lemmes de base. Plus de détails...
|
|
void | lisExtension () |
| Lecture du fichier d'extension. Plus de détails...
|
|
void | lisModeles () |
| Lecture des modèles, synthèse et enregistrement de leurs désinences. Plus de détails...
|
|
void | lisMorphos (QString lang) |
| Lecture des analyses morphologiques. Plus de détails...
|
|
void | lisTraductions (bool base, bool extension) |
| Lecture des fichiers de traductions trouvés dans data/, nommés lemmes, avec un suffixe corresponant à la langue cible qu'ils fournissent. Plus de détails...
|
|
QString | decontracte (QString d) |
| Essaie de remplacer la contractions de d par sa forme entière, et renvoie le résultat. Plus de détails...
|
|
void | lisTransfMed () |
| Lecture des règles de transformation entre les graphies classique et médiévale enregistrées dans le fichier data/medieval.txt. Plus de détails...
|
|
QString | transfMed (QString f, bool rad=false) |
| Transforme un mot en sa forme médiévalisée. Plus de détails...
|
|
void | lisTags (bool tout=false) |
| Lit l'ensemble des tags. Plus de détails...
|
|
|
QStringList | abr |
| Liste des abréviations, voir LemCore::ajAbr. Plus de détails...
|
|
QMap< QString, QString > | assims |
| Association des préfixes assimilés et non-assimilés sans quantité Plus de détails...
|
|
QMap< QString, QString > | assimsq |
| Association des préfixes assimilés et non-assimilés avec quantités. Plus de détails...
|
|
QMap< QString, QString > | _contractions |
| Association des formes contractées et non-contractées. Plus de détails...
|
|
QMultiMap< QString, Desinence * > | _desinences |
| Liste des désinences avec forme (clef) et pointeur (valeur) Plus de détails...
|
|
QMultiMap< QString, Irreg * > | _irregs |
|
QMap< QString, QString > | _cibles |
| Liste des langues cibles en forme abrégée (clef) et longue (valeur) Plus de détails...
|
|
QMap< QString, Lemme * > | _lemmes |
| Liste des lemmes avec forme (clef) et pointeur (valeur) Plus de détails...
|
|
QMap< QString, Modele * > | _modeles |
| Liste des modèles avec nom (clef) et pointeur (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _morphos |
| Liste des analyses morphologiques avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _cas |
| Liste des cas avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _genres |
| Liste des genres avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _nombres |
| Liste des nombres avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _temps |
| Liste des temps avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _modes |
| Liste des modes avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _voix |
| Liste des voix avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMap< QString, QStringList > | _motsClefs |
| Liste des autres mots-clefs avec langue (clef) et liste lisible (valeur) Plus de détails...
|
|
QMultiMap< QString, Radical * > | _radicaux |
| Liste des radicaux avec forme (clef) et pointeur (valeur) Plus de détails...
|
|
QMap< QString, QString > | _variables |
| Liste des méta-variables du fichier modeles.la avec nom (clef) et liste de désinences (valeur) Plus de détails...
|
|
QList< Reglep > | _reglesMed |
| Liste de règles pour transformer les graphies classiques en graphies médiévales. Plus de détails...
|
|
bool | _medieval |
| Booléen pour traiter les graphies médiévales. Plus de détails...
|
|
QMap< QString, QString > | _desMed |
| Associe une graphie médiévale (clef) à une graphie classique (valeur) pour une désinence. Plus de détails...
|
|
QMap< QString, QString > | _irrMed |
| Associe une graphie médiévale (clef) à une graphie classique (valeur) pour un irrégulier. Plus de détails...
|
|
QMultiMap< QString, QString > | _radMed |
| Associe une graphie médiévale (clef) à une graphie classique (valeur) pour un radical. Plus de détails...
|
|
bool | _extension |
| Option indiquant le chargement de l'extension du lexique, voir LemCore::setExtension. Plus de détails...
|
|
QString | _cible |
| La langue choisie, voir LemCore::setCible. Plus de détails...
|
|
QMap< QString, int > | _tagOcc |
| Nombre d'occurrences du tag dans le corpus du LASLA. Plus de détails...
|
|
QMap< QString, int > | _tagTot |
| Nombre d'occurrences du POS (1er caractère du tag) dans le corpus du LASLA. Plus de détails...
|
|
QMap< QString, int > | _trigram |
| Nombre d'occurrences du trigramme dans le corpus du LASLA. Plus de détails...
|
|
QString | _resDir |
| Le nom du répertoire contenant les données. Plus de détails...
|
|
bool | _extLoaded |
| Booléen indiquant si l'extension du lexique a été chargée. Plus de détails...
|
|
La classe LemCore est le noyau de lemmatisation.
Ce module est le cœur du programme : c'est lui qui va organiser les données et lemmatiser les formes. Il est donc appelé par les modules intermédiaires, Lemmatiseur, Scandeur et Tagueur. A priori, c'est plutôt aux classes intermédiaires que l'on s'adressera pour ré-utiliser ce code.
En lisant les fichiers de données, il va créer les collections d'objets dont il a besoin : Lemme, Modele, Desinence, Radical et Irreg. Les noms de ces classes sont assez explicites. Leur fonctionnement est détaillé dans les pages correspondantes.
La fonction importante dans cette classe est surtout LemCore::lemmatiseM qui lemmatise un mot en cherchant les diverses transformations qu'il a pu subir. Elle appelle LemCore::lemmatise qui lemmatise la forme sans transformation.
- A faire:
- Il manque un lexique personnel dans Collatinus 11. C'est en principe résolu (en grand) avec Collatinus 12.
- A faire:
- La gestion des formes non-reconnues est aussi un peu sommaire. Dans la lemmatisation d'un texte, les formes non-reconnues sont juste groupées à la fin de la liste (si l'option correspondante est validée). Dans la scansion, on marque la quantité des syllabes lorsqu'elle est déterminable par position. Dans le tagueur, les mots non-reconnus sont ignorés... Je ne sais pas au juste comment gérer ça. En particulier, on ne peut pas le faire sur une forme isolée. Dans un texte, si plusieurs mots ne sont pas reconnus qui commencent avec un même potentiel radical, on peut avoir une piste intéressante pour déterminer un paradigme et voir si toutes ces formes peuvent conduire à un lemme plausible (difficile pour la 3e déclinaison). Commencer par se faire une idée de la fréquence d'utilisation des diverses désinences ?
int LemCore::fraction |
( |
QString |
listTags | ) |
|
Évalue la probabilité conditionnelle de l'analyse connaissant le POS.
- Paramètres
-
listTags | : le tag ou une liste de tag |
- Renvoie
- Cette probabilité est un entier, exprimé en 1/1024e
On va chercher le nombre d'occurrences associé à ce tag (ou ces tags). On le divise par le nombre d'occurrences associé au même POS.
Un tag est toujours composé de trois caractères, éventuellement des espaces. Pour passer une liste de tags, on séparera chaque tag (groupe de trois caractères) par un espace (en réalité, ce séparateur est ingnoré). Si la fonction reçoit une liste de tags, elle retourne la plus grande fraction.
MapLem LemCore::lemmatiseM |
( |
QString |
f, |
|
|
bool |
debPhr = true , |
|
|
int |
etape = 0 |
|
) |
| |
Renvoie dans une MapLem les lemmatisations de la forme f.
- Paramètres
-
f | : la forme qui s'agit de lemmatiser. |
debPhr | : booléen qui indique que l'on est en début de phrase |
etape | : initialement 0, permet de suivre un protocole d'étapes |
- Renvoie
- une MapLem avec toutes les lemmatisations de la forme f.
Cette routine est récursive et son but est de lemmatiser la forme f en tenant compte des modifications possibles. Les transformations de la forme peuvent être :
- la contraction amavisse ——> amasse
- l'assimilation du préfixe ads- ——> ass-
- la majuscule initiale en début de phrase ou de vers
- l'ajout d'un (ou plusieurs) suffixe(s) ou enclitique
- la disparition erronée d'une majuscule à un nom propre.
Bien que certaines combinaisons ne soient pas attestées, nous n'avons pas voulu les exclure. La structure récursive avec un appel direct à l'étape suivante et un autre appel éventuel après transformation de la forme permet d'explorer toutes les possibilités. Essayées une fois et une seule.
Cette routine est a priori sensible à la casse. Ainsi, à l'intérieur d'une phrase (i.e. lorsque debPhr est false), elle distinguera Aeneas (Énée) et aeneas (de bronze). En début de phrase (i.e. lorsque debPhr est true), la majuscule perd cette caractéristique distinctive et Aeneas sera lemmatisé avec ses deux solutions, Énée et d'airain.
Dans la constitution du lexique, nous n'avons pas adopté un parti pris pour l'assimilation des préfixes. D'ailleurs, les différents dictionnaires ont des conventions différentes. Ainsi, le Gaffiot fait le renvoi aff ——> adf (p. 83 de l'edition de 1934) : le préfixe n'étant pas assimilé, il faudra chercher adfaber. En revanche, le Lewis & Short pratique l'assimilation et donnera affaber. Cette ambiguité de la forme canonique nous a conduit à essayer l'assimilation (adf ——> aff) et la "déassimilation" (aff ——> adf) de façon systématique sur toutes les formes. Cela mène à quelques fausses lemmatisations. Par exemple, la forme assum peut être un rôti ou la forme assimilée du verbe adsum. En revanche, adsum ne semble pas pouvoir être un rôti.
La recherche d'un suffixe (ou enclitique) n'a lieu que si la forme complète n'a pas pu être lemmatisée. Cela évite une lemmatisation hasardeuse et improbable de "mentione" en "mentio"+"ne".
void LemCore::lireHyphen |
( |
QString |
fichierHyphen | ) |
|
Lit le fichier Hyphen.
- Paramètres
-
fichierHyphen | : nom du fichier (avec le chemin absolu) |
Stocke pour tous les lemmes contenus dans le fichier l'information sur la césure étymologique (non-phonétique).
Le fichier Hyphen permet de couper les syllabes correctement lorsque la césure est déplacée pour des raisons étymologiques. En effet, on ne va jamais couper un préfixe, ce qui peut conduire à des résultats surprenants. Par exemple, la forme abscidi donnera abs·cí·di (áb·sci·di), la première solution étant le parfait de abs-cido, alors que la seconde est le parfait de ab-scindo.
Ce fichier est dû à la patience de Frère Romain, de l'Abbaye de Flavigny.
void LemCore::lisMorphos |
( |
QString |
lang | ) |
|
|
private |
Lecture des analyses morphologiques.
- Paramètres
-
lang | : langue pour les morphologies. Cette langue est donnée par deux caractères "fr", "en" ou "es", pour l'instant. |
Cette routine lit le fichier morphos.* qui donne les analyses morphologiques en français, anglais ou espagnol. Les utilisateurs peuvent ajouter toutes les langues qu'ils maîtrisent. En interne, les analyses morphologiques sont repérées par des entiers. Au moment de les communiquer à l'utilisateur, il faut donc les traduire.
Des mots clefs essentiels sont aussi ajoutés après les 416 morphos possibles.
void LemCore::lisTags |
( |
bool |
tout = false | ) |
|
|
private |
Lit l'ensemble des tags.
- Paramètres
-
tout | : choisit si on lit seulement les tags ou aussi les trigrammes |
Lorsque le booléen tout est false, on ne lit que les nombres d'occurrences des tags.
Lorsque le booléen tout est true, on lit tout le fichier, donc aussi les dénombrements des séquences de trois tags.
Cette routine lit le fichier tags.la. Ce fichier a été tiré du traitement des textes lemmatisés du LASLA. C'est un csv, avec la virgule comme séparateur.
La première partie du fichier donne le nombre d'occurrences de chaque tag que j'ai introduit pour traiter les textes du LASLA. Elle établit aussi la correspondance avec les tags de Collatinus.
La deuxième partie donne les séquences de trois tags (LASLA) et le nombre d'occurrences mesuré.
void LemCore::setCible |
( |
QString |
c | ) |
|
Permet de changer la langue cible.
- Paramètres
-
c | : la chaine donnant la langue cible en deux caractères ou plus. |
La langue cible est rangée dans la variable LemCore::_cible a priori sous la forme de deux caractères "fr", "en", "de" etc. C'est la langue dans laquelle seront données les traductions. Lorsque la langue cible n'est ni l'anglais, ni le français, il est prudent d'indiquer une seconde langue de substitution parmi ces deux dernières. En effet, l'extension du lexique ne donne ses traductions que dans ces deux langues. De plus, la langue de substitution sera utilisée pour donner les indications morphologiques si ces dernières n'ont pas été traduites.
void LemCore::setExtension |
( |
bool |
e | ) |
|
|
slot |
Active ou désactive l'extension du lexique.
- Paramètres
-
Cette routine gère l'extension du lexique. Si le paramètre e est true, l'extension du lexique est active. S'il n'a pas encore été chargé, il l'est.
Lorsque l'extension du lexique a été chargée et qu'elle est ensuite désactivée, l'extension reste en mémoire et sert de réservoir. Si une forme est lemmatisée et qu'une des solutions vient du lexique principal, alors les éventuelles solutions issues de l'extension sont supprimées. Les solutions issues de l'extension ne sont donc affichées que si toutes les solutions en viennent.
Lors de la lecture des préférences (à l'initialisation), cette routine est appelée. Attention, lors de la sauvegarde des préférences, l'histoire liée à l'extension est oubliée. Si on avait activé puis désactivé l'extension, au prochain démarrage l'extension sera inactive et ne sera pas chargée. Le comportement du programme sera donc différent après le redémarrage.
Voir aussi LemCore::optExtension et LemCore::_extension
void LemCore::setMedieval |
( |
bool |
e | ) |
|
|
slot |
Gère les graphies médiévales.
- Paramètres
-
Cette routine gère la lecture de graphies médiévales. Si le paramètre e est true, la graphie médiévale est active. Si le fichier de transformation n'a pas encore été chargé, il l'est.
Lors de la lecture des préférences (à l'initialisation), cette routine est appelée.
Voir aussi : LemCore::_medieval
QString LemCore::tag |
( |
Lemme * |
l, |
|
|
int |
m |
|
) |
| |
Calcule le tag.
- Paramètres
-
l | : le pointeur vers le lemme |
m | : entier représentant l'analyse morphologique |
- Renvoie
- le tag pour Collatinus
Cette routine calcule le tag correspondant à l'analyse morphologique donnée, m, pour le lemme, l. Ce tag est toujours sur trois caractères.
Ce tag est obtenu avec le POS du lemme, suivi des cas (1-6 ou 7) et nombre (1, 2) pour les formes déclinées. Pour les verbes conjugués, on donne le mode (1-4) et un 1 si c'est un présent ou un espace sinon. Les supins ont été joints aux impératifs autres que le présent (groupes trop peu nombreux). Les formes verbales déclinées ont un "w" en tête (à la place du "v" pour verbe). Pour les invariables, le POS est complété avec deux espaces.