Version HTML du script entites-alchemy.pl

Pour télécharger le script : cliquez ici

#!/usr/bin/perl

<<DOC; 
Axel COURT & Marjorie SEIZOU
MAI 2010
 usage : perl entites-alchemy.pl <TexteIN>
 
DOC

use AlchemyAPI;

# Test des paramètres
if ($#ARGV != 0) {
    print "Syntaxe : perl entites-alchemy.pl <TexteIN>\n" ;
    exit(-1);
}

# Ouverture du fichier en lecture
open (TXT, "<:encoding(UTF-8)", $ARGV[0]) or die ("Impossible d'ouvrir le texte IN : $!\n");

my @texte = <TXT>;
close(TXT);

#Création d'un objet AlchemyAPI
my $alchemyObj = new AlchemyAPI();

# Chargement de la clé API (via un fichier txt api_key.txt)
if ($alchemyObj->LoadKey("api_key.txt") eq "error") {
	die "Error loading API key.  Edit api_key.txt and insert your API key.";
}

my $result = '';

# On lance l'API sur 250 ligne à la fois seulement, pour éviter la surcharge !
my $compteur = 0;

while ($compteur < $#texte) {
	my $phrases = join(/ /,@texte[$compteur .. ($compteur+249)]);
	# Décodage des entités nommées
	$result .= $alchemyObj->TextGetRankedNamedEntities($phrases);
	if ($result ne "error") {
		print "Tout s'est bien deroule ! Ouais ! *\\o/*\n";
	}
	$compteur = $compteur+250;
}

%type_entite;
%relevance_entite;
%count_entite;

# Ecriture des résultats
open (OUT, ">:encoding(UTF-8)", "decodage-entites-Alchemy.xml") || die ("Impossible d'écrire le fichier de sortie : $!\n");

print OUT '<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<language>french</language>
<entities>
';
while($result =~ /<entity>[^<]*?<type>([^<]+?)<\/type>[^<]*?<relevance>([^<]+?)<\/relevance>[^<]*?<count>([^<]+?)<\/count>[^<]*?<text>([^<]+?)<\/text>[^<]*?<\/entity>/gs)
{
	$type_entite{$4} = $1;
	$relevance_entite{$4} = $2;
	$count_entite{$4} = $count_entite{$4}+$3;
}

@keys = sort {$count_entite{$b} <=> $count_entite{$a}} keys %count_entite;
foreach $key (@keys) {
	if ($key ne "") {
		print OUT "<entity>\n<type>";
		print OUT "$type_entite{$key}";
		print OUT "</type>\n<relevance>".$relevance_entite{$key}."<\/relevance>\n<count>".$count_entite{$key}."</count>\n<text>".$key."</text>\n</entity>\n";
	}
}

print OUT '</entities>
</results>';

close(OUT);

exit;