Accéder au contenu principal

Utilisation d'un Thesaurus avec Oracle WebCenter Content

Objectif 


Ajouter dans WebCenter Content le support d’un thésaurus pour :
  • Augmenter le taux de réponse à l’issue d’une recherche non guidée  (par l’emploi de synonymes et de termes liés)
  • Élargir une recherche à des concepts plus spécifiques que celui qui est recherché
  • S’appuyer sur une nomenclature de termes et concepts pour tagger facilement des documents

Le thésaurus qui a été utilisé comme exemple est celui de la communauté européenne : EUROVOC

Intérêt du recours à un thesaurus


Comment exprimer une interrogation du type: recettes à base de poisson mais sans coquillage? ou bien, recettes incorporant des fruits secs ?
Pour répondre à cette question, on peut envisager de recourir à une gestion de contenu dans laquelle on s'efforcerait de catégoriser chacune des recettes. Cette approche nécessite un effort important de classement. On peut, d'autre part,  exprimer la requête de la façon la plus exhaustive.
A l'inverse on peut avoir recours à un thésaurus. Ici, on constitue une nomenclature des aliments en partant du plus générique vers le plus spécifique.

Utilisation d'Eurovoc pour une recherche guidée
Le rôle de thésaurus est ainsi de proposer une classification des aliments à partir de laquelle une recherche pourra être construite automatiquement par Oracle text (moteur de recherche utilisé par WebCenter Content).

L'emploi d'expressions de manipulation d'un thésaurus implique que la requête d'origine soit enrichie par le moteur Oracle Text à partir d'un éclatement du terme employé en ses formes plus spécifiques ou plus génériques. Par exemple, l'emploi du terme fruit avec une recherche pour tous les termes spécifiques de niveau 1 aboutira à une expression finale de plusieurs dizaines de termes. Il faut garder à l'esprit que ce n'est pas sans impact sur les performances.
L'emploi d'un thésaurus est très utile lorsque le corpus est homogène, et permet d'obtenir une très bonne exhaustivité de résultat.
L'utilisation de synonymes apporte une réelle valeur au contenu et permet l'expression de requêtes plus libres. En revanche, la notion de généricité ne sera peut-être pas pertinente pour tous les domaines, et risque d'aboutir à un nombre excessif de résultats.

 

Principes de fonctionnement


La gestion du thésaurus ainsi que son usage dans les expressions de recherche est sous la dépendance du moteur de base de données. Dans le cas de la base Oracle, il s’agit d’une fonctionnalité Oracle Text.
Les recherches dans WebCenter Content sont transformées en expressions SQL valides qui sont interprétées par le moteur de recherche full text : Oracle Text. Le recours à un thésaurus a lieu lors de la phase d’interrogation seulement. Autrement dit, la construction des index ne dépend pas du fait qu’un thésaurus sera utilisé ou non. Une expression typique de l’usage d’un thésaurus est par exemple la recherche de synonymes ou bien de termes reliés à celui qui est fourni en paramètre de recherche. Par exemple : tous les documents qui évoquent la fraude (trafic illicite, etc.)

Logiciels utilisés


  • Oracle WebCenter Content 11gR1 (11.1.1.6+)
  • Oracle Database 11gR2 (11.2.0.2.0)
  • Thesaurus EUROVOC (Thésaurus multilingues de l’union européenne) http://eurovoc.europa.eu/

o   Contient 6800 concepts, environ.
o   On peut utiliser n’importe quel autre thesaurus

Implémentation


Se procurer un thésaurus existant (celui d’Eurovoc par exemple) ou bien en définir un en respectant la norme ISO-2788 ou ANSI Z39.19.
Remarque : la norme ANSI concerne les thésaurus monolingues seulement.
Oracle permet de gérer des thésaurus multilingues, mais il faut les compléter de façon programmatique. Voir chapitre plus loin.
Dans ce qui suit, on utilise le thésaurus EUROVOC de la communauté européenne. Il présente l’avantage d’être complet et disponible en de nombreuses langues. S’il est bien adapté à la recherche dans un corpus des débats parlementaires, il l’est moins, en revanche, dans d’autres domaines.

Installation


Déverrouiller le schéma CTXSYS
Alter user ctxsys account unlock;

Changer le password de CTXSYS
Alter user ctxsys identified by XXXXX ;

Charger le thésaurus avec la commande en ligne ctxload. Ne pas oublier de positionner la variable NLS_LANG auparavant (essentiel dans le cas d’un thésaurus en Français, par exemple)

set NLS_LANG=French_France.UTF8
ctxload -user ctxsys/ @hostname -thes -file C:\temp\eurovoc-FR.txt -name default

Pour supprimer un thesaurus existant, il faut utiliser l’une des commandes fournies dans le package CTX_THES.

begin
   ctx_thes.drop_thesaurus('default');
end;

Utilisation dans WebCenter Content
Le recours au thésaurus implique l’utilisation d’expressions syntaxiques bien spécifiques :
  • Termes synonymes : SYN(fraude)
  • Termes reliés : RT(fraude)
  • Termes les plus spécifiques : NT(fraude)
  • Termes plus génériques :  BT(fraude)

On entre ces expressions dans l’interface standard de recherche de WebCenter Content, et plus exactement dans la partie quickSearch. Ces expressions doivent être rentrées entre guillemets:
 « RT(fraude) »
 Dans certains cas, on doit préciser des paramètres supplémentaires :
« NT(fraude,3) » : Termes plus spécifiques avec un niveau de profondeur de 3.
D’un point de vue syntaxique, l’expression ci-dessus ne sera pas interprétée correctement car la virgule sera « échappée ». Pour contourner ce problème, on patch la procédure PL/SQl qui est utilisée pour le génération du prédicat. Comme cette procédure peut-être vue comme une sorte de hook, cela ne pose pas de problème particulier dans la mesure ou le code PLSQL est facilement patchable.

CONTENT_SEARCH

Procédure search_with_resultset interface
-- start
   if instr(tquery,'NT(')>0 or instr(tquery,'BT(')>0 then
      tquery := replace(tquery,'\,',',');
  end if;
--End

Limitations de l’usage du thésaurus dans l’interface standard de recherche:
D’un point de vue ergonomique, cela n’est pas idéal, puisque cela exige de la part de l’utilisateur la connaissance d’expressions spécifiques. Celles-ci ne sont pas complexes, mais demandent cependant un apprentissage.
On verra dans la deuxième partie qu’il est simple de proposer une interface spécifique  qui prendra en charge le dialogue plus orienté « métier » avec l’utilisateur.
Une fois que le thésaurus est opérationnel, on peut dépasser le cadre stricte de la recherche pour proposer lors de la saisie de nouveaux document, un système de références pour tagger un document à partir du contenu du thésaurus. Cela revient à proposer un tag basé sur un thésaurus. Cette méthode évite la dispersion des valeurs de tags.

Le support s’effectue via des listes de valeurs. Dans WebCenter Content, il faut créer une vue (au sens WCC) et baser cette View sur une table ou bien une vue du SGBD. Dans notre cas, nous allons créer des vues qui afficheront le contenu du thésaurus lui-même stocké dans des tables systèmes du schéma CTXSYS.
Mise en ouvre de la création des vues et des supports de liste de valeurs
Donner des droits depuis le schéma CTXSYS

Grant select on DR$THS_PHRASE to wcc1_ocs with grant option ;
Grant select on DR$THS_BT to wcc1_ocs with grant option ;
Grant execute on  CTX_THES to wcc1_ocs with grant option ;

Importer les services d’accès au thesaurus


Les services sont fournis dans un composant qu’il suffit d’importer avec le Component Wizard (Téléchargerle composant d’accès au thesaurus)
Remarques : les vues ci-dessus ne fonctionnent que s’il y a un seul thésaurus (default). S’il y en a plusieurs, il faut ajouter un filtre dans la clause where.

Création des objets dans WebCenter Content

Les vues thessyn et thesrt entraînent la création d’autant de fichier qu’il y a de valeurs dans les RT et synonymes et cela pose de problèmes de longueur trop longue des noms de fichiers.
Lancement du Component Wizard (CompentWizzard)

Ajout d’un nouveau service pour obtenir les synonymes et les related terms


Avec l’outil ComponentWizard, ajouter le composant oracle.webcenterContent.service.Thesaurus.zip qui crée plusieurs services
  • GET_THES_TOP
  • GET_THES_BT
  • GET_THES_SYN
  • GET_THES_RT

Extension à un thésaurus multilingues

Même s’il n’est pas possible d’utiliser l’outil ctxload pour charge un thésaurus multilingue, on peut quand même compléter celui qui a été chargé dans une langue déterminée (le français dans notre cas) avec les sections propres à chaque langue. On utilise alors l’API CTX_THES est on ajout toutes les traductions d’expressions avec la procédure : CREATE _TRANSLATION
Lors de la recherche, on emploie :
TRSYN (les équivalents en langue étrangères d’une expression, synonyme et équivalentes étrangers du synonyme
TR : renvoie les équivalents pour une expression

CTX_THES.CREATE_TRANSLATION(tname       in    varchar2,
                            phrase      in    varchar2,
                            language    in    varchar2,
                            translation in    varchar2);

begin
   ctx_thes.create_translation('DEFAULT', 'DROIT', 'EN', 'LAW');
end;

Ex : Ajout des traductions en Anglais pour  l’expression urbanisme

begin
ctx_thes.create_translation('default', 'VILLE', 'EN', 'TOWN');
ctx_thes.create_translation('default', 'URBANISME', 'EN', 'TOWN-PLANNING');
ctx_thes.create_translation('default', 'ARCHITECTURE', 'EN', 'ARCHITECTURE');
ctx_thes.create_translation('default', 'PLAN', 'EN', 'PLAN');
ctx_thes.create_translation('default', 'GESTION DE L''ESPACE', 'EN', 'AREA MANAGEMENT');
ctx_thes.create_translation('default', 'GESTION DE L''ESPACE', 'EN', 'AREA MANAGEMENT');
ctx_thes.create_translation('default', 'TRAVAUX PUBLICS', 'EN', 'PUBLIC WORKS');
ctx_thes.create_translation('default', 'POLITIQUE DE LA VILLE', 'EN', 'TOWN-PLANNING REGULATIONS');
ctx_thes.create_translation('default', 'PLANIFICATION URBAINE', 'EN', 'URBAN PLANNING');
end;

Interrogation

Échantillons de requête

Voici quelques exemples de requêtes qui peuvent être lancées sur la base de test.
Le paramètre « cuisine » signifie que l’on emploie un thésaurus dont le nom est « cuisine » et non pas celui pas celui par défaut.
interrogation
Exemple de prédicat en format natif
Commentaires
Poissons avec, par priorité, les recettes sans laitage
« NT(poissons,1,cuisine) - NT( laitages,1, cuisine) »
NT: Narrower terms
poisson(s) n'est pas équivalent à poisson. C'est la raison pour laquelle un synonyme a été introduit dans le thésaurus pour préserver l'emploi de formes plurielles dans les requêtes.
Recettes de poissons sans laitages
« NT(poissons,1,cuisine) NOT NT( laitages,1, cuisine) »
emploi de deux termes génériques
Recettes de poissons sans coquillages
« NT(poissons,1,cuisine) NOT NT( crustacés,1, cuisine) »
Recettes à base de pommes (en ignorant les recettes avec des pommes de terre)
« SYN(pommes, cuisine) NOT SYN(patates, cuisine) »
remarquer l'emploi du synonyme "patate" pour pomme de terre.
Cette requête permet de trouver des recettes où seule la variété de pomme a été mentionnée: ex: golden.


Taggage des documents à l’aide du thésaurus


Les vues peuvent être utilisées pour proposer, lors du taggage d’un document, le support d’une liste de valeurs. Cela a comme avantage de guider l’utilisateur dans le renseignement de descripteurs faisant partie d’une liste « finie » et structurée hiérarchiquement.
Par exemple, la vue thesbt sera utilisée pour proposer la saisie d’une zone géographique. Pour cela on précise un filtre qui accède au domaine « Géographie » à partir du thésaurus.
On peut ainsi multiplier le nombre de listes de valeurs accédant à un seul et même thésaurus.

Annexes

Échantillon du format de chargement d’un thesaurus monolingue
(Observer qu'il doit y avoir au moins un caractère d'espacement avant chacun des termes NT, BT, SYN etc).

TOP
 NT1 VIE POLITIQUE
  NT2 cadre politique
   NT3 idéologie politique
    NT4 gauchisme
    NT4 conservatisme
    NT4 internationale ouvrière
    NT4 internationale socialiste
    NT4 libéralisme
    NT4 maoïsme
    NT4 marxisme
    NT4 anarchisme
    NT4 mondialisme
    NT4 national-socialisme
    NT4 nationalisme
    NT4 régionalisme
    NT4 communisme
    NT4 socialisme
    NT4 royalisme
    NT4 écologisme
    NT4 laïcité
    NT4 social-démocratie
    NT4 populisme
    NT4 eurocommunisme
    NT4 eurodroite
    NT4 fascisme
   NT3 institution politique
    NT4 pouvoirs publics

MATÉRIAU

Rappel sur la liste des opérateurs de thésaurus Oracle

SYN( term [, thesname] )
The input term is always part of the output; if no synonyms are found then term is the expansion. thesname is the name of the thesaurus to use. If omitted, thesaurus DEFAULT is consulted. There is no DEFAULT thesaurus installed automatically -- it is up to the user to load a thesaurus named DEFAULT.
PT( term [, thesname] )
Preferred term. Only the preferred term is returned in the expansion.
BT( term [, level [,thesname]] )
BTP( term [, level [,thesname]] )
BTG( term [, level [,thesname]] )
BTI( term [, level [,thesname]] )
NT( term [, level [,thesname]] )
NTP( term [, level [,thesname]] )
NTG( term [, level [,thesname]] )
NTI( term [, level [,thesname]] )
Broader/Narrower terms of all types. The optional second argument is a numeric scope indicating how many levels of hierarchy you want. A BT with a level of 2, for instance, would search for the term, all broader terms of the term, and all broader terms of those terms.
TT( term [, thesname] )
Top term. Travel up the BT hierarchy to the root term. Only this root term is searched.
RT( term [,thesname] )
Related term. Search for term and all related terms.
TR( term [, lang [, thesname]] )
Foreign language translation of the term. Lang argument should match label used in the input thesaurus. If omitted all foreign language translations will be searched. Note that the foreign language translation must have been entered in the input thesaurus -- we don't do automatic translation.
TRSYN( term [, lang [, thesname]] )
Foreign language translation of term synonyms. This is functionally equivalent to taking SYN of the term, then TR of each resulting term. Like TR, if the target language is omitted, all available translations will be searched.


Note concernant la licence EUROVOC


Depuis Mars 2014, ce thesaurus est libre de droits :
As you may know, according to the reuse policy implemented by the decision of the European Commission 2011/833/EU licences are no longer required to download the EuroVoc Thesaurus in SKOS/XML format. We are pleased to inform you that the files are available for download on the following websites: http://eurovoc.europa.eu/ and http://open-data.europa.eu/en/data/dataset/I57spZ6CMZMFAIvArDiHaw.
EuroVoc is now reusable in all formats for commercial and non-commercial purposes without prior permission, provided the source is acknowledged as follows: "© European Union, 2014, http://eurovoc.europa/eu".


Commentaires

Posts les plus consultés de ce blog

Oracle Sites Cloud Service - Adding authentication to a site

With Oracle Sites Cloud Services, access to any site is Public, by default. If you have to add authentication, there is a very simple way to achieve it: First, we assume that authentication will be against the existing Identity Domain provided with the tenant. In a dedicated page of a site, called Login for instance, we add an App component which embeds an URL to any folder of Documents Cloud Service. ie: App URL =  https://documents.XX.oraclecloud.com/documents/ embed /home/nameasc Note that the URL will be called with the EMBED keyword . Then we add the App component is a region, and  we setup a height=1 and a width=1 (almost invisible). That's all. Each time a user will navigate to this custom   Login Page, and if the user is not yet authenticated, a new page will splash on the screen, asking for credentials. Once login and pasword are provided by the user, the page disapears and return to custom Login page. Optionnaly it's possible to add a dedicated butt

Auschwitz

 Quelques livres à propos des camps d'Auschwitz La mort est mon métier (Robert Merle) - 1952 Roman avec Rudolf Hoess (responsable camps d'Auschwitz) comme personnage principal Si c'est un homme (Primo Levi) - 1947 Témoignage de Primo Levi sur sa captivité à Auschwitz Les médecins d'Auschwitz (Bruno Halioua) - 1922 Etude sur l'organisation des services de médecine à Auschwitz Je me suis évadé d'Auschwitz (Rudolf Vrba) - 2004 Récit d'un captif qui a réussi à s'échapper d'Auschwitz Shoah  (Claude Lanzmann) - 1985 Dialogues du film "Shoah" Sonderkommando : Dans l'enfer des chambres à gaz  (Shlomo Venezia ) Entretien avec un ancien prisonnier qui a tenu le rôle de sonderkommando (manipulation des corps dans les chambres à gaz) Auschwitz I Birkenau

Streaming mp3 fromVLC / Icecast to Android

Here are some tips for streaming music to android mobile devices from a PC. Platform which has been used fo test: Ubuntu 11.10 oneiric + a NAS for storing music (windows can fit as well) Videolan VLC 1.1.12 (providing mp3 flow) icecast 2.3.2 (shoutcast radio) Winamp 1.2.12 for Android mobile(music player) Android-vlc-remote for Android (remote control for VLC) Start icecast server icecast2 -c icecast.xml The icecast xml config file is the original one. don't modify anything at this stage.  Setup VLC in order to stream mp3 instead ogg format Close VLC Prepare a playlist (ie: scarlatti.m3u) with Banshee or whatever. Launch VLC in command line vlc scarlatti.m3u --sout '#standard{access=shout,mux=ogg,dst=source:hackme@192.168.0.3:8000/scarlatti}' --sout-keep --extraintf=luahttp --fullscreen --http-album-art     Check that icecast is displaying a mount point for the new radio Check the HTTP acces