Newer
Older
alignement-pascal-francis / alignement / README.md
@besagni besagni on 9 Nov 2021 13 KB Mise à jour du fichier README.md

Alignement Pascal-Francis / Istex

Programme d’alignement des notices bibliographiques Inist avec les documents Istex

Le programme matchStan2Istex.pl permet d’aligner les bases bibliographiques Pascal et Francis de l’Inist avec la base Istex, c’est-à-dire retrouver dans la base Istex les documents correspondants aux notices bibliographiques des base Pascal ou Francis.

À 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.

Prérequis

Le programme matchStan2Istex.pl fonctionne sous Unix/Linux ainsi qu’avec Cygwin sous Windows. Il utilise plusieurs modules qui ne sont pas tous dans la distribution standard de Perl. Les modules qu’on peut être amené à installer sont :

  • HTML::Entities
  • HTTP::CookieJar::LWP
  • JSON
  • LWP::userAgent
  • Number::Convert::Roman
  • 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).

Usage

    matchStan2Istex.pl -f (fichier|-) [ -d ] [ -v nombre ] [ -r id ]
                       [ -n notices ] [ -c corpus[,corpus]* ]*
    matchStan2Istex.pl -h fichier_HFD [ -d ] [ -v nombre ] [ -r id ]
                       [ -n notices ] [ -c corpus[,corpus]* ]*
    matchStan2Istex.pl -i

Options

    -c  indique le nom du ou des corpus de la base Istex à interroger (on peut soit répéter
        cette option, soit mettre tous les noms de corpus séparés par des virgules, mais sans
        espace)
    -d  active le mode “débogage”
    -f  indique le nom du fichier d’entrée (qui peut être un fichier compressé avec “gzip” ou
        “bzip2”). Pour utiliser l’entrée standard, mettre un tiret “-”
        comme argument
    -h  indique le nom du fichier HFD servant d’entrée au programme
    -i  affiche cette aide.
    -n  indique le nom du fichier contenant les notices Pascal ou Francis modifiées parce
        que les notices originales provoquaient une erreur de syntaxe dans la requête à l’API
        ISTEX (N.B. : l’absence du fichier indiqué n’entraîne pas l’arrêt du programme)
    -r  indique le numéro de la dernière notice Pascal ou Francis traitée précédemment, pour
        permettre la reprise de l’alignement si celui-ci a été prématurément arrêté
    -v  permet de suivre la progression du traitement en affichant sur la sortie erreur l’heure
        de début, l’heure de fin et l’heure chaque fois qu’un lot de notices, correspondant au
        nombre de notices donné en argument, a été traité

Formats d’entrée et de sortie

1 - Notices Inist

Les notices bibliographiques des bases Pascal et Francis sont des documents balisés en SGML (norme ISO 8879:1986). Chaque notice est sur une seule ligne et à chaque balise ouvrante correspond une balise fermante. En dehors des lettres majuscules et minuscules non-accentuées, des chiffres et des signes de ponctuation de base, les caractères sont écrits sous forme d’entité caractère (par exemple, é pour le caractère é). À l’inverse de ce qu’on peut trouver dans XML (qui est un sous-ensemble de SGML), les valeurs d’attribut ne sont pas entre quotes, simples ou doubles et il n'y a pas de balise vide.

La racine du document est l’élément record et il y a deux niveaux de balise correspondant aux zones et sous-zones du format d’échange de notices bibliographiques de la norme ISO 2709 comme on peut le voir dans l’exemple ci-dessous (indenté par souci de lisibilité). La sémantique des noms de zone, préfixés par f en SGML, des noms de sous-zone, préfixés par s en SGML, et de l’attribut dir est défini dans le document « Format INIST Standard 1994 ».

<record label=044710B00002014830004560>
    <fA01 dir=011000>
        <s0>0138-9130</s0>
    </fA01>
    <fA02 dir=010000>
        <s0>SCNTDX</s0>
    </fA02>
    <fA03 dir=001000>
        <s0>Scientometrics : (Print)</s0>
    </fA03>
    <fA05 dir=000000>
        <s2>72</s2>
    </fA05>
    <fA06 dir=000000>
        <s2>2</s2>
    </fA06>
    <fA08 dir=011ENG>
        <s1>Profiling citation impact : A new methodology</s1>
    </fA08>
    <fA11 dir=011000>
        <s1>ADAMS (Jonathan)</s1>
    </fA11>
    <fA11 dir=021000>
        <s1>GURNEY (Karen)</s1>
    </fA11>
    <fA11 dir=031000>
        <s1>MARSHALL (Stuart)</s1>
    </fA11>
    <fA14 dir=010000>
        <s1>Evidence Ltd</s1>
        <s2>Leeds</s2>
        <s3>GBR</s3>
        <sZ>1 aut.</sZ>
        <sZ>2 aut.</sZ>
        <sZ>3 aut.</sZ>
    </fA14>
    ...
    <fC03 dir=17XFRE>
        <s0>Aide d&eacute;cision</s0>
        <s5>18</s5>
    </fC03>
    <fC03 dir=17XENG>
        <s0>Decision aid</s0>
        <s5>18</s5>
    </fC03>
    <fC03 dir=17XSPA>
        <s0>Ayuda decisi&oacute;n</s0>
        <s5>18</s5>
    </fC03>
    <fN21 dir=000000>
        <s1>203</s1>
    </fN21>
</record>

2 - Sortie standard

Cas général

Pour chaque notice Inist traitée, et sauf pour 2 exceptions que l’on verra plus loin, on a une première ligne commençant par URI et indiquant la requête envoyée à l’API. La ligne suivante donne le nombre de réponses obtenues.

URI : "https://api.istex.fr/document/?q=(host.title:"Scientometrics" OR host.issn:"0138-9130" OR host.eissn:"0138-9130" 
OR serie.issn:"0138-9130" OR serie.eissn:"0138-9130") AND (publicationDate:2007 OR copyrightDate:2007 OR host.publicationDate:2007 
OR host.copyrightDate:2007 OR serie.publicationDate:2007 OR serie.copyrightDate:2007 OR host.volume:72 OR host.issue:2) AND 
(author.name:("ADAMS" OR "GURNEY" OR "MARSHALL") OR host.pages.first:[325 TO 344] OR host.pages.last:[325 TO 344])
&output=title,author,host,serie,doi,publicationDate,copyrightDate"
     => 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.

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
  • le score, de 5.000 à 0.000, parfois suivi d’un point d’exclamation !
  • le niveau bibliographique : A pour un article et M pour une monographie
  • le numéro Inist de la notice
  • le titre du document
  • le nom de la revue
  • le titre de la monographie
  • ISSN
  • ISBN
  • l’année de publication
  • le n° de volume
  • le n° de fascicule
  • la page de début
  • la page de fin
  • le nom du premier auteur
  • le prénom du premier auteur
  • la liste des auteurs suivants séparés par une barre verticale |
  • l’identifiant Istex
  • l’identifiant pérenne ARK
  • l’identifiant DOI
  • l’identifiant PII
  • l’identifiant PMID

Dans l’exemple suivant, on a rajouté un signe d’exclamation aux champs vides pour permettre de les repérer.

*****    5.000    A    08-0322753    Profiling citation impact : A new methodology    Scientometrics    !    0138-9130    !    
2007    72    2    325    344    ADAMS    Jonathan    GURNEY, Karen|MARSHALL, Stuart    16AA6F7A70CD152792DC04F6D65A673B8B7F2214    
ark:/67375/VQC-DZRDKVN2-2    10.1007/s11192-007-1696-x    !    !

On considère que l'alignement est bon si le score est supérieur ou égal à 3.490. Pour les scores inférieurs à cette valeur, on a parfois un point d’exclamation ! qui indique que les données bibliographiques sur la revue, l’année de publication, la volumaison, la tomaison (si elle existe) et la pagination sont correctes, mais que le reste des données ne correspond pas. Cela peut être dû à des fautes de frappe ou d’OCR dans les noms d’auteur ou dans le titre, ou cela peut être dû à une erreur de bulletinage : le document s'est vu attribuer par exemple la pagination d’un autre article du même fascicule. On trouve de tels décalages aussi bien dans les données Inist que dans celles des éditeurs.

Messages divers

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 :

  • requête incorrecte => ERREUR 400 "400 Bad Request" !
  • problème de connexion au serveur => ERREUR 500 "500 Internal Server Error" !
  • mauvaise conversion de JSON vers Perl => ERREUR CONVERSION JSON -> PERL !

La première est due aux données de la notice Inist. En utilisant les notices corrigées, cela ne devrait plus arriver. Les deux autres sont des problèmes temporaires qu'on peut corriger avec le programme recupErreurs.pl dans le répertoire “correction”.

Notices groupées

Certaines notices Inist concernent non pas un article, mais un groupe d’articles pour différentes raisons :

  • “Pro and con” : en médecine, deux auteurs (ou groupes d’auteurs) discutent d’un sujet, comme une procédure médicale, et un auteur est pour, l’autre est contre.
  • juste à la suite d’un article, on a un commentaire d’un autre auteur, voire la réponse du premier auteur aux commentaires sur son article.
  • plusieurs articles associés, déjà regroupés dans le fascicule et traitant du même sujet.

Les différents articles pouvant être regroupés sont indiqués après le résultat général. Pour chaque article, on a une flèche ~~> suivie de 7 champs séparés par des tabulations. On a respectivement :

  • la première page
  • la dernière page
  • la liste des auteurs séparés par une barre verticale |
  • le titre de l’article
  • l’identifiant Istex
  • 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.

 ~~>    2       10      I. P. Stolerman|M. J. Jarvis    The scientific case that nicotine is addictive  5A8E718F07659D84B0480F8D78D661F0E17ECAC6        ark:/67375/1BB-TFLHTXVC-4       10.1007/BF02245088
 ~~>    11      13      J. E. Henningfield|S. J. Heishman       The addictive role of nicotine in tobacco use   B16BD3EAB82D95F6780752DAEC1ABB1E1FAA27BF        ark:/67375/1BB-3ZB0VPRG-6       10.1007/BF02245089
 ~~>    14      15      S. Shiffman     Comments on nicotine addiction  79BF81FCD57EECD784BC85C823992173162BE5C1        ark:/67375/1BB-QWBZ3DS5-C       10.1007/BF02245090
 ~~>    16      17      J. H. Robinson|W. S. Pritchard  Reply to stolerman and jarvis   70F7FD3CA45D99F42EAD372FF607CAC82376B7EA        ark:/67375/1BB-0KBPPP8C-F       10.1007/BF02245091
 ~~>    18      20      M. E. Jarvik    Commentary      DC536BE3D44EEC8BCA32DCFE79FE23590494CA35        ark:/67375/1BB-JZ3PB2LS-Z       10.1007/BF02245092
 ~~>    21      22      J. H. Jaffe     Commentary on the nicotine IS/IS not addictive debate   5B0620646FBF8A3785C50F3597709ED9B25DA216        ark:/67375/1BB-XFHN05CC-V       10.1007/BF02245093
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.

3 - Erreur standard

En cas d’utilisation de l’option -v, le programme envoie par la sortie “erreur standard” des messages sur le travail en cours. On a :

  • le nom du programme et sa version (sauf dans les anciennes versions du programme)
  • en cas de reprise d’un travail interrompu, le n° de la dernière notice Inist
  • le nom du fichier traité ou la mention entrée standard
  • la date et l’heure de début du traitement
  • la date et l’heure auxquelles on a terminé un lot de notices correspondant à la valeur de l’option -v
  • la date te l’heure de fin de traitement avec rappel du nombre de notices traitées
==> matchStan2Istex.pl, version 14.3.2 (24 Août 2020)
*** Notices traitées : 2008/Pascal.strd08.bib ***
 -> Mardi 29 Septembre 2020 03:27:56 : début
 -> Mardi 29 Septembre 2020 03:29:47 : 10000 notices
 -> Mardi 29 Septembre 2020 03:31:13 : 20000 notices
 -> Mardi 29 Septembre 2020 03:32:59 : 30000 notices
 ...
 -> Mardi 29 Septembre 2020 04:45:50 : 480000 notices
 -> Mardi 29 Septembre 2020 04:47:26 : 490000 notices
 -> Mardi 29 Septembre 2020 04:48:35 : fin = 497745 notices