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.
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).
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 |
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
La
version pour le SGBD Oracle : Téléchargerles versions Françaises et Anglaises du thesaurus EUROVOC pour le SGBD Oracle
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;
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 ;
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)
Et
upload du fichier oracle.webcenterContent.service.Thesaurus.zip
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