Liste de liens :
Liste de liens :
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 CreateList :
(sélectionner le fichier CreateListMacro.groovy)
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 :
Le premier cas est plus léger à mettre en oeuvre pour une liste (très) courte (pas de fichier à gérer séparément).
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 :
Variable $listeparfichier is empty.
[Mais en l'état actuel du code de la macro ce message n'est pas affiché.] La liste est créée mais est vide. L'erreur ne plante pas CQP.
Attention, on ne peut pas utiliser les expressions régulières à l'intérieur de la liste, comme ceci par exemple :
list_value = "ABR ADV DET.* INT INT KON NUM PRO.* PRP.* PUN SENT SYM"
Ici l'item “DET.*” est utilisé comme devant correspondre à une valeur qui s'écrirait littéralement “DET.*” et ne peut pas attraper les occurrences de DET:ART et DET:POS. Il faut donc renoncer aux troncatures et autres facilités données par les opérateurs, et faire une énumération extensive.
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”.
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 :
On ne peut appliquer aucun opérateur (%c, |, etc.) sur un appel de liste, sauf à convertir la liste en expression régulière avec la fonction RE :
[word = RE($negatif)];
On peut alors utiliser les modifieurs (%c et %d -sans guillemets) et les opérateurs de niveau 2 (combinant des propriétés) mais pas ceux de niveau 1 (opérant sur les valeurs). Exemples :
[word = RE($negatif) %c];
et si l'on a défini les deux listes $categoriesmotsvides1 et $categoriesmotsvides2 on peut écrire :
[frpos!=RE($categoriesmotsvides1) & frpos!=RE($categoriesmotsvides2)]
mais pas
[frpos!="RE($categoriesmotsvides1)|RE($categoriesmotsvides2)"]