• Aucun résultat trouvé

3.3 Mise ` a jour de la cat´ egorie de l’utilisateur

4.1.2 Algorithme

Calcul de la similarit´e s´emantique dans le syst`eme

Dans un premier temps, l’expert s´electionne les concepts Co ⊆ C et les propri´et´es Rel ⊆

R de l’ontologie pertinentes pour le calcul des similarit´es. Par exemple, dans le domaine du

cin´ema, l’expert peut s´electionner les concepts Movie et Person et les propri´et´es hasActor et hasDirector et ´ecarter la propri´et´e hasMakeupArtist car l’´equipe des maquilleurs n’est pas pertinente pour ´evaluer la similarit´e entre deux films.

Des paires d’instances des concepts choisis sont ensuite form´ees et deviennent candidates au calcul. Chaque paire est compos´ee d’instances d’un mˆeme concept car il est inutile de calculer la similarit´e entre des instances de concepts diff´erents. Par exemple, dans le domaine du cin´ema, la similarit´e entre un film et une maison de production n’aurait aucun sens.

L’initialisation consiste `a affecter la similarit´e maximum (1) aux paires compos´ees d’ins-tances identiques et 0 aux autres.

sim0(i, j) = 

1 si i = j

0 sinon (4.1)

La similarit´e s´emantiques est ensuite calcul´ee entre deux instances i et j de fa¸con it´erative. Encore une fois, si les deux instances sont identiques, leur similarit´e est ´egale `a 1. Autrement, la similarit´e de i et j est d´efinie par la moyenne des similarit´es des paires (i0, j0) reli´ees `a (i, j).

simk+1(i, j) = ( 1 si i = j P Ei,j simk(i0,j0) |Ei,j| sinon (4.2)

o`u Ei,j = {(i0, j0)|∃r ∈ Rel r(i, i0) ∧ r(j, j0)}

La similarit´e s´emantique est calcul´ee jusqu’`a atteindre un point fixe ou en fixant le nombre

d’it´erations au pr´ealable (le rang K maximum). Contrairement aux mesures classiques, la

pro-pagation de la similarit´e `a un certain rang k permet de prendre en compte la similarit´e au rang

k − 1 des paires d’instances du voisinage de la paire cible. Par cons´equent, chaque nouvelle

it´eration k prend en compte la similarit´e des paires d’instances se trouvant `a une distance1 k de la paire cible. La valeur de la similarit´e devient donc plus pertinente.

Cette mesure pr´esente l’avantage de pouvoir ˆetre calcul´ee hors ligne, ce qui lui permet de ne pas ajouter de temps de calcul au processus de recommandation.

L’algorithme 4.1 d´ecrit le d´eroulement du calcul de la similarit´e s´emantique dans le syst`eme ´

etant donn´es Inst ⊆ I, l’ensemble des instances des concepts s´electionn´es par l’expert, Rel ⊆ R, l’ensemble des propri´et´es s´electionn´ees par l’expert et , un nombre tr`es petit.

Algorithme 4.1 Calcul de la similarit´e s´emantique dans le syst`eme

1: proc´edure SemanticSimilarity(Inst, Rel, ))

2: k ← 0

3: pour tout (i, j) ∈ Inst2 faire

4: si i = j alors 5: simk(i, j) ← 1 6: sinon 7: simk(i, j) ← 0 8: fin si 9: fin pour

10: pointf ixe ← f aux

11: tantque ¬ pointfixe faire

12: pointf ixe ← vrai

13: pour tout (i, j) ∈ Inst2 faire

14: si i = j alors

15: simk+1(i, j) ← 1

16: sinon

17: Ei,j ← {(i0, j0) | ∃r ∈ Rel r(i, i0) ∧ r(j, j0)}

18: simk+1(i, j) ←P

Ei,j

simk(i0, j0) |Ei,j|

19: fin si

20: pointf ixe ← pointf ixe ∧ (simk+1(i, j) − simk(i, j)) ≤ 

21: fin pour

22: k ← k + 1

23: fin tantque

24: fin proc´edure

Exemple 1. Soient les films F1 : Sacr´e Graal et F2 : La vie de Brian, tous deux des Monty

Python. Leur similarit´e initiale est nulle car ce sont des instances diff´erentes.

Au rang 1, la similarit´e augmente car les deux instances sont reli´ees `a 21 instances en commun (2 r´ealisateurs, 6 auteurs, 8 acteurs, 2 langues, mˆeme genre, mˆeme pays). En d’autres termes, elles sont reli´ees `a 21 paires d’instances identiques parmi 112 paires :

sim1(F1, F2) = 21

112 = 0.19

.

Au rang 2, la similarit´e augmente consid´erablement : sim2(F1, F2) = 0.55

car son calcul est bas´e sur les similarit´es calcul´ees au rang 1. De ce fait, 61 paires reli´ees `a F1

et F2 ont une similarit´e entre 0 et 0.73. Par exemple, les deux acteurs Graham Chapman et

Terry Jones ont une similarit´e s´emantique ´egale `a 0.73 au rang 1.

4.1 La mesure de similarit´e s´emantique 67

Atteinte d’un point fixe

La similarit´e entre i et j augmente entre un rang k et un rang k + 1. Cette croissance est

facilement d´emontrable par un raisonnement par r´ecurrence.

D´emonstration. Soit

P (k) : ∀c ∈ C ∀(i, j) ∈ c2 simk+1(i, j) ≥ simk(i, j)

Montrons que la proposition est vraie pour k = 0. Si i = j : P (0) revient `a :

sim1(i, j) = sim0(i, j) = 1

Si i 6= j : P(0) revient `a :

sim0(i, j) = 0

sim1(i, j) = P Ei,jsim1(a, b) |Ei,j|

Nous savons que |Ei,j| est une constante positive et que ∀(a, b) ∈ Ei,j sim0(a, b) ≥ 0 (par Equa. 4.1).

Donc, P Ei,jsim1(a, b)

|Ei,j| ≥ 0 ⇒ sim1(i, j) ≥ 0

Il est clair que la proposition est vraie pour k = 0. Par cons´equent P (0) est vraie. Montrons que si P (k) est vraie, alors P (k + 1) est vraie aussi.

Supposons que P (k). Il faut montrer que P (k + 1) est vraie, soit : simk+2(i, j) ≥ simk+1(i, j)

Si i = j :

simk+2(i, j) = simk+1(i, j) = 1

Si i 6= j :

P (k + 1) ⇒ simk+2(i, j) − simk+1(i, j) ≥ 0 (4.3)

⇒ P Ei,jsimk+1(a, b)

|Ei,j|

P Ei,jsimk(a, b)

|Ei,j| ≥ 0 (4.4)

⇒ P Ei,j(simk+1(a, b) − simk(a, b))

|Ei,j| ≥ 0 (4.5)

´

etant donn´e que |Ei,j| est une constante positive. ´

Etant donn´ee l’hypoth`ese de r´ecurrence, P(k) est vraie, on sait que simk+1(a, b) − simk(a, b) ≥ 0

.

Donc,P Ei,j(simk+1(a, b) − simk(a, b)) ≥ 0, et par cons´equent P (k + 1) est vraie.

On peut donc conclure que P (k) est vraie pour tout entier k.

Puisque la fonction sim admet 1 comme majorant, on peut conclure qu’il s’agit d’une fonction croissante et born´ee, et donc convergente. Autrement dit, le calcul de la similarit´e s´emantique atteint un point fixe.

Ajout de nouvelles donn´ees dans le syst`eme

La mise `a jour du syst`eme par l’introduction de nouvelles donn´ees rend les valeurs de simila-rit´e s´emantique obsol`etes. En effet, l’ajout d’une nouvelle instance ou d’une nouvelle propri´et´e, entre deux instances, influence les valeurs de similarit´e s´emantique du voisinage. De ce fait, nous avons d´efini une proc´edure de mise `a jour desdites valeurs.

L’ajout d’une instance et l’ajout d’une propri´et´e entre instances seront trait´es s´epar´ement. De ce fait, l’ajout d’une instance reli´ee `a d’autres instances existantes par le biais d’une pro-pri´et´e n´ecessite un travail incr´emental qui consiste `a ajouter l’instance puis la relier aux autres instances, les unes apr`es les autres. Ces deux proc´edures sont d´ecrites ci-apr`es.

Ajout d’une instance : On d´efinit l’ajout d’une instance comme ´etant un ajout simple

d’instance n’ayant aucune propri´et´e la reliant aux autres instances. Par cons´equent, ajouter une instance dans l’ontologie implique le calcul de toutes les paires contenant cette instance ainsi que les instances de mˆeme nature. La valeur de la similarit´e s´emantique entre les instances de chaque paire (i, j) n’a pas besoin d’ˆetre calcul´ee, pour tout rang k, est ´egale `a z´ero (un, dans le cas du couple(i, i)) ´etant donn´e qu’il n’existe aucune propri´et´e reliant i aux autres instances.

Relier deux instances existantes par une propri´et´e : Relier une instance a `a une instance

b influence la similarit´e s´emantique de chaque paire `a distance k de (a, b). L’algorithme de mise `

a jour des valeurs de similarit´e s´emantique est d´ecrit ci-dessous.

L’algorithme 4.2 d´ecrit le calcul de la similarit´e s´emantique entre deux instances i et j jusqu’`a un certain rang K (le plus grand rang atteint lors du calcul de la similarit´e s´emantique) ainsi que la mise `a jour des similarit´es des paires en reli´ees `a i et j.

4.1 La mesure de similarit´e s´emantique 69

Algorithme 4.2 Mise `a jour de la similarit´e s´emantique lors de l’ajout de nouvelles donn´ees

1: proc´edure Update sim(i, j, K)

2: pour tout k ∈]0, K] faire

3: Ei,j ← {(i0, j0) | ∃r ∈ Rel r(i, i0) ∧ r(j, j0)}

4: simk+1(i, j) =P Ei,j simk(i0, j0) |Ei,j| 5: si k < K alors 6: propagate(Ei,j, k + 1, {}) 7: fin si 8: fin pour

9: fin proc´edure

10: proc´edure propagate(Ei,j, k, Eok)

11: pour tout (i0, j0) ∈ Ei,j faire

12: si (i0, j0) /∈ Eok alors

13: Eok← Eok∪ {(i0, j0)}

14: Ei0,j0 ← {(i00, j00) | ∃r ∈ Rel r(i0, i00) ∧ r(j0, j00)}

15: simk+1(i0, j0) =P Ei0,j0 simk(i00, j00) |Ei0,j0| 16: propagate(Ei0,j0, k + 1, Eok) 17: fin si 18: fin pour

19: fin proc´edure