next up previous
suivant: Exercice préliminaire monter: Extraction d'information avec des précédent: Exemple d'extraction d'informations avec

Exemple avec une chaîne en UTF-8

Nous allons maintenant adapter notre source opengrm pour pouvoir extraire les nombres d'une page web utilisant le codage UTF-8 (un des formats de sérialisation de l'unicode).

Nous allons sélectionner une page web, la prendre avec wget, appliquer le script converter.py qui nous fournira l'alphabet à utiliser pour notre extraction d'information.

> python converter.py 
Entrez l'url à télécharger: https://www.lemonde.fr
Entrez le nom à donner aux fichiers: le_monde       
alphabet créé
texte compilé
text scindé en lignes compilé

Et voici le fichier extractnbutf8.grm. L'alphabet et la page web sont chargées via la fonction LoadFst. Les chaînes présentes sont suffixées par .utf8 pour spécifier le codage utilisé (par défaut, c'est un codage sur un octet qui est utilisé par opengrm).

export alphabet = LoadFst['sygma_le_monde'];

export chiffre = Optimize["0".utf8|"1".utf8|"2".utf8|"3".utf8|"4".utf8|
       "5".utf8|"6".utf8|"7".utf8|"8".utf8|"9".utf8];

export chiffre_id = Optimize[("0".utf8:"0".utf8)|("1".utf8:"1".utf8)|("2".utf8:"2".utf8)|("3".utf8:"3".utf8)|("4".utf8:"4".utf8)|("5".utf8:"5".utf8)|("6".utf8:"6".utf8)|("7".utf8:"7".utf8)|("8".utf8:"8".utf8)|("9".utf8:"9".utf8)];

export pas_chiffre = alphabet - chiffre;

pre_extract_chiffre = (alphabet : "".utf8)* (pas_chiffre:"".utf8) (chiffre_id+)
		(pas_chiffre:"".utf8)(alphabet : "".utf8)*;

export extract_chiffre = Optimize[pre_extract_chiffre];

export chaine_test_1 = LoadFst['le_monde'];

export composition = Optimize[chaine_test_1 @ extract_chiffre];

export projection = Project[composition,'output'];

export result = Optimize[projection];

Puis on compile tout ça et on extrait les nombres trouvés dans la page.

> thraxmakedep extractnbutf8.grm
> make
> farextract extractnbutf8.far
> fst_printstrings --utf8 --acceptor result
0
00
000
002
007
009
01
0105
011
012
01213
01398
...
99523571
9988
9989
99936
> fst_printstrings --utf8 --acceptor result | wc
   1302    1302    7699

La dernière ligne compte combien il y a de nombres extraits de la page: il y en a 1302 (ce ne sera peut-être pas le même nombre pour vous puisque la une du monde change en permanence).



barthe 2018-01-30