29/06/2016

Bible Parser 2015 : v.726

2806161

Les expressions régulières sont assurément fascinantes. J’ai déjà eu l’occasion d’en parler sur une autre page de ce blog, et leur intégration dans Bible Parser se poursuit. Leur seul inconvénient, il faut bien le reconnaître, est leur caractère pour le moins sibyllin. C’est pourquoi la v.726 introduit un outil d’aide à la saisie au sein de Request Builder. Le principe est le suivant : effectuez votre recherche comme d’habitude, puis filtrez-la à l’aide d’une expression régulière que l’outil vous aide à composer. Si vous ne souhaitez pas particulièrement faire une requête, mais simplement lancer directement une recherche par expression régulière, cliquez sur le nouveau bouton ALL, pour retourner tous les versets de la Bible, que l’opérateur REGEXP vous permet de filtrer à loisir.

La particularité de cette intégration, outre la relative facilité à saisir une expression, est la prise en charge de l’Unicode. Vous pouvez donc lancer des recherches en hébreu, grec, latin, et français. Utilisez pour ce faire les versions dites « sans accents ».

Formuler une expression régulière

L’outil ci-dessus illustré permet de saisir des mots, construire des groupes, imposer des conditions. Dès que vous choisissez un caractère ou groupe de caractères, l’outil validant l’ajout se colore en rouge pour vous guider dans la saisie :

2806162

Le principe des expressions régulières est de définir un pattern, à savoir un schéma personnalisable. Par exemple : un espace suivi d’un caractère n’étant pas un chiffre puis d’un w puis d’un ensemble plus ou moins grand de caractères puis un ou deux chiffres, etc. Dans cet exemple, l’espace est symbolisé par le métacaractère \s, un caractère qui n’est pas un chiffre par \D, le w tout simplement par w, un ensemble plus ou moins grand de caractères par la séquence \w+, puis un ou deux chiffres par \d{0,2}. Pour indiquer qu’un caractère en suit un autre, pas de symbole, il suffit de placer le nouveau caractère/groupe à la suite de la séquence. Le pattern peut comprendre des répétitions, des conditions, des exclusions. Pour faciliter la saisie, Bible Parser propose donc une liste des métacaractères qui symbolise une séquence. Par commodité, quelques raccourcis sont également disponibles – et ces deux encarts seront probablement complétés à l’usage.

2806163

Deux raccourcis sont directement intégrés dans l’encart de saisie. Ainsi la saisie royaume WITHIN 2 (qui signifie mot ‘royaume’ suivi au maximum deux mots après de …) est-elle automatiquement traduite en royaume\W+(?:\w+\W+){0,2}. Pour être tout à fait exact, le WITHIN 2 autorise le mot qui suit le 2 à paraître au maximum 3 mots après le premier, car le décompte commence à 0 (ainsi dans royaume de Dieu, le ‘de’ est en position 0 – disons qu’il touche ‘royaume’).

2806164

De même pour l’expression NOT Dieu WITHIN 2 (qui signifie mot qui précède non suivi par Dieu dans les deux mots qui suivent) est-il traduit en (?!\W+(?:\w+\W+){0,2}?Dieu). Vous conviendrez que c’est pratique !

J’indique dans la Documentation (à paraître dans les prochaines semaines) quelques combines et une bibliographie de référence, car si l’outil Formuler une expression régulière sera certainement d’une précieuse aide, il ne prendra son sens que si vous avez un minimum de bases ; à défaut, vous risquez de tourner un peu en rond… alors que les possibilités qui sont offertes sont vertigineuses !!!

Quoi qu’il en soit l’outil fera l’objet de toute mon attention dans les mises à jour à venir, et continuera de faciliter les saisies.

Quelques exemples

Ouvrez Request Builder et collez cette recherche :

  • SELECT * FROM LSG WHERE Passage Like ‘%’ AND REGEXP ‘royaume\W+(?:\w+\W+){0,1}?Dieu.$’

Elle signifie : utiliser la version Louis Segond (SELECT * FROM LSG), retourner tous les versets (Passage Like ‘%’), filtrer par l’expression régulière (AND REGEXP) suivante : ‘royaume\W+(?:\w+\W+){0,1}?Dieu.$’

Quant à l’expression régulière elle-même, elle est assez facile à lire : le mot royaume suivi de tout sauf un caractère alphanumérique et tiret bas, répété un certain nombre de fois (\W+), pour peu que ce mot soit suivi dans les deux mots qui suivent ((?:\w+\W+){0,1}?) du mot ‘Dieu’, et que l’expression figure en fin de phrase (.$).

2806165

Si vous n’aviez pas copié/collé la requête, il aurait fallu procéder ainsi : ouvrir Request Builder, sélectionner le module Louis Segond (LSG) puis clic sur ALL puis REGEX et enfin royaume WITHIN 1 Dieu (sachant que l’outil remplace automatiquement le WITHIN 1 au cours de la saisie), puis Valider l’expression.

  • SELECT * FROM LSG WHERE Passage Like ‘%’ AND Corpus = ‘Évangiles’ AND REGEXP ‘royaume(?!\W+(?:\w+\W+){0,3}?Dieu)’

Dans cette variante de la précédente recherche, vous avez d’abord fait une requête conventionnelle (retourner tous les versets des évangiles = Passage Like ‘%’ AND Corpus = ‘Évangiles’) et vous recherchez ensuite ‘royaume’ à trois mots de ‘Dieu’ (AND REGEXP ‘royaume(?!\W+(?:\w+\W+){0,3}?Dieu)‘). C’est bien dans cet ordre, et non l’inverse, qu’il faut procéder : l’opérateur REGEXP doit toujours terminer votre requête.

  • SELECT * FROM LSG WHERE Passage Like ‘%’ AND REGEXP ‘(fondation|création)\W+(?:\w+\W+){0,1}monde’

2906161

Dans ce cas, les mots ‘fondation’ ou ‘monde’ sont retournés s’ils figurent à proximité immédiate de ‘monde’.

  • SELECT * FROM LSG WHERE Passage Like ‘%’ AND REGEXP ‘[^-]Christ\b’

Si vous recherchez toutes les instances où le mot ‘Christ’ n’entre pas en composition avec un autre mot (comme dans Jésus-Christ), il vous suffit d’exclure le tiret avant le mot ‘Christ’, par l’expression [^-]Christ\b et le tour est joué.

2906162

Vous pouvez aussi exclure ‘-Christ’ s’il figure après ‘Jésus’ par l’expression (?!.-Christ). Et aucune crainte ! L’outil Formuler une expression régulière vous mâche le travail.

2906163 2906164

2906165 2906166

  • SELECT * FROM LSG WHERE Passage Like ‘%’ AND REGEXP ‘[^-]Christ\W+(?:\w+\W+){0,2}Jésus’

On peut aussi pousser le raffinement et se demander s’il existe des versets où le mot ‘Jésus’ suit le mot ‘Christ’ sans que le premier entre en composition.

 2906167

Et c’est bien le cas. On se rend ainsi compte que les expressions régulières permettent d’effectuer des recherches impossibles autrement.

  • SELECT * FROM TM WHERE Passage Like ‘%’ AND REGEXP ‘^(וידבר|ויאמר)\W+(?:\w+\W+){0,1}משה’

On peut aussi chercher à savoir dans quels versets les mots ויאמר ou וידבר sont suivis de משה quand ils se trouvent en début de phrase…

2906168

  • SELECT * FROM LXU WHERE Passage Like ‘%’ AND REGEXP ‘\bαμαρ(?:\w+\b)’

De même pour le grec, il est très facile de retourner tous les versets où figurent un mot commençant par αμαρ avec une fin quelconque.

2906169

Ou encore dans quel verset μορφ suivi d’une fin quelconque est suivi de θεο suivi d’une fin quelconque : SELECT * FROM NAU WHERE Passage Like ‘%’ AND REGEXP ‘μορφ(?:\w+\b)\W+(?:\w+\W+){0,2}θεο(?:\w+\b)’

Vous le voyez, les possibilités sont nombreuses et peuvent donner lieu à des constructions extrêmement complexes.

Ces fonctionnalités nouvelles sont disponibles dans la mise à jour gratuite v.726.