Vers une plate-forme d'annotations sémantiques automatiques à partir de documents multimédias Mémoire de fin d'études Master d'Informatique Etudiant : Minh-Tuan NGUYEN Superviseurs : Hacène Cherfi Khaled Khelif Rose-Dieng Kuntz Sophia Antipolis, Septembre 2007 TIEU LUAN MOI download : skknchat@gmail.com TABLES DES MATIÈRES I. Intégration des outils linguistiques.Plate-forme de Gate. Annotation sémantique automatique des textes.17 a)Détection des concepts et reconnaissance des instances.17 b)Détection des relations.Détection des concepts. 19 c)Description de l'algorithme général.Reconnaissance des instances.Détection des relations.
22 c)Description de l'algorithme général.Reconnaissance des triplets. 28 TIEU LUAN MOI download : skknchat@gmail. Annotation sémantique automatique des textes associés à une image.Sémantique d'une image. 38 c)Le meilleur triplet.
Conclusion et perspective. 50 TIEU LUAN MOI download : skknchat@gmail.com REMERCIEMENTS C'est un grand plaisir pour moi de remercier tous les personnes qui ont permis à ce travail d'être ce qu'il est. Je remercie tout d'abord M. Hacène CHERFI de m'avoir bien dirigé avec une grande chaleur de pas en pas toute la durée du stage, je ne peux rien accomplir sans vous.
Je remercie Mme. Rose DIENG-KUNTZ, Directrice de recherches INRIA pour m'avoir choisir et surtout pour nos discussions enflammées qui me donne beaucoup de connaissances intéressantes. Je n'oublie jamais votre sourire dans la première fois nous nous rencontrons. Khaled KHELIF qui m'a aidé dans les premiers pas de mon stage ainsi que dans les moments où je dois faire face des problèmes difficiles.
Je remercie tous les membres du groupe EdelWeisse : Priscile, Virginie, Noureddine, Mohamed, Alain, Olivier. de votre accueil ainsi que de m'avoir aidé lorsque j'ai besoin. J'ai également apprécié la région Alpes Côte d'Azur où il y a beaucoup de paysages très très beau que je n'ai jamais vu dans ma vie. TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan I.
Introduction Le Web actuel ne dispose pas d'outils pour décrire et structurer ses ressources de manière satisfaisante afin de permettre un accès pertinent à l'information. Tim Bernes-Lee a proposé d'étendre le web actuel vers un web où l'information possédera un sens bien défini permettent ainsi aux applications d'exploiter directement la sémantique des ressources et de coopérer avec l'utilisateur afin de lui faciliter ses tâches (recherche, commerce électronique. Ce futur web baptisé web sémantique a été défini comme un « web intelligent » où les informations stockées dans les machines seraient en plus comprises par ses dernières afin de répondre efficacement aux requêtes lancées par les utilisateurs. Pour exploiter directement la sémantique des ressources du web, il faut une représentation de la sémantique.
La représentation par graphe est maintenant focalisé dans le domaine de Web Sémantique. C'est-à-dire, chaque document est représenté par un graphe, en suite, les manipulations et exploitations sont fait sur ces graphes. Maintenant, le problème d'annotations sémantiques automatiques (transformation de document au sa représentation sémantique) est toujours comlexe. Et les travaux du stage font partie des efforts pour une plate-forme d'annotations sémantiques automatiques, la plate forme SemAnnot.
Pour l'instance, les graphes générés ont besoin d'être vérifiés par des experts. Ce n'est pas vraiment automatique. Dans le cadre du stage, les travaux se composent de trois parties principales : Intégration des outils linguistiques : dans cette partie, nous allons créer deux Wrappers pour deux outils existants, Acabit [Acabit-URL] et Fastr [Fastr-URL], suivant l'approche de Gate. Ces deux Wrappers doivent être intégrés dans la plate-forme de Gate.
Annotations sémantiques automatiques des textes : dans la deuxième partie du stage, dans le projet SevenPro nous implémentons deux modules: reconnaissance des instances et reconnaissance des triplets suivant une approche syntaxique. Annotation sémantique automatique des textes associés à une image : le travail de cette partie est de chercher une solution d'annotations sémantiques automatiques des textes associés à une image. -5- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan II. Intégration des outils linguistiques Pour une plate-forme comme « SemAnnot », la réutilisation des outils linguistiques est très importante.
Maintenant, il y a beaucoup d'outils linguistiques existants, et nous allons gagner beaucoup de temps si nous réutilisons ces outils. Heureusement, Gate[Gate-URL] nous donne une approche qui nous permet d'intégrer des outils à un système en Java. Pour comprendre ces intégrations, nous avons besoin d'étudier ces outils ainsi que la plate- forme de Gate. Plate-forme de Gate Selon [Khaled-2006], Gate est une plate-forme d'ingénierie linguistique qui repose sur l'application successive de transducteurs aux textes.
Conformément aux termes employés par ses concepteurs, nous parlons ici des ressources de traitement (Processing Ressources : PR). Ces ressources de traitement utilisent le texte modifié par les ressources précédemment appliquées pour ajouter de la structure au texte. Les ressources de traitement les plus courantes sont les segmenteurs (Tokenizers1), les analyseurs morpho-syntaxique (POS Tagger2), les transducteurs (JAPE transducers), et les patrons d'extractions (Templates). Ils sont appliqués au texte au sein d'une cascade (chaine de traitement ou pipeline).
A côté de ces ressources de traitement qui sont déjà intégrées dans la plate-forme de Gate, il est possible d'intégrer d'autres outils existantes aux pipelines même si ces outils ne sont pas en Java qui est le langage de programmation pour Gate. Cette intégration se fait par Wrappers. Pour l'intégration des outils qui utilisent des formats de sorties et d'entrées différents, Gate propose un format commun basé sur XML pour tout pipeline, les entrées et sorties de tous les modules qui font partie à un pipeline doivent être transformés au format XML. C'est la structure pivot.
Nous présentons ci-après le schéma de la structure pivot utilisé par Gate, un exemple réel de la structure est présenté dans la partie Annexe du rapport.0" encoding="UTF-8" ?> <GateDocument> <!-- The =document’s features--> 1 A Tokenizer est un module de traitement de texte qui identifie chaque token d'un langage avec sa label correspondant [Magnini-2003]. 2 A POS-Tagger est un module de traitement de texte qui donne un POS (Part of Speech) à chaque mots d'un langue dans une phrase concrète. -6- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan <GateDocumentFeatures> <Feature> <Name className="java.String">MimeType</Name> <Value className="java.String">text/plain</Value> </Feature> <Feature> <Name className="java.SourceURL</Name> <Value className="java.String">file:/G:/tmp/example.txt</Value> </Feature> </GateDocumentFeatures> <!-- The document content area with serialized nodes --> <TextWithNodes> <Node id="0"/>A TEENAGER <Node id="11"/>yesterday<Node id="20"/> accused his parents of cruelty by feeding him a daily diet of chips which sent his weight ballooning to 22st at the age of l2<Node id="146"/>.<Node id="147"/> </TextWithNodes> <!-- The default annotation set --> <AnnotationSet> <Annotation Type="Date" StartNode="11" EndNode="20"> <Feature> <Name className="java.String">rule2</Name> <Value className="java.String">DateOnlyFinal</Value> </Feature> <Feature> <Name className="java.String">rule1</Name> <Value className="java.String">GazDateWords</Value> </Feature> <Feature> <Name className="java.String">kind</Name> <Value className="java.String">date</Value> </Feature> </Annotation> <Annotation Type="Sentence" StartNode="0" EndNode="147"> </Annotation> <Annotation Type="Split" StartNode="146" EndNode="147"> <Feature> <Name className="java.String">kind</Name> <Value className="java.String">internal</Value> </Feature> </Annotation> <Annotation Type="Lookup" StartNode="11" EndNode="20"> <Feature> <Name className="java.String">majorType</Name> <Value className="java.String">date_key</Value> </Feature> </Annotation> </AnnotationSet> <!-- Named annotation set --> <AnnotationSet Name="Original markups" > <Annotation Type="paragraph" StartNode="0" EndNode="147"> </Annotation> </AnnotationSet> </GateDocument> Exemple 1. Une exemple de structure pivot XML de Gate En utilisant la structure pivot, Gate peut coordonner de façon automatique plusieurs outils existants qui sont écrits par des langages différents.
Dans cette partie, nous créons deux Wrapper pour deux outils existants (Acabit et Fastr). La mission principale est de transformer leur sortie au structure pivot de Gate ci-dessus. -7- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan 2. Acabit Acabit est un outil linguistique qui détecte des termes à partir d'un texte.
Son approche de la détection des termes est basée sur la découverte, la structuration et l'inférence les relations conceptuelles entre les termes [Daille-2003]. Pour une SemAnnot, Acabit aide à proposer de nouveaux termes à partir de corpus. Pour fonctionner correctement, Acabit pour l'anglais a besoin du POS Tagger Brill et d'un Lemmatiseur3. De plus, ce lemmatiseur a besoin d'une base de données qui est générée depuis CELEX et la base de données de Brill.
Le figure suivante montre la chaîne de traitement de Acabit, de l'entrée à la sortie. Texte d'entrée Prétraitement POS Tagger Brill Lemmatiseur Acabit Sortie XML Base de données de POS Tagger Brill combiner Base de données du Lemmatiseur Base de données de CELEX Figure 1: Chaîne de traitement d'Acabit Pour la sortie, Acabit retourne une liste des candidat-termes sous forme XML.0" encoding="UTF-8"?> <LISTCAND> <SETCAND new_ident="7" loglike="1011.405" freq="1"> <CAND old_ident="7"> <AN freq="1"> <BASE> <TERM>local nature </TERM> </BASE> </AN> </CAND> </SETCAND> <SETCAND new_ident="0" loglike="1011.405" freq="1"> <CAND old_ident="0"> <AN freq="1"> <BASE> <TERM>large amount </TERM> </BASE> </AN> </CAND> </SETCAND> 3 Lemmatiseur est un module de traitement de texte qui détecte le lemma pour retrouver le mot original à partir leurs variantes, ex : lemma de « suis » est « être ». -8- LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan <SETCAND new_ident="6" loglike="1011.405" freq="1"> <CAND old_ident="6"> <AN freq="1"> <BASE> <TERM>specific domain </TERM> </BASE> </AN> </CAND> </SETCAND> </LISTCAND> Exemple 2. Une sortie sous structure XML de Acabit.
Des termes proposés sont claire dans la liste ci-dessus, il y a trois termes proposés : local nature, large amount et specific domain. Nous introduisons ensuite le Fastr, l'outil deuxième. Fastr Fastr [Fastr-URL] est aussi un outils linguistiques qui détecte des termes et reconnaît leurs variantes. Pour fonctionner, Fastr utilise TreeTagger [Schmid-1994] comme un POS Tagger et un Lemmatiseur.
La détection des termes et reconnaissance des variantes de terme a besoin deux base de données : CELEX [CELEX-URL] et WordNet 1. Fastr dispose de deux modes de travail : controlled-indexing : l'entrée se compose d'un corpus et d'une liste des termes. free-indexing : l'entrée est seulement un corpus, les termes seront proposés à partir de ce corpus. C'est le mode que nous utilisons.
-9- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan TreeTagger appel Texte d'entrée Fastr Sortie base de lie ns base de l iens sémantiques morphologiques générer générer 1.6 CELEX Figure 2: Modèle de travail de Fastr Voici ci-dessous, une résultat réel en sortie de Fastr : Since large amounts of textual and terminological data must be , we a partial analysis of multi-domain documents to an in-depth understanding to a specific domain. 000001 large amount large amounts 0 000001 terminological datum terminological data 0 000001 partial analysis partial analysis 0 000001 multi-domain document multi-domain documents 0 000001 in-depth understanding in-depth understanding 0 000001 specific domain specific domain 0 Because of their local nature ( they not entire sentences ) and because of their high information content , terms are privileged keys for information description and , therefore , term extraction is an unavoidable preliminary phase to document indexing. 000002 local nature local nature 0 000002 entire sentence entire sentences 0 000002 information description information description 0 000002 information content information content 0 000002 high information high information 0 000002 term extraction term extraction 0 000002 privileged key privileged keys 0 000002 preliminary phase preliminary phase 0 000002 document indexing document indexing 0 Exemple 3 : Une résultat réel en sortie de Fastr -10- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan 4. Implantation Pour l'intégration d'un nouvel outil à la plateforme de Gate, il y a deux étapes principales : Faire fonctionner l'outil : Java nous permet de démarrer un outil qui est dans autre langage.
Annoter ses résultats et ajouter ces annotations à la structure pivot : ceci dépend du format de sortie de l'outil. Outil à Résultats réels de intégrer l'outil annoter démarrer Wrapper sous Gate Annoter ces résultats réels et Entrée dans Faire fonctionner l'outil rajouter ces annotations au Fin structure pivot structure pivot Figure 3: Manière de fonctionner d'un Wrapper sous Gate Acabit Wrapper -11- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan Figure 4: Les classes du Wrapper de Acabit Illustration 1: Résultat du Wrapper d'Acabit dans la plate-forme de Gate -12- TIEU LUAN MOI download : skknchat@gmail.com Mémoire de fin d'études NGUYEN Minh-Tuan Et une annotation en détail de AcabitTerm est la suivante : <Annotation Id="158" Type="AcabitTerm" StartNode="408" EndNode="425"> <Feature> <Name className="java.String">Variant</Name> <Value className="java.String">unvoidable preliminary phase</Value> </Feature> <Feature> <Name className="java.String">Origin</Name> <Value className="java.String">unvoidable preliminary phase</Value> </Feature> <Feature> <Name className="java.String">Freq</Name> <Value className="java.Integer">1</Value> </Feature> <Feature> <Name className="java.String">LogLike</Name> <Value className="java.