Collatinus  11.3
Fonctions membres publiques | Attributs privés | Liste de tous les membres
Référence de la classe Tagueur

La classe Tagueur regroupe les fonctions nécessaires pour lemmatiser et désambiguïser des textes avec un tagueur probabiliste. Plus de détails...

#include <tagueur.h>

Graphe de collaboration de Tagueur:
Collaboration graph
[légende]

Fonctions membres publiques

 Tagueur (QObject *parent=0, LemCore *l=0, QString cible="", QString resDir="")
 Créateur de la classe Tagueur pour lemmatiser et désambiguïser des textes. Plus de détails...
 
QString tagTexte (QString t, int p, bool affTout=true, bool majPert=true, bool affHTML=true)
 Pour désambiguïser une phrase (ou un texte) par étiquetage (HMM). Plus de détails...
 

Attributs privés

LemCore_lemCore
 Un pointeur vers le noyau de lemmatisation qui peut être partagé. Plus de détails...
 
QString _resDir
 Le nom du répertoire contenant les données. Plus de détails...
 

Description détaillée

La classe Tagueur regroupe les fonctions nécessaires pour lemmatiser et désambiguïser des textes avec un tagueur probabiliste.

Actuellement, dans Collatinus, elle est appelée par MainWindow qui gère l'affichage et les lectures/écritures des fichiers. Elle partage donc le noyau de lemmatisation, LemCore, avec d'autres classes intermédiaires. Toutefois, cette classe pourrait être autonome, avec une autre interface, si on voulait, par exemple, n'avoir qu'un programme spécialisé.

Cette classe ne définit qu'une fonction Tagueur::tagTexte qui prend un texte en entrée et le prépare pour l'affichage en HTML ou pour une sauvegarde au format CSV. Elle utilise la classe Mot qui va contenir les lemmatisations possibles des mots du texte et choisira parmi les tags proposés la meilleure séquence possible pour chaque phrase.

Note
Lors de l'affichage en HTML, je donne aussi le second choix.
A faire:
Je devrais essayer d'améliorer ce second choix en m'appuyant sur les points fixes (deux mots successifs n'ayant qu'un seul tag possible qui vont donc réduire l'ensemble des séquences de tags à une seule). Il serait intéressant d'avoir pour chaque segment entre deux points fixes les deux meilleurs choix de séquences. Ainsi, pour une phrase contenant un point fixe, j'aurais quatre séquences sélectionnées au lieu de deux.

Documentation des constructeurs et destructeur

Tagueur::Tagueur ( QObject *  parent = 0,
LemCore l = 0,
QString  cible = "",
QString  resDir = "" 
)

Créateur de la classe Tagueur pour lemmatiser et désambiguïser des textes.

Paramètres
parent: Un pointeur vers l'objet qui crée cette classe.
l: Un pointeur vers un moteur de lemmatisation (LemCore).
cible: La langue cible pour les traductions et les analyses.
resDir: Le chemin complet du dossier contenant les fichiers de donnée.

La classe Tagueur est conçue pour proposer une fonction d'étiquetage basée sur un modèle de Markov caché (HMM) au 2e ordre. Initialement intégrée à Collatinus, elle en utilise le moteur de lemmatisation (LemCore). Si le moteur est déjà créé par ailleurs, il suffit de passer le pointeur en question. Si le pointeur n'est pas donné, le moteur (LemCore) sera créé ici. Si l'application envisagée utilise plusieurs modules intermédiaires (tagueur, scandeur...), il vaut mieux créer un seul moteur commun.

Lors de la création de cette classe (si on n'a pas créé le moteur), on peut choisir la langue cible dans laquelle seront données les traductions et analyses. Il s'agit d'une chaine de caractères contenant au moins deux lettres (fr : français ; en : anglais ; etc...) et au plus huit (jusqu'à trois groupes de deux lettres séparés par un espace). Le fait de spécifier plusieurs langues précise l'ordre dans lequel seront cherchées les traductions si on ne dispose pas de la traduction dans la première langue choisie. Ainsi "it fr en" va conduire le programme à chercher la traduction en italien. Si la traduction n'existe pas en italien, elle sera d'abord cherchée dans le lexique français et en désespoir de cause en anglais. Par défaut, elle vaut "fr en es", valeur définie dans LemCore.

Attention
la langue cible peut être changée dans LemCore, mais à l'heure actuelle le Tagueur ne prévoit pas l'accès à la fonction LemCore::setCible qui est sollicitée par MainWindow.

Le paramètre optionnel resDir donne le chemin complet du dossier contenant les fichiers de donnée. Par défaut, il s'agit du fichier "data" placé à côté de l'exécutable.

Documentation des fonctions membres

QString Tagueur::tagTexte ( QString  t,
int  p,
bool  affTout = true,
bool  majPert = true,
bool  affHTML = true 
)

Pour désambiguïser une phrase (ou un texte) par étiquetage (HMM).

Paramètres
t: Le texte.
p: Une position dans le texte en nombre de caractères.
affTout: Option pour afficher toutes les possibilités d'analyse plutôt que la seule choisie.
majPert: Option pour tenir compte des majuscules initiales.
affHTML: Option pour choisir l'affichage en HTML (par defaut) ou une sortie en CSV.
Renvoie
Une chaine de caractères contenant la meilleure solution en HTML.

Cette fonction cherche la meilleure analyse des mots d'une phrase en tenant compte du contexte à l'aide d'un modèle de Markov caché (HMM). Pour cela, elle attribue des étiquettes aux mots et calcule une probabilité pour chaque séquence d'étiquettes possible. Pour ce faire, elle s'appuie sur les données statistiques tirées des textes lemmatisés du LASLA.

La phrase traitée est celle autour de la position p dans le texte t. Si p<0, tout le texte sera traité en séparant chaque phrase. Pour p≥0, le programme va, en partant de la position p, remonter et descendre dans le texte jusqu'à trouver une ponctuation forte (. ! ? : ;).

Le format de sortie est principalement destiné à l'affichage HTML. J'ai ajouté quelques ancres pour faciliter la navigation, mais je n'ai pas mis de liens pour y aller : elles servent de repères. Chaque phrase est entre des balises <div id='Sentence_x'> et </div> où x est le numéro de la phrase. La numérotation commence à 0. Ça n'a de sens que si l'ensemble du texte est tagué. Si on ne tague qu'une seule phrase, ce numéro vaut toujours 0.

Ces <div> commencent par donner la phrase, puis la meilleure séquence de tags et la probabilité associées. Vient ensuite le second choix qui ne sera pas explicité. La meilleure séquence de tags est explicitée sous la forme d'une <ul id='sent_x'> où chaque mot est un <li id='S_x_W_y'> avec x le numéro de la phrase et y le numéro du mot dans celle-ci. Chaque <li> commence avec la forme du texte suivie du tag qui lui est attribué par la meilleure séquence. Le tag le plus probable hors contexte est donné entre parenthèses lorsqu'il diffère de celui choisi par le tagueur.

Si l'option affTout est valisée (affTout = true), toutes les analyses possibles sont ajoutées, dans le <li> précédent, sous la forme d'une <ul> sans ancre. À la fin de chaque <li> de cette seconde liste, sont donnés le tag et la probabilité associée. S'il y a des homonymes qui ont des analyses avec le même tag, ces probabilités sont les mêmes (elles sont associées au tag). Le choix se fait alors en fonction du nombre d'occurrences relevé pour le lemme. Ce nombre est donné aussi (lorsqu'il n'est pas nul). Il est entre des balises <small> et </small> et entre parenthèses.

Documentation des données membres

LemCore* Tagueur::_lemCore
private

Un pointeur vers le noyau de lemmatisation qui peut être partagé.

QString Tagueur::_resDir
private

Le nom du répertoire contenant les données.


La documentation de cette classe a été générée à partir des fichiers suivants :