vendredi 18 décembre 2009

Installer et utiliser OpenNLP au sein de UIMA (Version 1.3. sous linux)

OpenNLP est à la fois
  • un regroupement de projets libres liés au traitement automatique des langues (TAL) 
  • et un ensemble d'outils de TAL développés en Java, qui utilisent la bibliothèque d'apprentissage automatique OpenNLP Maxent et qui permettent les traitements suivant : le découpage en phrases, la détection d'entités nommées, la résolution de la coréférence...
Nous parlons ici de l'ensemble d'outils de TAL qui utilisent la bibliothèque Maxent.
En dec 2009, avec la version apache uima java 2.2.2 en incubation, seuls des wrappers pour la version opennlp-1.3.0 sont disponibles malgré le fait que opennlp en soit à la version 1.4.3.
Pour cette version seuls deux modèles de langue sont disponibles : anglais et espagnol. La version 1.4.3 possède en plus des modèles pour l'allemand et le thai. Les sources s'accompagnent de scripts qui montrent comment entrainer le POS tagger.

1. Récupération et installation de OpenNLP
Une documentation expliquant comment compiler, configurer, exécuter, entrainer... est disponible en version HTML dans l'archive docs/README.html ou en ligne). 
Il faut d'une part récupérer les outils (opennlp-tools) et les modèles (opennlp-models). Les modèles doivent restés compressés, ils seront utilisés en l'état.
wget http://prdownloads.sourceforge.net/opennlp/opennlp-tools-1.3.0.tgz?download
wget -rc http://opennlp.sourceforge.net/models-1.3/
find opennlp.sourceforge.net/models-1.3/ -name "index*" -exec rm {} + ;
mv opennlp.sourceforge.net/models-1.3 opennlp-models-1.3.0
zip -r opennlp-models-1.3.0.zip opennlp-models-1.3.0
rm -r opennlp.sourceforge.net
Ensuite il faut compiler les outils (requiert JAVA_HOME, ant est dispo dans lib/). Après avoir migrer les deux archives dans votre répertoire d'applications (ici $APPLI).
tar -xvzf opennlp-tools-1.3.0.tgz
ln -s opennlp-tools-1.3.0 opennlp
cd opennlp
./build.sh
Une bibliothèque java d'outils a été générée dans le répertoire output.
Par la même occasion on désarchive les modèles dans le répertoire de opennlp
export OPENNLP_HOME=$APPLI/opennlp
unzip opennlp-models-1.3.0.zip -d $OPENNLP_HOME
ln -s opennlp-models-1.3.0 $OPENNLP_HOME/models
2. Utilisation en ligne de commande
Il est nécessaire de rajouter cette nouvelle bibliothèque ainsi que d'autres utiles pour faire tourner les outils.
Si ce n'est pas déjà fait rajouter à la fin de votre ~/.bashrc les lignes suivantes (n'oubliez pas ensuite de faire un "source ~/.bashrc" afin de rendre effectif ces changements pour votre terminal courant) .
export OPENNLP_HOME=$APPLI/opennlp
export CLASSPATH=${OPENNLP_HOME}/lib/ant.jar:${OPENNLP_HOME}/lib/jakarta-ant-optional.jar:${OPENNLP_HOME}/lib/jwnl-1.3.3.jar:${OPENNLP_HOME}/lib/maxent-2.4.0.jar:${OPENNLP_HOME}/lib/trove.jar:${OPENNLP_HOME}/output/opennlp-tools-1.3.0.jar:${CLASSPATH}
Chaque outil de la bibliothèque opennlp-tools est décrit par une classe qui contient un "main" qui réalise le traitement correspondant. Certains de ces outils supposent le traitement d'autres pour pouvoir fonctionner. La plupart prennent un argument, le chemin vers le modèle qu'ils exploitent. Le parser requiert un répertoire de modèles et le namefinder une liste de modèles.
Des exemples sont disponibles dans le fichier docs/README.html ou en ligne.
echo "Jules Verne was a French author who helped pioneer the science-fiction genre. He was born in the bustling harbor city of Nantes in Western France in 1828." > /tmp/text ;
java opennlp.tools.lang.english.SentenceDetector \
${OPENNLP_HOME}/models/english/sentdetect/EnglishSD.bin.gz < /tmp/text |
java -Xmx400m opennlp.tools.lang.english.NameFinder \
${OPENNLP_HOME}/models/english/namefind/*.bin.gz
3. Utilisation au sein d'Apache UIMA
(dernière section en cours d'écriture)
Les wrappers sont disponibles dans le répertoire UIMA_HOME/examples/oppennlp_wrappers/
Dans Eclipse, il s'agit de donner accès aux descripteurs de ces wrappers et de déclarer les bibliothèques requises pour les exécuter
  1. Déclarer en répertoire source le répertoire oppennlp_wrappers/src en cliquant bouton droit et Build Path > Use As Source Folder
  2. Cliquer sur le projet examples avec le bouton droit puis Properties > Java Build Path > Add Variables > OPENNLP_HOME > Extend > et ajouter les bibliothèques

Aucun commentaire:

Enregistrer un commentaire