Recherche d’information & Représentation des Connaissances Rabier Martin Tsemengue Patrick 5GI 24/01/2010 Soutenance de Projet
Introduction Objectif: Développement d'un Système de Recherche d‘Informations Collection: Cookbooks sur des technologies de développements de logiciels Plusieurs notions: recherche, indexation, ontologie
Plan Système de Recherche d’Information Ontologie Evaluation Indexation Recherche Ontologie Construction de l'ontologie Appariement des termes Evaluation Conclusion
Indexation Objectif: Construction du fichier inverse Différentes étapes Parsing d'un fichier XML Extraction des termes de la balise <meta> & Distribution vers toutes les sections sous-jacentes Extraction des termes des balises <section> Calcul des poids Stockage d'information
Stockage d'information Deux tables dans la base de données FICHIER_INVERSE SECTION_MAP Field Type Term Varchar(255) Infos text Nb_occurences_col Int(11) Field Type Id_section Int(11) Doc_path Varchar(255) Xpath
Calcul de poids Coefficient de pondération Calcul des poids Produits des balises Exemple: <meta><title>mot</title></meta> => poids à 4*2 <meta><author>mot</author></meta> => poids à 4*1 Tag Weight meta 4 title 3 code 2 image section 1 subsection item paragraph …
Taille collection/Taille indexation Taille de la collection 21 documents 109 sections 55835 mots au total (mots vides inclus) Taille de l'indexation 3209 termes différents (mots vides exclus) 30367 mots au total (mots vides exclus) Durée de l’indexation 30 minutes 8 seconds Temps d'exécution rallongé par les accès à la base de donnée
Recherche
Recherche – Pertinence d’un mot Récupération du CLOB associé (idSection, poids, pos1, pos2, …, posN) (idSection2,…) Poids = Tf pondéré selon la balise contenant le terme Ajout de l’IDF avec Tf : nombre d'occurrence du terme dans la section (pondéré selon la balise) N : nombre de sections dans la collection Ni : nombre de sections de la collection contenant le terme
Recherche- Pertinence d’une expression Expression : plusieurs mots entre guillemets Vérifier l’ordre correct des mots Récupération du CLOB de chacun des mots Récupération des positions des mots dans les sections
Recherche- Pertinence d’une expression Algorithme : premierMot = premierMotNonVide(expression) pour chaque section S ou premierMot est présent { nbOccurences = 0 pour chaque position de ce premierMot dans S occurrenceExpr = true pour chaque mot suivant si il n'est pas a la bonne position occurenceExpr = false } si (occurrenceExpr == true) nbOccurrences++
Recherche- Pertinence d’une expression Calcul de la pertinence : Somme des poids des mots dans la section Nombre d’occurrences de l’expression dans la section Calcul limité : Une expression possède une pertinence trop élevée par rapport à celle d’un mot Possibilité d’amélioration
Recherche – Pertinence d’une requête Requête : plusieurs mots/expressions Quid de la pertinence Si tous les mots doivent être présents => Rappel limité Si => Ajout de bruit Calcul d’un ratio : Classement des sections : Ordre décroissant du ratio En cas d’égalité, Ordre décroissant de
Ontologie
Ontologie
Ontologie- Enrichissement de requête Parsing de l’ontologie Utilisation d’ OWL API Création d’une table Terme => Classes ou Individus OWL Enrichissement de requête : pour chaque mot ou expression de la requête { Récupération des classes et individus OWL pour chaque classe ou individu CouI ajout des synonymes de CouI à la requête }
Evaluation Précision à 5, 10 et 25 éléments par requête
Evaluation Précision moyenne SRI Résultats identiques avec l’ontologie Rank AV Precision 5 0,584615 10 0,461538 25 0,292308
Conclusion Indexation complète Recherche Ontologie Stockage d’information satisfaisant Recherche Amélioration par affinage des pertinences Ontologie Amélioration des résultats par la généralisation/spécification Extension par des termes couramment utilisés dans les domaines