BDM_CM11_15_16_Inter..

Transcription

BDM_CM11_15_16_Inter..
Oracle et interMediaText
ORACLE Multimedia
IntermediaText

interMediaText est un module Oracle qui
offre des facilités pour


Gérer des attributs de type texte,
Effectuer des recherches sur ces textes




Recherche générique,
Par rapprochement orthographique,
Par proximité
Par radical de mots,
2
1
Oracle et interMediaText

Oracle et interMediaText
Création d'une table décrivant des produits avec
une image en externe et une description textuelle
du produit.

CREATE TABLE product (
Pour pouvoir utiliser les fonctionnalités de
interMediaText sur la description textuelle,

product_name VARCHAR2(30);
product_descrip LONG; // ou grand VARCHAR
ALTER TABLE product ADD
(constraint product_PK primary key as (product_name));
)


La table doit posséder une clé primaire qui doit
être créée si elle n'en a pas
La description du produit sous forme textuelle est
conservée dans la colonne product_descrip et est de type
LONG qui permet de stocker jusqu'à 2Go de caractères.
Ou de type CLOB pour des textes plus longs

Et il faut créer un index de texte sur la colonne
contenant la description textuelle.
3
4
Oracle et interMediaText
Oracle et interMediaText


Création d’un index de texte

create index descrip_index on product(product_descrip)
indextype is ctxsys.context;

Lorsque la colonne de texte est indexée les fonctionnalités
de recherche sont enrichies.
Une requête de texte peut comporter une fonction
CONTAINS
SELECT product_Name
FROM product
WHERE CONTAINS (….);
L'index de texte peut être reconstruit par la
commande
 ALTER index descrip_index rebuild

5
La portion de texte désignée par CONTAINS est traitée de
façon spécifique par Oracle, le reste de la requête est
traitée de façon habituelle.
6
1
Oracle et interMediaText

Oracle et interMediaText
Les opérateurs à l'intérieur de la fonction
CONTAINS permettent d'effectuer les recherches
suivantes :







Recherche par correspondance exacte d'un mot ou
d'une locution
Recherche par correspondance exacte d'un mot ou
d'une locution
Recherche par correspondance exacte de plusieurs
mots combinés
Recherche par proximité des mots dans un texte
Recherche par radical de mot
Recherche par rapprochement orthographique
Recherche par rapprochement de sonorité

Recherche de tous les produits en laine (whool).
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool')>0;


Le signe > est appelé un opérateur de seuil.
Cette requête sélectionne tous les noms des produits
dont le score de recherche exacte du mot 'whool'
excède une valeur de seuil de 0
7
8
Oracle et interMediaText

Oracle et interMediaText
Recherche par correspondance exacte d'un mot
ou d'une locution.

SELECT product_Name, SCORE(10)
FROM product
WHERE CONTAINS (product_descrip,'whool',10)>0;


Recherche par correspondance exacte de plusieurs
mots combinés
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool AND polyester' )>0;
Cette requête sélectionne les produits dont le score de
recherche du mot 'whool' compris entre 0 et 10,
excède le seuil 0.
Ce score peut être affiché :
Product_Name
SCORE(10)
Pullover


Cette requête sélectionne les produits dont la
description textuelle comporte les deux mots 'whool' et
'polyester'.
L'opérateur OR peut aussi être utilisé.
6
9
10
Oracle et interMediaText

Oracle et interMediaText
Recherche par correspondance exacte de plusieurs mots
combinés

SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool ACCUM polyester' )>0;

Cette requête emploie un autre moyen de combiner des
recherches individuelles


SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool*3 OR
polyester*2' )>5;
en sommant leurs scores de recherche
Les scores peuvent être soustraits par l'emploi de la
fonction MINUS.

Les scores peuvent être pondérés pour
accorder plus de poids/d'importance à
certains mots.
CONTAINS (product_descrip,'whool MINUS polyester' )>0
11
12
2
Oracle et interMediaText

Oracle et interMediaText
Si le texte recherché contient des mots qui
sont des mots-clés, ou pour le respect de la
casse,


Recherche de mots physiquement proches
dans le texte
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool NEAR polyester')>0;
Il doit être placé entre accolades
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool {and}
polyester')>0;

Cette requête sélectionne tous les noms de produits dont
la description possède les mots whool et polyester qui
sont "proches" l'un de l'autre.

Le score vaut 100 si les mots sont contigus.
13
14
Oracle et interMediaText

Oracle et interMediaText
Emploi de caractères génériques


SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'$poly')>0;
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'polyest%')>0;

Recherche de mots qui partagent la même racine
Une partie du mot recherché peut être omise et
remplacée par un caractère générique (qui peut
prendre n'importe quelle valeur).

Le caractère % peut être remplacé par au plus 2
caractères, et le caractère souligné (_) correspond au
plus à un caractère.
Le symbole $ indique que les mots recherchés
doivent avoir comme racine le mot 'poly', il peut y
avoir des préfixes ou des suffixes quelconques.
15
16
Oracle et interMediaText

Oracle et interMediaText
Recherche par rapprochement orthographique


Recherche de mots dont l'orthographe est similaire,
qui n'ont pas forcément la même racine.


Inversion de caractères
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'?whool')>0;

Recherche par rapprochement de sonorité


Le symbole ? permet de demander cette
recherche sur le mot.
17
Correspondance approximative fondée sur la
sonorité des mots
Même logique de rapprochement que la
fonction SOUNDEX de SQL
Oracle évalue les valeurs SOUNDEX des
termes de l'index de texte et recherche tous
les mots dont la valeur de SOUNDEX est
identique.
18
3
Oracle et interMediaText

Oracle et interMediaText
Par exemple, la requête

Combinaison de méthodes de recherche
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'!safety')>0;

SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,'whool AND
$poly')>0;
Retrouverait des mots de sonorités proches


comme 'safely'
Recherche les noms de produit dont la
description contient 'whool' et des mots
dont la racine 'poly'.
19
20
Oracle et interMediaText

Oracle et interMediaText
Les recherches dans la partie CONTAINS
peuvent être imbriquées
SELECT product_Name
FROM product
WHERE CONTAINS (product_descrip,
'$poly AND (!safety MINUS safety)')>0;




Recherche sur le radical 'poly' les mots
similaires par sonorité à 'safety' sans
compter 'safety'.
En conclusion,
InterMediaText founit un ensemble riche
de fonctionnalités pour faire des
recherches sur des textes (longs).
C'est un bon outil pour interroger des
méta-données textuelles qui décrivent des
médias (image, video, audio).
21
22
Thesaurus Oracle
Définition

ORACLE Thesaurus

23
Le thésaurus est un vocabulaire, contrôlé et
dynamique, de termes ayant entre eux des
relations sémantiques et génériques et qui
s'applique à un domaine particulier de la
connaissance (Définition de l'ISO).
De la pertinence du thésaurus et de son
adéquation au domaine couvert dépend
l'efficacité des recherches .
24
4
Thesaurus Oracle
Relations d’un thesaurus

Thesaurus Oracle
Relations d’un thesaurus
Les relations gérées dans un thesaurus (Oracle)
sont de trois types :




ex : "clavier" est un terme spécifique de "matériel
informatique"


ex : "éducation" et "enseignement".



ex : "enseignement" et "formation professionnelle"


Narrower Term (Generic/Instance/Partitive)
Terme plus spéficique
PT, USE, SEE

Association entre 2 termes voisins mais appartenant
à des domaines différents
Broader Term (Generic/Instance/Partitive)
Terme plus général
NT, NTG, NTI, NTP

Equivalence entre un terme et ses synonymes

BT, BTG, BTI, BTP

Hiérarchique



Preferred Term (Terme préféré)
RT Related Term (Terme relatif)
SYN Synonym
TR, TRSYN Traduction/Traduction Synonym
TT Top Term
25
26
Thesaurus Oracle
Création d’un thésaurus



Un package PL/SQL permet de gérer les
thesaurus
 Création, Insertion, Recherche, Chargement
Création d’un thesaurus

Suppression d’un thesaurus

CTX_THES.DROP_THESAURUS( name IN
VARCHAR2);
CTX_THES.CREATE_THESAURUS (name IN VARCHAR2,
casesens IN BOOLEAN DEFAULT FALSE );



Thesaurus Oracle
Suppression d’un thésaurus
Ex : ctx_thes.drop_thesaurus('tech_thes');
name : nom du thesaurus
casesens : sensible à la casse ou non
Ex : ctx_thes.create_thesaurus('tech_thes', FALSE);
27
28
Thesaurus Oracle
Insertion dans un thésaurus



Thesaurus Oracle
Insertion dans un thésaurus
Le thesaurus comporte des « termes/phrases ».
CTX_THES.CREATE_PHRASE(tname IN VARCHAR2,
phrase IN VARCHAR2, rel IN VARCHAR2 DEFAULT NULL,
relname IN VARCHAR2 DEFAULT NULL);
Les deux derniers paramètres existent pour des raisons
de compatibilité de versions, mais il est préférable
d’utiliser CREATE_RELATION pour créer des relations
entre les termes.

Création d’une relation


rel est la relation choisie : BT*/NT*/RT/SYN ou
langage spécifique



Ex : ctx_thes.create_phrase('tech_thes','os');
ctx_thes.create_phrase('tech_thes','operating system');

29
CTX_THES.CREATE_RELATION(tname in varchar2,
phrase in varchar2, rel in varchar2, relphrase in
varchar2);
ctx_thes.create_relation('thes','dog','BT','animal');
ctx_thes.create_relation('thes1', 'vehicle', 'NT', 'car');
ctx_thes.create_relation('thes1', 'you', 'JAPANESE:',
'kimi');
30
5
Thesaurus Oracle
Insertion dans un thésaurus

Thesaurus Oracle
Recherche dans un thésaurus
Création d’une traduction



CTX_THES.CREATE_TRANSLATION(tname in
varchar2, phrase in varchar2, language in
varchar2, translation in varchar2);



Recherche de termes liés BT*
CTX_THES.BT(phrase IN VARCHAR2, lvl IN NUMBER DEFAULT 1,
tname IN VARCHAR2 DEFAULT 'DEFAULT') RETURN VARCHAR2;
Recherche des termes plus généraux pour le terme « phrase » dans
le thesaurus tname à un niveau de profondeur maximum de lvl.
La méthode retourne la liste des termes sous la forme :

ctx_thes.create_translation('my_thes', 'dog',
'SPANISH', 'PERRO');

{bt1}| {bt2} | {bt3}
Elle peut être utilisée dans une condition CONTAINS … de
IntermediaText pour rechercher sur un terme et ses termes plus
spécifiques.

CONTAINS(attribut, BT(mot, niveau, thesaurus)) >0
31
32
Thesaurus Oracle
Recherche dans un thésaurus

Il existe des méthodes pour toutes les
relations NT*


Thesaurus Oracle
Chargement d’un thésaurus

CTX_THES.NT(phrase IN VARCHAR2, lvl IN NUMBER
DEFAULT 1, tname IN VARCHAR2 DEFAULT
'DEFAULT') RETURN VARCHAR2;
PT, RT, SYN, TR, TRSYN …

Il est possible de charger un thesaurus qui
est décrit dans un fichier par la
commande ctxload.
Il existe deux types thesaurus : les
thesaurus plats et les thesaurus
hiérarchisés.
33

cat

Thesaurus




Thesaurus « plat »







Les termes sont listés
sous forme arborescente
NT tiger tiger
NT Bengal tiger
BT mammal
NT domestic dog
NT wild dog
SYN canine



cat

dog

NT German Shepard
NT Dingo
35

NT3 domestic cat
 NT4 Persian cat
 NT4 Siamese cat
NT3 wild cat
 NT4 tiger
 NT5 Bengal tiger
NT2 dog

wild dog

NT2 cat

Thesaurus « structuré »
NT Persian cat
NT Siamese cat
domestic dog


NT1 mammal

dog



BT animal
wild cat


Thesaurus
animal
domestic cat

Les termes sont listés
avec leurs relations
associées.

SYN feline
NT domestic cat
NT wild cat
BT mammal
mammal


34
NT3 domestic dog
 NT4 German Shepard
NT3 wild dog

NT4 Dingo
SYN feline
SYN canine
36
6
Thesaurus Oracle
Test des termes d’un thésaurus



Thesaurus Oracle
Chargement d’un thésaurus
CTX_THES.HAS_RELATION(phrase in varchar2,
rel in varchar2, tname in varchar2 default
'DEFAULT') returns boolean;


Cette méthode vérifie si un terme « phrase »
possède une relation du type spécifié par « rel »
dans le thesaurus « tname ».

ctxload - user scott/tiger@bd -thes -name
nom_thesaurus -file import.txt
Cette commande doit être exécutée depuis le
système d’exploitation.
Elle peut être incluse dans un programme java

begin result :=
ctx_thes.has_relation('cat','BT,BTG'); … end;
Process proc =
Runtime.getRuntime().exec("ctxload -user
cullot/secret -thes -MonThesaurus
thes_essai –file thesaurus.txt");
37
38
Thesaurus Oracle
Export d’un thésaurus


Thesaurus Oracle
Il est aussi possible d’exporter un
thesaurus dans un fichier par le
commande ctxload

Oracle offre des possibilités pour


ctxload -user cullot/secret@bd -thesdump
-name MonThesaurus -file thesaurus.out
39

Créer, mettre à jour et supprimer des thesausus
Qui sont des descriptions hiérarchisées de termes liés
par des relations sémantiques
Ces thesaurus peuvent permettre d’optimiser les
recherches notamment avec les fonctionnalités
du module intermediaText d’Oracle
40
7