• Aucun résultat trouvé

quitte à opérer des optimisations lors de la construction de l’arbre.

8.2 Algorithmes par niveaux

8.2.1 Itérations sur la taille des motifs

Pour construire cet arbre des préfixes communs, de nombreuses approches en fouille de données exploitent la propriété d’anti-monotonie (c.f.5.5.2) afin de procéder par niveaux

[Agrawal et Srikant, 1995,Peiet al., 2004]. En effet, cette propriété stipule qu’aucun motif

P = p1. . . pn ne peut être plus fréquent que p1. . . pn−1 ou p2. . . pn. Ainsi, quelque soit le seuil de fréquence considéré, si un motif P n’est pas fréquent, aucun motif construit par affixation deP ne pourra être fréquent. Il s’ensuit que, pour déterminer l’ensemble des motifs de taillen, nous pouvons n’examiner que ceux dont les sous-séquences de taillen−1

sont fréquents, appelés motifscandidats.

Lesniveaux correspondent donc à un partitionnement des motifs selon leur taille. L’ex-ploration itère sur la taille des motifs : à partir d’un niveaun, tous les motifscandidats de taille n+ 1 sont générés, leurs fréquences sont relevées dans les données puis confrontées au seuil requis afin d’écarter ceux qui s’avèrent ne pas être suffisamment fréquents dans les données. Cette approche nous épargne de représenter et de tester tous les motifs de(Σp), mais il sera alors crucial de pouvoir, à chaque itération, parcourir très rapidement la base de données afin d’y relever les occurrences des motifs pour un niveau donné.

8.2.2 Relever les occurrences dans la base de données

Les travaux de [Wang et Han, 1997] présentent plusieurs techniques afin de rechercher des occurrences de motifs au sein de séquences. Selon une méthode similaire,mineXtract

itère sur les données (chaque énoncé et chaque token en leur sein) et réalise la recherche d’occurrences de motifs. Pour chaque token, une procédure récursive permet fait la corres-pondance, à la position donnée, entre l’arbre des préfixes communs et la portion de l’énoncé démarrant à cette position. Chaque motif pour lequel une occurrence est relevée verra sa fréquence incrémentée. A cet effet, nous implémentons une structure de donnée pour un tokent en le munissant des attributs suivants :

t.item: un symbole de la donnée enrichie, élément de Σp, – t.marq: indique sit.item est un marqueur, élément de Σm,

– t.alt: pointeur vers la liste chaînée des prochains items de la disjonction exclusive, – t.suiv: pointeur vers la liste chaînée des prochains tokens de l’énoncé,

L’algorithme 1 présente une version simplifiée de la procédure tokenM otif s qui re-lève les occurrences de motifs à une position donnée d’un énoncé, aux marqueurs près. Remarquons que, pour optimiser ces parcours, l’algorithme suppose que certaines données ont préalablement été triées : les généralisations hiérarchiques retournées par la fonction

parents et les alternatives au sein de l’arbre des préfixes communs. De surcroît, il nous faut tenir compte de deux particularités afin que l’anti-monotonie soit respectée :

– Séquences de marqueurs: la généralisationaux marqueurs prèssuppose d’énumérer

8.2. ALGORITHMES PAR NIVEAUX

– Disjonction exclusive: la procédurealtP arentspermet de vérifier qu’il n’y a pas de comptage de doublons au sein d’une disjonction exclusive (lorsque deux items ont une généralisation commune).

Algorithme 1:Recherche des occurrences de motifs dans les données (tokenM otif s)

Données : tokent, nœudn, longueur l, itemsI

sit.alt alors /* ou exclusif */

tokenM otif s(t.alt, n, l, I) fin

sit.marq alors /* généralisation sur marqueurs */

tokenM otif s(t.suiv, n, l, I∪t.item) fin

sit.item6∈I alors

p←parents(t.item)

tant quep et p.item6∈altP arents(t) faire /* généralis. hiérarchique */ tant quen et p.item > n.itemfaire /* recherche du motifs */

n←n.alt

fin

sin et p.item=n.itemalors sil >1 alors

tokenM otif s(t.suiv, n.suiv, l−1,∅) fin sinon fin n.f req=n.f req+ 1 fin p←p.parent fin fin

Cet algorithme est au cœur de mineXtract. Nous en implémentons également une version adaptée à l’extraction de motifs de segments, qui associe à un item de motif autant de tokens que possible dans les données. Dans tous les cas, l’algorithme est précédé d’une procédure de génération des candidats et suivi d’une procédure d’élagage de l’arbre des préfixes. Ainsi, nous sommes en mesure de comptabiliser, par niveaux, les occurrences des motifs dans les données, jusqu’à ce qu’il n’y ait plus de motifs fréquents. Au terme de l’exploration, il est trivial de parcourir l’arbre des préfixes communs afin d’extraire les règles d’annotation informatives selon les critères présentés en section 5.5.4.

8.2.3 Implémentation, exécution et optimisations

Nous implémentonsmineXtract en C++ et le testons sur les corpus dont nous dispo-sons. Pour ce faire, les machines que nous utilisons disposent généralement de plusieurs cœurs cadencés à 2-3GHz (mais l’implémentation n’est pas distribuée) et une mémoire

8.2. ALGORITHMES PAR NIVEAUX

vive de 30-40Go. Le corpus est enrichi selon les traitements morpho-syntaxiques et lexi-caux décrits en7.2.1 et en 7.2.2. L’approche que nous adoptons nous contraint à explorer exhaustivement tous les motifs fréquents (et non seulement les règles d’annotation). Ainsi, au travers des itérations, seul le critère de fréquence est pris en compte pour filtrer les motifs. En fin de processus, la confiance est calculée afin d’extraire les règles fréquentes et confiantes.

L’arbre des préfixes est donc construit au fur et à mesure de l’exploration. Nous pouvons en mesurer la taille à chaque niveau selon le nombre de nœuds correspondants à des motifs candidats générés ou des motifs fréquents retenus. Nous nous apercevons cependant qu’il est possible d’optimiser la structure de l’arbre afin d’en limiter la taille et le temps de parcours [Wang et Han, 2004,Qian et al., 2010,Bonchi et Lucchese, 2005]. Effectivement, un nœud de l’arbre peut stocker plusieurs motifs lorsque ceux-ci ont exactement les mêmes occurrences dans les données. Or, pour deux motifs, nous pouvons affirmer qu’ils ont mêmes occurrences dans les données s’ils sont généralisation l’un de l’autre et qu’ils ont même fréquence. Selon ce principe, deux optimisations se sont avérées simples à implémenter et efficaces :

– Fusion de suffixes: deux nœuds feuilles de l’arbre d’un même parent qui ont même fréquence et sont généralisation l’un de l’autre peuvent être fusionnées.

– Lien de préfixes: deux nœuds de parents distincts qui ont même fréquence et dont les motifs sont généralisation l’un de l’autre auront les mêmes nœuds enfants.

‘C’(1) ‘C’(1) ‘C’(1) ‘B’(1) ‘B/E’(1) ‘B’(1) ‘A’(1) ‘A/D’(2)

(a) Avant optimisations

‘C’(1) ‘B’,‘B/E’(1) ‘B’(1) lien fusion ‘A’(1) ‘A/D’(2) (b) Après optimisations

Figure 8.3 – Optimisations de l’abre des préfixes

La figure 8.3 illustre ces deux techniques sur un exemple minimal. Les nœuds feuilles des motifs‘A B’et‘A B/E’peuvent être fusionnés. De la même manière, les nœuds feuilles des motifs ‘A B’ et ‘A/D B’ peuvent être liés au même nœud enfant ‘C’. Nous réalisons ces opérations après la phase de recherche des occurrences, simultanément à l’élagage des nœuds non fréquents de l’arbre.

Nous mesurons dans la figure 8.4 les gains réalisés en terme de nombre de nœuds candidats et fréquents de l’arbre au cours des itérations. La fusion de suffixes semble efficace, en particulier pour limiter le nombre de nœuds fréquents, c’est à dire les nœuds qui sont à la fois conservés en mémoire et utilisés pour générer des candidats. Les liens préfixes paraissent plus efficaces pour la génération de candidats. Ces deux optimisations se recouvrent (une fusion non réalisée à un niveau donné correspondant à un lien à un niveau ultérieur) et nous voyons que, de concert, nous obtenons une réduction du nombre de nœuds conséquente à

8.2. ALGORITHMES PAR NIVEAUX 2 4 6 8 10 0 1 2 3 ·106 Niveau O=∅ O=F O=L O=F+L

(a) Nœuds candidats sur Ester2, F≥14

2 4 6 8 10 12 14 16 0 2 4 6 8 ·105 Niveau O=∅ O=F O=L O=F+L

(b) Nœuds candidats sur Etape,F ≥83

2 4 6 8 10 0 1 2 3 ·105 Niveau O=∅ O=F O=L O=F+L

(c) Nœuds fréquents sur Ester2,F≥14

2 4 6 8 10 12 14 16 0 1 2 3 ·105 Niveau O=∅ O=F O=L O=F+L

(d) Nœuds fréquents sur Etape,F≥83

Figure 8.4 – Nombre de noeuds par niveaux selon les Optimisations (O) de fusion (F) et