Programmation pour le TAL
Extraction de triplets syntaxiques : étape 1
Examen de tous les tokens de la phrase
Rechercher les tokens dont Talismane ne connaît pas le lemme ne sert pas à grand chose pour l'extraction des triplets syntaxiques.
L'objectif de l'implémentation de la méthode lookForUnknownLemmas()
est de vous faire réaliser la première étape du projet : itérer sur tous les tokens d'une phrase.
- l'instance de la classe TalismaneReader (qui vous est fournie) lit un fichier et construit
pour chaque phrase, une instance de Sentence qui contient plusieurs instances de Token,
chacune associée à un mot de la phrase.
- pour chercher les mots dont le lemme est inconnu, il faut :
- itérer sur tous les tokens de la phrase (comme on le ferait pour un tableau) :
dans la classe Sentence, vous trouverez une méthode qui renvoie le nombre de tokens qu'elle contient ainsi qu'une méthode qui renvoie le ième token de la phrase
- pour chacun des tokens, inspecter son lemme
- selon cette inspection, afficher dans la console le token en question.
Recherche des adjectifs modifieurs de noms
L'implémentation de la méthode lookForNmodAdj()
doit permettre de repérer les adjectifs modifieurs de noms (ou les noms modifiés par des adjectifs)
afin d'extraire les triplets <NC:xxx; mod; Adj:yyy>.
Une fois cette méthode développée, vous pourrez reprendre le même code pour extraire
les relations "simples" (celles qui sont identifiables par une seule relation de dépendance dans le format CoNLL
fourni par Talismane), e.g. les sujets des verbes et les objets des verbes.
Pour cela, il faut, dans la phrase :
- soit chercher les adjectifs (= les tokens dont le membre POS est égal à la chaîne de caractères XXX)
gouvernés par un nom (= les tokens dont le membre POS ...)
par la relation "mod" (= dont le membre depLabel est est égal à la chaîne de caractères ZZZ)
- soit chercher les noms (= les tokens dont ...)
qui gouvernent un adjectif (= dont un des dépendants est un adjectif = ...),
les deux tokens étant reliés par la relation RRR.
Les deux solutions sont équivalentes du point de vue du résultat produit,
mais vous verrez que l'une des deux est plus facile et plus logique.
Pour implémenter la première étape "chercher dans la phrase les tokens dont la partie du discours est XXX (nom ou adjectif)",
il suffit de reprendre la méthode de recherche de tokens dont les lemmes sont inconnus
et de modifier l' "inspection" du token : plutôt que de tester la valeur de son lemme,
il faut tester la valeur de sa partie du discours.
Il convient ensuite de chercher l' "autre" token de la relation de dépendance :
il vous faut déterminer s'il est plus simple de chercher, à partir d'un token donné, son gouverneur ou son dépendant.
Note : pour l'instant, on veut s'assurer d'être en capacité de parcourir les tokens d'une phrase
pour chercher des relations simples et les afficher dans la console.
Pas besoin à ce stade d'utiliser la classe SyntacticDependencies.
Cette classe sera utile lorsqu'on aura besoin de manipuler les relations pour en créer de nouvelles,
notamment pour la distribution des relations sur les tokens coordonnés.
[ Mention légale ]