Nuvola apps important.png Attention, suite à une faille de sécurité, les liens vers les serveurs d'exploration sont désactivés.

Discussion Wicri:PhilologieVM2

De Wicri Linguistique

Cette page introduit des éléments d'évaluation de performances techniques autour du Serveur d'exploration sur la philologie.

Rappel des objectifs techniques de LorExplor

Un des objectifs de LorExplor est de mettre au point des protocoles permettant une analyse dans un contexte temporel restreint :

  • 10 minutes à une demi heure pour des actions de sensibilisation, ou pour une réponse à une question ponctuelle.
  • une heure pour un débroussaillage (en travaillant sur des corpus de l'ordre de 2000 à 4000 documents de métadonnées).
  • une demie journée pour un traitement plus approfondi, avec un corpus de l'ordre de 20.000 documents full text.
  • quelques jours pour une itération sur un portail spécialisé (exemple 600.000 documents sur les poissons ou quelques centaines de milliers sur la production scientifique concernant la région Lorraine).

Outils time et wc d'Unix

Pour donner un premier élément d'évaluation, 2 commandes Unix sont utilisées :

  • la commande time donne le temps d'exécution d'une ligne de commande.
  • la commande wc donne la volumétrie du résulat.

Exemple, les 2 pavés qui suivent donnent le nombre de lignes Unix contenant la chaîne « Meyer » ou « meyer » dans deux extractions brutes de 1000 documents fulltext d'ISTEX. Le premier a une forme représentation ECCO, le suivant est essentiellement Springer :

>time grep "[Mm]eyer" CorpusIstexVM2.A.txt/f00000s1000.txt | wc
     657  135322 3695891

real	0m24.181s
user	0m1.193s
sys	0m0.387s
> time grep "[Mm]eyer" CorpusIstexVM2.A.txt/f01000s1000.txt | wc
     487    7980   92136

real	0m0.889s
user	0m0.086s
sys	0m0.047s

La commande time donne 3 nombres :

  • real : le temps d'exécution de la commande (ici il donne plutôt une idée du temps d'accès sur disque)
  • user : le temps UC de traitement
  • sys  : l'overhead système.

la commande Unix wc (Word Count) qui donne 3 nombres :

  • le premier est le nombre de lignes. (ici le nombre de lignes fulltext ou de blocs de métadonnée contenant Meyer)
  • le deuxième est le nombre de mots
  • le troisième donne le nombre de caractères (et donc la volumétrie globale du résultat).

Téléchargements

Éléments d'interprétation des résultats

Chaque pavé correspond à un téléchargement de 1000 documents comportant :

  • métadonnées JSON
  • métadonnées MODS
  • métadonnées XML
  • fulltext TEI

Il sollicite l'API pour un peu plus de 4000 accès.

Chaque pavé contient 2 commandes (IstexGetCorpus, IstexToSxml) préfixées par time. Celle ci donne 3 nombres qui sont ici interprétées comme suit :

  • real : le temps d'exécution de la commande (ici le temps de réponse global de l'API).
  • user : le temps UC de traitement (ici la fusion des 4 composantes du document pour en constituer un seul)
  • sys  : l'overhead système.

La commande IstexToSxml est un programme lex qui supprime les éléments d'indentation pour obtenir un document XML par ligne Unix. Elle est filtrée par la commande Unix wc qui donne 3 nombres :

  • Le nombre de lignes est ici égal au nombre de document. Ici, il permet de vérifier la conformité du téléchargement (sauf pour le dernier lot, un résultat différent de 1000 indique une erreur)
  • le deuxième est le nombre de mots
  • le troisième donne le nombre de caractères (et donc la volumétrie du téléchargement).

Données relatives aux téléchargement des paquets de 1000 documents


> time IstexGetCorpus -q "philolog*" -s1000 -A > CorpusIstexVM2.A.txt/f00000s1000.txt

real	4m50.535s
user	0m19.143s
sys	0m12.846s

> time IstexToSxml < CorpusIstexVM2.A.txt/f00000s1000.txt | wc
    1000 18763567 526622289

real	1m8.456s
user	0m46.187s
sys	0m1.497s

>time IstexGetCorpus -q "philolog*" -s1000 -f1000 -A > CorpusIstexVM2.A.txt/f01000s1000.txt

real	5m6.351s
user	0m2.486s
sys	0m1.312s

>time IstexToSxml < CorpusIstexVM2.A.txt/f01000s1000.txt | wc
    1000 6211386 50904033

real	0m4.658s
user	0m4.616s
sys	0m0.145s

>time IstexGetCorpus -q "philolog*" -s1000 -f2000 -A > CorpusIstexVM2.A.txt/f02000s1000.txt

real	6m12.901s
user	0m3.998s
sys	0m2.308s
>time IstexToSxml < CorpusIstexVM2.A.txt/f02000s1000.txt | wc
    1000 13444200 106586695

real	0m9.363s
user	0m9.571s
sys	0m0.279s

> time IstexGetCorpus -q "philolog*" -s1000 -f3000 -A > CorpusIstexVM2.A.txt/f03000s1000.txt

real	4m10.152s
user	0m3.610s
sys	0m2.067s

> time IstexToSxml < CorpusIstexVM2.A.txt/f03000s1000.txt | wc
    1000 11732252 93620115

real	0m8.634s
user	0m8.552s
sys	0m0.263s


time IstexGetCorpus -q "philolog*" -s1000 -f4000 -A > CorpusIstexVM2.A.txt/f04000s1000.txt

real	7m36.946s
user	0m20.829s
sys	0m13.836s

> time IstexToSxml < CorpusIstexVM2.A.txt/f04000s1000.txt | wc
    1000 23702957 574319916

real	1m6.382s
user	0m51.175s
sys	0m1.679s

 time IstexGetCorpus -q "philolog*" -s1000 -f5000 -A > CorpusIstexVM2.A.txt/f05000s1000.txt

real	6m8.116s
user	0m2.866s
sys	0m1.568s
>time IstexToSxml < CorpusIstexVM2.A.txt/f05000s1000.txt | wc
    1000 6700756 64845125

real	0m6.114s
user	0m5.868s
sys	0m0.196s
> time IstexGetCorpus -q "philolog*" -s1000 -f6000 -A > CorpusIstexVM2.A.txt/f06000s1000.txt

real	11m45.977s
user	0m2.916s
sys	0m1.748s
> time IstexToSxml < CorpusIstexVM2.A.txt/f06000s1000.txt | wc
    1000 7878243 63640120

real	0m5.800s
user	0m5.738s
sys	0m0.167s

> time IstexGetCorpus -q "philolog*" -s1000 -f7000 -A > CorpusIstexVM2.A.txt/f07000s1000.txt

real	8m28.910s
user	0m3.895s
sys	0m2.497s
> time IstexToSxml < CorpusIstexVM2.A.txt/f07000s1000.txt | wc
    1000 12851316 101228623

real	0m8.772s
user	0m9.084s
sys	0m0.244s
> time IstexGetCorpus -q "philolog*" -s1000 -f8000 -A > CorpusIstexVM2.A.txt/f08000s1000.txt

real	7m29.022s
user	0m3.827s
sys	0m2.389s
> time IstexToSxml < CorpusIstexVM2.A.txt/f08000s1000.txt | wc
    1000 12609141 100803101

real	0m8.392s
user	0m8.982s
sys	0m0.241s
> time IstexGetCorpus -q "philolog*" -s1000 -f9000 -A > CorpusIstexVM2.A.txt/f09000s1000.txt

real	12m53.771s
user	0m19.285s
sys	0m14.570s
> time IstexToSxml < CorpusIstexVM2.A.txt/f09000s1000.txt | wc
    1000 20984497 529393015

real	0m46.384s
user	0m46.261s
sys	0m1.356s


> time IstexGetCorpus -q "philolog*" -s1000 -f10000 -A > CorpusIstexVM2.A.txt/f10000s1000.txt

real	6m58.531s
user	0m2.861s
sys	0m1.797s
> time IstexToSxml < CorpusIstexVM2.A.txt/f10000s1000.txt | wc
    1000 6532967 56119332

real	0m5.308s
user	0m5.107s
sys	0m0.162s
> time IstexGetCorpus -q "philolog*" -s1000 -f11000 -A > CorpusIstexVM2.A.txt/f11000s1000.txt

real	7m42.748s
user	0m3.661s
sys	0m2.413s
> time IstexToSxml < CorpusIstexVM2.A.txt/f11000s1000.txt | wc
    1000 10299434 82690392

real	0m7.620s
user	0m7.505s
sys	0m0.226s
> time IstexGetCorpus -q "philolog*" -s1000 -f12000 -A > CorpusIstexVM2.A.txt/f12000s1000.txt

real	6m11.458s
user	0m3.567s
sys	0m2.041s

> time IstexToSxml < CorpusIstexVM2.A.txt/f12000s1000.txt | wc
    1000 11563988 91877427

real	0m8.653s
user	0m8.368s
sys	0m0.246s
> time IstexGetCorpus -q "philolog*" -s1000 -f13000 -A > CorpusIstexVM2.A.txt/f13000s1000.txt

real	6m4.804s
user	0m4.023s
sys	0m2.326s

> time IstexToSxml < CorpusIstexVM2.A.txt/f13000s1000.txt | wc
    1000 13687135 107525948

real	0m9.735s
user	0m9.779s
sys	0m0.294s
> time IstexGetCorpus -q "philolog*" -s1000 -f14000 -A > CorpusIstexVM2.A.txt/f14000s1000.txt

real	7m35.899s
user	0m16.352s
sys	0m10.827s
> time IstexToSxml < CorpusIstexVM2.A.txt/f14000s1000.txt | wc
    1000 17084825 448668163

real	0m45.818s
user	0m39.518s
sys	0m1.240s


> time IstexGetCorpus -q "philolog*" -s1000 -f15000 -A > CorpusIstexVM2.A.txt/f15000s1000.txt

real	6m27.433s
user	0m2.527s
sys	0m1.317s
> time IstexToSxml < CorpusIstexVM2.A.txt/f15000s1000.txt | wc
    1000 6325117 51476649

real	0m5.024s
user	0m4.805s
sys	0m0.154s
> time IstexGetCorpus -q "philolog*" -s1000 -f16000 -A > CorpusIstexVM2.A.txt/f16000s1000.txt

real	6m52.187s
user	0m3.991s
sys	0m2.312s
> time IstexToSxml < CorpusIstexVM2.A.txt/f16000s1000.txt | wc
    1000 13270616 105494830

real	0m9.756s
user	0m9.645s
sys	0m0.298s
> time IstexGetCorpus -q "philolog*" -s1000 -f17000 -A > CorpusIstexVM2.A.txt/f17000s1000.txt

real	6m34.289s
user	0m3.710s
sys	0m2.158s
> time IstexToSxml < CorpusIstexVM2.A.txt/f17000s1000.txt | wc
    1000 11903833 95507625

real	0m9.275s
user	0m8.838s
sys	0m0.272s
> time IstexGetCorpus -q "philolog*" -s1000 -f18000 -A > CorpusIstexVM2.A.txt/f18000s1000.txt

real	10m9.759s
user	0m21.931s
sys	0m15.287s
> time IstexToSxml < CorpusIstexVM2.A.txt/f18000s1000.txt | wc
    1000 23303593 597606111

real	1m5.690s
user	0m52.949s
sys	0m1.768s
> time IstexGetCorpus -q "philolog*" -s1000 -f19000 -A > CorpusIstexVM2.A.txt/f19000s1000.txt

real	6m8.359s
user	0m2.991s
sys	0m1.601s
> time IstexToSxml < CorpusIstexVM2.A.txt/f19000s1000.txt | wc
    1000 7027924 69062935

real	0m6.436s
user	0m6.134s
sys	0m0.195s
time IstexGetCorpus -q "philolog*" -s1000 -f20000 -A > CorpusIstexVM2.A.txt/f20000s1000.txt

real	6m20.692s
user	0m2.963s
sys	0m1.621s
> time IstexToSxml < CorpusIstexVM2.A.txt/f20000s1000.txt | wc
    1000 8693080 69062224

real	0m6.120s
user	0m6.340s
sys	0m0.185s
> time IstexGetCorpus -q "philolog*" -s1000 -f21000 -A > CorpusIstexVM2.A.txt/f21000s1000.txt
real	6m16.812s
user	0m3.656s
sys	0m2.135s
> time IstexToSxml < CorpusIstexVM2.A.txt/f21000s1000.txt | wc
    1000 12117025 95451178

real	0m8.530s
user	0m8.943s
sys	0m0.260s
> time IstexGetCorpus -q "philolog*" -s1000 -f22000 -A > CorpusIstexVM2.A.txt/f22000s1000.txt

real	6m1.809s
user	0m3.769s
sys	0m2.245s
> time IstexToSxml < CorpusIstexVM2.A.txt/f22000s1000.txt | wc
    1000 12417515 99073925

real	0m8.209s
user	0m8.782s
sys	0m0.242s
> time IstexGetCorpus -q "philolog*" -s1000 -f23000 -A > CorpusIstexVM2.A.txt/f23000s1000.txt

real	3m5.189s
user	0m1.931s
sys	0m1.101s
> time IstexToSxml < CorpusIstexVM2.A.txt/f23000s1000.txt | wc
     527 6280855 49791879

real	0m4.146s
user	0m4.442s
sys	0m0.127s

Variations sur un échantillon

Trois lancements en parallèle
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	8m10.274s
user	0m23.924s
sys	0m12.627s

> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	7m1.237s
user	0m23.739s
sys	0m12.196s

> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	6m52.653s
user	0m23.877s
sys	0m12.248s

Trois lancements en série
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	8m10.274s
user	0m23.924s
sys	0m12.627s
>  time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	4m54.654s
user	0m23.007s
sys	0m11.173s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	5m4.191s
user	0m23.086s
sys	0m11.295s
> time IstexGetCorpus -q "philolog*" -s1000 -A | wc
 12988541 31505241 659267656

real	17m13.670s
user	0m22.910s
sys	0m10.723s

Traitements sur corpus

Cette partie donne des éléments d'appréciations sur les traitements proprement dits, une fois le corpus téléchargé.

Reformatage initial

time HfdCat $EXPLOR_AREA/Import/IstexRepository.hfd   \
>     | IstexCleanFullText                         \
>     | SgmlFast -c1                               \
>     | IstexModsToTei                             \
>     | TeiPutRefToIdno -t wicri:Area/Istex/Corpus \
>     | HfdBuild -h $EXPLOR_AREA/Import/IstexMetadata
    
real	8m47.420s
user	7m48.399s
sys	0m21.315s

Un essai sur l'ensemble des métadonnées

Ce premier essai répond à une première question des demandeurs sur la « fraicheur potentielle du corpus » (voir Discussion:Serveur d'exploration sur la philologie).

> time HfdCat PhilologieVM2/Import/IstexMetadata.hfd   \
   | SxmlSelect -g record/TEI/teiHeader/fileDesc/publicationStmt/date/1 -p @g1  -p @1   \
   | sort -u | IndexBuildRec | SxmlSelect -g idx/k/1 -g idx/f/1 -p @g2 -p @g1 | sort -rn

811	2009
783	2007
725	2011
721	2008
  ...
1	1816
1	1808
1	1804

real	0m22.562s
user	0m26.878s
sys	0m0.852s