Programmation pour le TAL

Extraction de triplets syntaxiques : distribution des relations de dépendance

Préalable

Se lancer dans cette étape suppose que, après exécution des différentes méthodes lookForObj(), lookForSuj(), ... et lookForCoords() :

On se trouve donc dans une situation correspondant au dernier diagramme d'objets de l'aide sur les structures de données (où vous auriez complété le diagramme en ajoutant toutes les dépendances syntaxiques et tokens coordonnés).

Distribution des relations sur les coordonnés

Pour chaque triplet (instance de SyntacticDependency) extrait, il faut tester i) si son gouverneur a des tokens coordonnés et ii) si son dépendant a des tokens coordonnés. Le cas échéant, il faut créer une nouvelle instance de SyntacticDependency, qui soit une copie de la précédente, en remplaçant simplement l'un des tokens i.e. même label et même gouverneur (resp. dépendant)), en remplaçant le dépendant par son coordonné (resp. gouverneur). Il faudra ensuite ajouter les nouvelles instances de SyntacticDependency au tableau des dépendances déjà extraites ("dependencies"). Attention, lire la note 1 ci-dessous. Il vous faut donc (dans une méthode de DependenciesBuilder, que vous invoquerez après toutes les méthodes lookForXXX(), et après lookForCoords()) :

  1. Itérer sur la liste dependencies
  2. Pour chaque instance de SyntacticDependency currentSD :
  3. Ajouter la liste des nouvelles instances de SyntacticDependency ainsi créées à la liste dependencies.
    Puis :
  4. Itérer à nouveau sur la liste dependencies
  5. Pour chaque instance de SyntacticDependency currentSD :
  6. Ajouter la liste des nouvelles instances de SyntacticDependency ainsi créées à la liste dependencies.
Une autre possibilité est la suivante :
  1. Itérer sur la liste dependencies
  2. Pour chaque instance de SyntacticDependency currentSD :
  3. Ajouter la liste des nouvelles instances de SyntacticDependency ainsi créées à la liste dependencies.

Selon les choix d'implémentation que vous aurez fait, seule l'une des deux possibilités décrites ci-dessus est pleinement satisfaisante. Vous me direz pourquoi.

Illustration

En reprenant l'exemple "la programmation et la modélisation épuisent..." de l'aide sur les structures de données, cela donne l'enchaînement suivant.

Configuration initiale :

Création d'une nouvelle instance de SyntacticDependency avec la même valeur de label ("suj") :


Affectation du gouverneur dépendant de la nouvelle instance de SyntacticDependency (le même que celui de la dépendance syntaxique initiale) :


Affectation du dépendant (le token coordonné à la dépendance syntaxique initiale) de la nouvelle instance de de SyntacticDependency :


Ajout de la nouvelle instance de SyntacticDependency à dependencies :


Note 1 : si vous obtenez une exception de type "ConcurrentModificationException", relisez la fin du cours sur les listes et les itérations (bas de page). Il vous faut utiliser un tableau temporaire.
Note 2 : commencez par faire simple !
Avant de vouloir traiter une phrase comme "La modélisation et la programmation procurent joie et bonheur", commencez par :

  1. "La programmation procure joie et bonheur" qui doit d'abord générer les triplets (en plus de <V:procurer;SUJ;NC:programmation>) : <V:procurer;OBJ;NC:joie> puis, après distribution de la relation, <V:procurer;OBJ;NC:bonheur>
  2. "La modélisation et la programmation procurent un plaisir inégalable" qui doit d'abord générer les triplets (en plus de <V:procurer;OBJ;NC:plaisir>) : <V:procurer;SUJ;NC:modélisation> puis, après distribution de la relation, <V:procurer;SUJ;NC:programmtion>
  3. Puis traitez enfin "La modélisation et la programmation procurent joie et bonheur"


Retour page U.E. ]

Mention légale ]