Les listes CQP

Le moteur de recherche CQP utilisé par TXM permet d'équiper les requêtes CQL de listes de valeurs : http://cwb.sourceforge.net/files/CQP_Tutorial/node31.html

Il est possible de faire appel à ces listes dans TXM en utilisant la macro CreateCQPList :

  • cette macro sera prochainement mise à disposition ici : http://sourceforge.net/projects/txm/files/software/TXM%20macros (il y a actuellement un fichier CreateListMacro.groovy qui est une ancienne version de la macro, datant de juin 2014) ; en attendant la version actuelle est diffusée dans l'installeur de TXM 0.7.7 beta.
  • l'installation et l'appel des macros dans TXM est expliquée dans le manuel utilisateur de TXM, dans la section 15.1 Utiliser des macros.

Création d'une liste

On définit une liste en éditant la macro. Cela peut se faire dans TXM : dans la vue macro, cliquer droit sur CreateList et sélectionner “Editer”. Une fois le fichier édité, penser à le sauver (icones disquettes dans la barre d'icones en haut de la fenêtre).

Vous disposez de deux modes de définition de liste :

  • soit en énumérant les différents éléments (séparés par des blancs), cf. cas 1 “explicit list” ;
  • soit en renvoyant à un fichier, qui contient la liste des éléments à considérer, sous la forme d'un élément par ligne, cf. cas 2 “list from file”.
  1. Le premier cas est plus léger à mettre en oeuvre pour une liste (très) courte (pas de fichier à gérer séparément).
  2. Le second cas se prête mieux aux listes longues (pour éviter d'encombrer le code de la macro) et permet de définir des listes dans lesquelles les éléments peuvent inclure des blancs (par exemple, des mots composés ou des locutions, s'ils ont été définis au moment de l'import dans TXM -par exemple, corpus étiqueté par Cordial, ou mots composés délimités par des balises <w>). Si le chemin vers le fichier n'est pas ou plus valable, alors cela génère un message d'erreur au moment où on utilise la liste :
    Error: "F" file does not exists
    avec F le chemin du fichier renseigné.

Attention, si on utilise des expressions régulières à l'intérieur de la liste, comme ceci par exemple :

list_value = "ABR ADV DET.* INT KON NUM PRO.* PRP.* PUN SENT SYM"
alors, pour que ces expressions régulières soient interprétées comme telles, il faudra utiliser l'opérateur “RE()” pour appeler la liste, cf. section ci-après.

Utilisation d'une liste

Les noms de listes sont préfixés par $. Par exemple, si vous avez donné le nom “motsvides” à une liste (list_name = “motsvides”), alors en CQL il faudra appeler la liste en la désignant par ”$motsvides”.

Simple (liste ne contenant pas d'expression régulière)

Si on veut utiliser la liste $negatif créée en exemple dans la macro, alors la requête

[frlemma = $negatif];
lancée sur le corpus Voeux attrapera tous les mots dont les lemmes sont “rien”, “non”, “ne”, “pas”, ou “sans”.

Ou encore, pour la liste $categoriesmotsvides également donnée en exemple dans le code de la macro :

[frpos!=$categoriesmotsvides]
permettrait de rechercher tous les mots sauf ceux dont la catégorie grammaticale est listée dans la stop-list.

Deux remarques importantes :

  • Pour l'appel de la liste on est obligé d'utiliser la syntaxe complète de requête CQL, avec les crochets, même si la liste est utilisée pour la propriété “word”.
  • Telle quelle une liste CQL remplace entièrement une valeur ; elle n'est combinable avec aucun opérateur (%c, |, etc.)
Interprétation et utilisation comme expression régulière

Pour utiliser une liste de valeurs comme une liste d'expressions régulières, on utilise l'opérateur “RE()”. Par exemple, dans la macro, on a défini une liste $regexp_categoriesmotsvides contenant des ”.*” à interpréter comme des troncatures, on l'appellera comme ceci :

[frpos = RE($regexp_categoriesmotsvides)];

Le recours à l'opérateur “RE()” permet aussi d'utiliser les modifieurs (%c et %d -sans guillemets), que la liste contienne ou non explicitement des expressions régulières, par exemple :

[word = RE($negatif)%c]

En revanche, il reste impossible de combiner directement des listes avec d'autres éléments, par des opérateurs de niveau 1 (opérant sur les valeurs). Par exemple, si l'on a défini les deux listes $categoriesmotsvides1 et $categoriesmotsvides2 on ne peut pas écrire :

[frpos!="RE($categoriesmotsvides1)|RE($categoriesmotsvides2)"]
On pourra chercher des formulations équivalentes avec des opérateurs de niveau 2 (combinant les propriétés) :
[frpos!=$categoriesmotsvides1 & frpos!=$categoriesmotsvides2]

public/tutoriel_d_utilisation_des_listes_cql.txt · Dernière modification: 2015/03/26 13:25 par benedicte.pincemin@ens-lyon.fr