Oracle Text et Data Mining (Partie 1)
Vous le savez, Oracle Data Mining est un de mes sujets de prédilection ! C'est notamment parce que le type d'informations qu'on arrive à extraire des données à partir des algorithmes spécialisés sont d'un intérêt extrême... Le décisionnel n'a alors plus rien à voir avec les explorations, même adhoc des données réalisées par les utilisateurs.
Dans cet article en 2 parties, vous allez découvrir comment l'algorithme de clustering d'ODM appliqué à des données non structurées arrive à faire des miracles. Une fois n'est pas coutume, j'ai décider de travailler sur des vraies données cette fois pour vous montrer, sans tricher, l'intérêt du décisionnel. Je vais donc vous montrer comment utiliser ODM avec des documents non structurés et, pour cela, je vais utiliser le contenu de ce blog. Les 2 parties consistent donc à :
- Extraire les données de ce blog depuis Internet et les préparer (a.k.a les charger dans une base 11.2)
- Ensuite, appliquer l'algorithme de clustering (Oracle Data Mining) et s'étonner.
Etape 1: descendre tous les articles du blogPour commencer, j'ai téléchargé JSpider que j'ai installé et exécuté à l'aide de la commande :
./jspider.sh http://www.arkzoyd.com/ downloadAprès quelque minutes, le résultat ne se fait pas attendre, la phase 1 de mon expérience est réussie :
SPIDERING SUMMARY :Etape 2 : Un outil XPath pour les fichiers HTMLPour aller un peu plus loin, j'ai extrait des données et des métadonnées des articles téléchargés avec JSpider. Pour cela, j'ai utilisé des expressions XPath sur les fichiers HTML. Ces fichiers n'étant pas bien formé (au sens XML), il n'est malheureusement pas impossible d'utiliser les moteurs XPath classiques ! J'ai donc chargé l'extension Perlknown urls ............. : 3994
visited urls ........... : 1338
parsed urls ............ : 718
parse ignored urls ..... : 620
parse error urls ....... : 0
not visited urls ....... : 2656
fetching ignored urls .. : 2575
forbidden urls ......... : 75
fetch error urls ....... : 6
not yet visited urls .. : 0
[Plugin] Spidering Stopped
INFO [core.Spider] Spidering done!
INFO [core.Spider] Elapsed time : 1414432
HTML::TreeBuilder::XPath sur mon laptop Ubuntu :sudo apt-get install libhtml-treebuilder-xpath-perlJ'ai ensuite créé le programme
xpath4html qui permet d'utiliser des syntaxes XPATH avec des fichiers HTML et dont vous découvrez le code ci-dessous :cat > /usr/local/bin/xpath4html <#!/usr/bin/perl
use strict;
use HTML::TreeBuilder::XPath;
if (\$#ARGV != 1) {
print "usage: xpath4html xpath_expression filename\n";
exit 1;
}
my \$xpath = \$ARGV[0];
my \$filename = \$ARGV[1];
my \$tree= HTML::TreeBuilder::XPath->new;
\$tree->parse_file(\$filename);
my @result=\$tree->findvalues(\$xpath);
foreach (@result) {
print \$_ . "\n";
}
EOF
chmod 755 /usr/local/bin/xpath4html
Quelques notes intéressantes même si, après réflexion, je n'ai pas utilisé ces outils cette fois-ci :
- Le package Ubuntu/Perl
libxml-xpath-perlcontient une commandexpathpour utiliser avec des fichiers XML; la base de données contient quant à elle une syntaxe xquery complète.- Le package
tidypermet de nettoyer les fichiers HTML et les rendre plus conformes aux différents outils de manipulation. Inutile mais fun- La commande
perl -i -pe 'BEGIN{undef $/;} s/
