Extraction de graphies dans un corpus
De Wicri Manuel
Révision datée du 25 avril 2015 à 11:11 par imported>Jacques Ducloy
Cette page introduit un tutoriel sur l'extraction de graphies dans un corpus significatif.
Nous prendrons pour exemple une analyse d'un corpus extrait d'ISTEX sur la philologie. Celui-ci fait l'objet d'une plate-forme de curation et d'exploration sur Wicri/Linguistique.
Le problème posé est relativement simple quelles sont toutes les graphies contenant la racine « philolog » dans un corpus. Pour pouvoir faire facilement des énumérations, le programme génère des triplets contenant :
- la chaîne reconnue,
- la clé HFD,
- un numéro d'ordre (numMatch).
#include "Buffer.h"
#include "RegExp.h"
#include <stdio.h>
#include <string.h>
int main()
{
RegExp *rePhilo;
Buffer *bufDoc;
Buffer *bufKey;
rePhilo=RegExpCreate("[A-Za-z]*[Pp][Hh][Ii][Ll][Oo][Ll][Oo][Gg][A-Za-z]*");
bufDoc=BufferCreate(1000,1000);
bufKey=NewBuffer();
while (BufferGets(bufDoc))
{
char *posTab;
char *match;
char *beginToParse;
int numMatch;
posTab=strchr(BufferString(bufDoc), '\t');
if (posTab)BufferStrncpy(bufKey, BufferString(bufDoc), posTab-BufferString(bufDoc));
beginToParse=BufferString(bufDoc);
numMatch=0;
match=RegExpExtract(rePhilo, beginToParse);
while (match)
{
numMatch++;
printf("%s", match);
free (match);
if (posTab)
{
printf("\t%s\t%d\n", BufferString(bufKey), numMatch);
}
else putchar('\n');
beginToParse=RegExpLoc2;
match=RegExpExtract(rePhilo, beginToParse);
}
}
exit(EXIT_SUCCESS);
}
Si le source est rangé dans un fichier « findPhilolog », la compilation se fait ainsi :
gcc findPhilolog.c $DILIB_CC -o findPhilolog