Wicri:NickelMaghrebV1/Paramètres, filtre Maghreb

De Wicri Terre
Révision datée du 6 juillet 2017 à 21:40 par imported>Jacques Ducloy (1 révision importée)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Pour le Serveur d'exploration sur le nickel au Maghreb, cette page introduit un ensemble d'outils d'extraction de contenus (ExplorAddFullText, ExplorExtractContent, SxmlCumul) qui permettent d'insérer des filtres spécifiques relativement simples à concevoir.

Elle reprend une expérimentation menée sur le Serveur d'exploration sur le cobalt au Maghreb ( Wicri:CobaltMaghrebV1/Paramètres, filtre Maghreb)

En l’occurrence le filtre lex sur le Maghreb devrait être remplacé bientôt par un outil opérant sur des tables.

Le filtre

cat <<... >Import/maghrebFilter.lex
%START K
%START W
%START C
%{
 char *key;
 double w;
 void print (char* text, double param)
 {
      printf ("%s\t%s\t%08.3f\n", key, text, param*w);
 }
%}
%%
<K>\t      BEGIN W;
<K>[^\t]+  {strcpy(key, yytext);}
<W>\t      BEGIN C;
<W>[^\t]+  {w=strtod(yytext, NULL);}
<C>Morocco     print("Maroc", 1.);
<C>Maroc       print(yytext, 1.); 
<C>Rabat       print(yytext, 1.); 
<C>Tunisi[ae]  print("Tunisie", 1.);
<C>Tunis      print("Tunis", 1.);
<C>Atlas       print(yytext, 0.5); 
<C>"Anti-Atlas"       print(yytext, 1.5); 
<C>Algiers       print("Alger", 1.); 
<C>Alger       print("Alger", 1.); 
<C>Oran       print("Oran", 1.); 
<C>Maghreb      print("Maghreb", 2.); 
<C>Bou[\- ]Azzer print("Bou-Azzer", 2.); 
<C>Oued      print(yytext, 2.); 
<C>[Dd]jebel print(yytext, 2.); 
<C>\n          BEGIN K;
<C>.       ;
%%
main()
{
   key=malloc(10);
   BEGIN K;
   yylex();
}
...
lex Import/maghrebFilter.lex
gcc lex.yy.c -ll -o bin/maghrebFilter

Test de mise en œuvre

HfdIndexSelect -h $EXPLOR_AREA/Data/Main/Exploration/Title.i  -Sk "nickel"  \
   | ExplorAddFullText -h Data/Main/Exploration/biblio.hfd -K               \
   | ExplorExtractContent -f kwc                                            \
   | bin/maghrebFilter                                                      \
   | sort                                                                   \
   | SxmlSelect -p @1 -p "@2(@3)"                                           \
   | IndexBuildRec                                                          \
   | SxmlSelect -g idx/f/1 -g idx/k/1 -p @g1 -p @g2                         \
   | sort -rn
Exemple de résultat
7	001306
5	000077
4	000F20
4	000B36
4	000B24
4	000624
3	000D11
3	000960
3	000392
2	001497

Test final

Documents contenant nickel dans le titre

HfdIndexSelect -h $EXPLOR_AREA/Data/Main/Exploration/Title.i  -Sk "nickel"    \
  | ExplorAddFullText -h Data/Main/Exploration/biblio.hfd -K                  \
     | ExplorExtractContent -f kwc                                          \
     | bin/maghrebFilter                     \
    |   SgmlFast -c2                           \
    | sort | SxmlCumul -wd   \
   | SxmlSelect -g i/w/1 -g i/k/1 -p @g1 -p @g2 | sort -rn   \
   | SxmlSelect -p @2 -p @1 | HfdSelect -h $EXPLOR_AREA/Data/Main/Exploration/biblio -i \
  | SxmlSelect -g record/TEI/teiHeader/fileDesc/titleStmt/title/1 \
    -g record/TEI/teiHeader/fileDesc/publicationStmt/idno@type=RBID/1 -p "*[@2] : {{Explor lien
   |wiki=    Wicri/Terre
   |area=    NickelMaghrebV1
   |flux=    Main
   |étape=   Exploration
   |type=    RBID | clé=@g2 | texte=@g1}}"
Résultat

Sur tout le corpus

time HfdCat Data/Main/Exploration/biblio.hfd | SgmlFast -c2                  \
  | ExplorAddFullText -h Data/Main/Exploration/biblio.hfd -K                  \
     | ExplorExtractContent -f kwc                                          \
     | bin/maghrebFilter                     \
    |   SgmlFast -c2                           \
    | sort | SxmlCumul -wd   \
   | SxmlSelect -g i/w/1 -g i/k/1 -p @g1 -p @g2 | sort -rn   \
   | SxmlSelect -p @2 -p @1 | HfdSelect -h $EXPLOR_AREA/Data/Main/Exploration/biblio -i \
   | head -100 \
  | SxmlSelect -g record/TEI/teiHeader/fileDesc/titleStmt/title/1 \
    -g record/TEI/teiHeader/fileDesc/publicationStmt/idno@type=RBID/1 -p "*[@2] : {{Explor lien
   |wiki=    Wicri/Terre
   |area=    NickelMaghrebV1
   |flux=    Main
   |étape=   Exploration
   |type=    RBID | clé=@g2 | texte=@g1}}"
Résultat