diff --git a/01-alignement/README.md b/01-alignement/README.md index adfc5e9..f593890 100644 --- a/01-alignement/README.md +++ b/01-alignement/README.md @@ -20,7 +20,7 @@ - Text::Unidecode - URI::Encode -Il peut aussi être nécessaire d’avoir le programme `IhfdCat` pour accéder aux notices **Inist** i eles sont dans un fichier **HFD** (voir [divers](../../../tree/master/divers)). +Il peut aussi être nécessaire d’avoir le programme `IhfdCat` pour accéder aux notices **Inist** si elles sont dans un fichier **HFD** (voir [divers](../../../tree/master/divers)). ### Usage @@ -136,7 +136,7 @@ => 68 ``` -On peut ensuite trouver d’autres requêtes commençant par `ALT`, `ETC` ou `RAC`. Ces requêtes complémentaires servent soit à tester une autre stratégie de recherche (`RAC`), soit à essayer différentes valeurs pour la pagination (`ETC`) ou soit à rechercher un groupe de documents indexés dans une seule notice Inist (`ALT`). Les requêtes de type `ETC` et `RAC` sont suivies d’une ligne indiquant le nombre de réponse renvoyées par l¹API. +On peut ensuite trouver d’autres requêtes commençant par `ALT`, `ETC` ou `RAC`. Ces requêtes complémentaires servent soit à tester une autre stratégie de recherche (`RAC`), soit à essayer différentes valeurs pour la pagination (`ETC`) ou soit à rechercher un groupe de documents indexés dans une seule notice Inist (`ALT`). Les requêtes de type `ETC` et `RAC` sont suivies d’une ligne indiquant le nombre de réponses renvoyées par l¹API. Dans le cas le plus général, on a ensuite le résultat sur une ligne avec 22 champs, pas toujjours remplis, séparés par des tabulations. On a respectivement : - une note exprimée à l’aide d’astérisques (1 étoile) et de signes plus (½ étoile), de `*****` à `0` @@ -176,7 +176,7 @@ On peut aussi avoir des messages, pas forcément d’erreur, après la requête. Ils sont précédés d’une flèche, ont un texte en majuscule et se terminent par un point d’exclamation, comme `=> CORRECTION MAC !`. Ils indiquent un traitement particulier et ont servi à perfectionner le programme. -Les véritables erreurs sont indiquées comme telles. Ont a 3 types d’erreur : +Les véritables erreurs sont indiquées comme telles. On a 3 types d’erreur : - requête incorrecte `=> ERREUR 400 "400 Bad Request" !` - problème de connexion au serveur `=> ERREUR 500 "500 Internal Server Error" !` @@ -202,7 +202,7 @@ - l’identifiant pérenne ARK - l’identifiant DOI -Ces document sont présentés normalement dans l’ordre de la pagination, comme dans cet exemple article/commentaires/réponses. +Ces documents sont présentés normalement dans l’ordre de la pagination, comme dans cet exemple article/commentaires/réponses. ```txt ~~> 2 10 I. P. Stolerman|M. J. Jarvis The scientific case that nicotine is addictive 5A8E718F07659D84B0480F8D78D661F0E17ECAC6 ark:/67375/1BB-TFLHTXVC-4 10.1007/BF02245088 @@ -215,7 +215,7 @@ ##### Exceptions -Dans deux cas, on n’a pas de requête, mais seulement un résultat nul : pour les monographies et pour les articles dont la revue n’est pas dans la base Istex. Dans le premier cas, la note est un *underscore* `_`, le score est un tiret `-` et le niveau bibliographique est `M`. Dans le deuxième cas, on a le même résultat que lorsque l’API n’a trouvé aucun document, mais sans la requête. En fait, au premier article d’une revue, on teste la présence de cette revue dans la base. Si la réponse est nulle, tous les autres articles de la même revue ne font l’objet d’aucune recherche inutile. +Dans deux cas, on n’a pas de requête, mais seulement un résultat nul : pour les monographies et pour les articles dont la revue n’est pas dans la base Istex. Dans le premier cas, la note est un *underscore* `_`, le score est un tiret `-` et le niveau bibliographique est `M`. Dans le deuxième cas, on a le même résultat que lorsque l’API n’a trouvé aucun document, mais sans la requête. En fait, au premier article d’une revue, on teste la présence de cette revue dans la base. Si la réponse est négative, tous les autres articles de la même revue ne font pas l’objet d’une recherche qui serait inutile. #### 3 - Erreur standard diff --git a/02-correction/README.md b/02-correction/README.md index 35155a5..2feb3a5 100644 --- a/02-correction/README.md +++ b/02-correction/README.md @@ -5,7 +5,7 @@ Le programme `recupErreurs.pl` permet de corriger les erreurs apparues lors de l’alignement des bases bibliographiques Pascal et Francis de l’**Inist** avec la base **Istex** si elles sont dues à des problèmes de connexion à l’API **Istex** ou, à défaut, d’isoler les notices bibliographiques responsables d’une erreur de syntaxe lors de la génération de la requête à l’API. Dans ce dernier cas, le programme permet également après correction de ces notices de modifier le fichier de sortie du programme d’alignement `matchStan2Istex.pl` pour inclure les réponses correctes. -À noter que si ce programme est utilisé à l'Inist, il est recommandé d’éviter de passer par le proxy. Pour cela, il faut supprimer les variables globales le définissant, ce qui se fait avec la commande  : `unset http_proxy https_proxy no_proxy`. Vérifiez également avec la commande `env` si ces mêmes variables n'existent pas en majuscule. Auquel cas, supprimez les avec la commande : `unset HTTP_PROXY HTTPS_PROXY NO_PROXY`. +À noter que si ce programme est utilisé à l'Inist, il est recommandé d’éviter de passer par le proxy. Pour cela, il faut supprimer les variables globales le définissant, ce qui se fait avec la commande : `unset http_proxy https_proxy no_proxy`. Vérifiez également avec la commande `env` si ces mêmes variables n'existent pas en majuscule. Auquel cas, supprimez les avec la commande : `unset HTTP_PROXY HTTPS_PROXY NO_PROXY`. ### Usage @@ -41,31 +41,41 @@ #### 1 - Détection des erreurs Pour voir si votre fichier de résultats a des erreurs, un simple `grep` suffit. Pour le fichier `P95_out.txt` contenant les résultats bruts de Pascal 1995, la commande suivante permet de compter le nombre d’erreurs par type : + ```bash grep ' => ERREUR ' P95_out.txt | sort | uniq -c ``` + Si votre fichier est compressé avec `gzip`, cette commande devient : + ```bash gzip -cd P95_out.txt.gz | grep ' => ERREUR ' | sort | uniq -c ``` -Évidemment, s’il n’y a pas d’erreur, on s’arrête là. Autrement, on fait un premier passage avec `recupErreurs.pl` + +Évidemment, s’il n’y a pas d’erreur, on s’arrête là. Autrement, on fait un premier passage avec `recupErreurs.pl`. + #### 2 - Premier passage Il consiste à traiter les mêmes notices Pascal ou Francis en indiquant dans quel fichier stocker les notices qui n'ont pas pu être corrigées. Si vous êtes parti du HFD des notices Pascal 1995 `Pascal.strd95.bib` et si vous compressez vos fichiers de résultats, la commande est : + ```bash recupErreurs.pl -h Pascal.strd95.bib -a P95_out.txt.gz -r rejetP95.txt | gzip -c9 > P95_out2.txt.gz ``` -Vous pouvez également créer un fichier de “log” avec l’option `-l` et vous devez donnez le nom, voire le chemin, du programme `matchStan2Istex.pl` si vous n’utilisez pas celui par défaut ou s’il n’est pas dans un répertoire déclaré dans la variable `PATH`. + +Vous pouvez également créer un fichier de “log” avec l’option `-l` et vous devez donner le nom, voire le chemin, du programme `matchStan2Istex.pl` si vous n’utilisez pas celui par défaut ou s’il n’est pas dans un répertoire déclaré dans la variable `PATH`. Si le fichier `rejetP95.txt` obtenu est vide, alors, la correction est terminée. Sinon, il faudra corriger les notices contenues dans ce fichier avant de passer à l’étape suivante. + #### 3 - Deuxième passage La syntaxe de la commande est fondamentalement la même que pour le premier passage. Simplement, on substitue le nouveau fichier de résultats à l’ancien : + ```bash recupErreurs.pl -h Pascal.strd95.bib -a P95_out2.txt.gz -r rejetP95.txt | gzip -c9 > P95_out3.txt.gz ``` + Normalement, là, votre fichier de résultats est correct. En fait, on ne devrait plus avoir besoin de ce deuxième passage, comme il est dit plus bas. @@ -105,7 +115,7 @@ ```sgml AVIL#A (J. G. A.) ``` -Pour rappel, les notices ne sont pas en XML, mais en SGML et utilise des entités caractères pour les caractères accentués et les symboles. L’entité caractère `#` correspond au caractère dièse `#`. La partie de la requête consacrée aux auteur est alors : +Pour rappel, les notices ne sont pas en XML, mais en SGML et utilise des entités caractères pour les caractères accentués et les symboles. L’entité caractère `#` correspond au caractère dièse `#`. La partie de la requête consacrée aux auteurs est alors : ```txt author.name:("PEREZ" OR "AVIL#A" OR "MARTINEZ") @@ -125,7 +135,7 @@ - la requête générée par le programme `matchStan2Istex.pl` mise en commentaire - la notice Inist au format Inist 1994 SGML -La présence de la requête permet de la tester sur un navigateur Internet et, ainsi, trouver l’erreur. La notice pourra ensuite être corrigée (ce qui demande une bonne connaissance du format). +La présence de la requête permet de la tester sur un navigateur Internet et, ainsi, de trouver l’erreur. La notice pourra ensuite être corrigée (ce qui demande une bonne connaissance du format). Après correction, ce même fichier pourra être utilisé pour corriger le résultat de l’alignement. diff --git a/README.md b/README.md index fee3bb4..b9debc7 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,53 @@ alignement-pascal-francis =============== + Programmes d’alignement des notices bibliographiques INIST avec les documents ISTEX + +## Installation + +Il est préférable de copier les différents programmes Perl et le script shell dans un répertoire dont le chemin est indiqué dans la variable globale `$PATH`. Si vous avez un répertoire `bin` dans votre répertoire de connexion, cela se fait avec les commandes : + +```bash +cp */*.pl ~/bin/ +cp divers/IhfdCat ~/bin/ +``` + +Il faut ensuite s’assurer que les différents programmes soient exécutables : + +```bash +cd ~/bin/ +chmod a+xr *.pl IhfdCat +``` + +Le programme `matchStan2Istex.pl` a besoin de modules Perl qui ne sont pas dans la distribution standard. L’installation se fait avec l’utilitaire `CPAN` et nécessite d’avoir les droits d’administrateur sur la machine. Sous Unix/Linux, il faut utiliser la commande : + +```bash +sudo cpan +``` + +Après le prompt de `CPAN`, tapez la commande `install` avec le nom du module. Par exemple, pour le module `HTTP::CookieJar::LWP`, cela donne : + +```bash +install HTTP::CookieJar::LWP +``` + +Après l’installation, on sort de `CPAN` par la commande : + +```bash +quit +``` + +À noter que sous Cygwin, un émulateur Unix sous Windows, l’appel à `CPAN` se fait sans `sudo`. + + +## Alignement + L’alignement des notices bibliographiques Pascal/Francis de l’**Inist** avec les documents de la base **Istex** se fait en plusieurs étapes, à savoir : - l’alignement proprement dit : pour chaque notice bibliographique, on cherche à l’aide de l’API **Istex** le document ayant le plus de similitudes et on calcule un score qui permettra de décider si l’appariement est bon ou pas. - - la correction des erreurs au cours de l’interrogation de l’API, dus soit à un problème de connexion, soit à une erreur de syntaxe dans l’écriture de la requête. + - la correction des erreurs au cours de l’interrogation de l’API, dues soit à un problème de connexion, soit à une erreur de syntaxe dans l’écriture de la requête. - le dédoublonnage : non seulement les bases Pascal et Francis ont des notices en commun, mais il y a également des documents qui ont été indexés plusieurs fois. Après cette étape, seule une notice, avec le meilleur score, est retenue. - la génération des fichiers d’enrichissement au format TEI pour la base **Istex**. @@ -104,7 +145,7 @@ ### Étape 3 -Lorsque l’alignement a été réalisé sur toutes les bases Pascal et Francis, on alors passer à l’étape du dédoublonnage. Pour cela, il faut l'ensemble des résultats, y compris ce qui a été fait bien avant. Le programme de dédoublonnage `weedTei.pl` doit avoir les noms de tous les fichiers. La façon la plus simple de faire cela est de lister l’ensemble de ces fichiers, c’est-à-dire, dans notre exemple, ceux contenus dans le répertoire `etape2` et le répertoire `resultats`, avant d’envoyer le tout sur l’entrée standard de `weedTei.pl` : +Lorsque l’alignement a été réalisé sur toutes les bases Pascal et Francis, on peut alors passer à l’étape du dédoublonnage. Pour cela, il faut l'ensemble des résultats, y compris ce qui a été fait bien avant. Le programme de dédoublonnage `weedTei.pl` doit avoir les noms de tous les fichiers. La façon la plus simple de faire cela est de lister l’ensemble de ces fichiers, c’est-à-dire, dans notre exemple, ceux contenus dans le répertoire `etape2` et le répertoire `resultats`, avant d’envoyer le tout sur l’entrée standard de `weedTei.pl` : ```bash (find resultats -name '[FP]????.txt'; find etape2 -name 'P????.txt'; find etape2 -name 'F????.txt') | weedTei.pl -f - -r etape3 @@ -128,7 +169,7 @@ └── E60DA2B19D7356D5BC7E5612DCBBE9FCAAA9516D_ipf.tei ``` -À la fin, on se retrouve avec 16 répertoires nommés de `0` à `9`et de `A` à `F`, +À la fin, on se retrouve avec 16 répertoires nommés de `0` à `9` et de `A` à `F`. La commande de base, avec le programme `alignment2tei.pl`, est : ```bash @@ -160,7 +201,7 @@ alignment2tei.pl -h ../Pascal/1995/Pascal.strd95.bib -a ../etape3/P1995.txt -d 2020-10-17 -v 2.12.10 -l logP1995.txt -c ~/etc/CC ``` -Lorsque toutes les bases ont passées avec succès les différentes étapes et que le répertoire `étape4` contient l’ensemble des nouveaux fichiers d’enrichissement, il ne reste plus qu’à archiver le tout : +Lorsque toutes les bases ont passé avec succès les différentes étapes et que le répertoire `étape4` contient l’ensemble des nouveaux fichiers d’enrichissement, il ne reste plus qu’à archiver le tout : ```bash zip -r -9 -q enrich.zip [0-9A-F]