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