INFORMATIQUE 3 Paola Merlo, a.a. 2004-2005 Projet: Attachement du SP avec Decision Forests Attachement automatique du SP au nom ou au verbe Comme nous en avons beaucoup parlé en classes, le problème de l’attachement du SP est important en analyse syntaxique de texte. Dans ce projet, vous développerez un algorithme d’apprentissage, qui est basée sur les arbres de décision. Cet algorithme s’appelle « decision forests » ou « random forests ». Il s’agit de construire plusieurs arbres de décisions pour des données d’entraînement qui ont subi des petites modifications et de combiner leur réponses. Vous devrez d’abord extraire les données du Penn Treebank à l’aide de TGrep2, un outil vous permettant de faire des recherches sur des arbres, ensuite reproduire en Perl l’algorithme présenté, et en évaluer la performance. 1. Page web de ressources pour ce projet Toutes ressources reliées aux projets seront mises à disposition à partir de la page web : http://www.latl.unige.ch/informatique3/projets/resources-summer-project.html 2. Corpus Pour ce projet, vous utiliserez le PennTreebank (PTB). Il vous faut un corpus arboré pour identifier les données dont vous avez besoin sans trop de difficulté. Il serait possible, mais beaucoup plus difficile, de travailler sans un tel corpus. Le PTB contient environ un million de mots pour lesquels l’analyse arborescente a été faite semi-automatiquement et corrigée à la main. 3. Extraction des n-uplets Il est difficile d’extraire les données qui nous intéressent à l’aide de Perl et d’expression régulières, parce que le langage des parenthèses équilibrée n’est pas un langage régulier. Il nous faut donc un système plus puissant. Le logiciel Tgrep2, « Tree-Grep 2 », peut nous être utile ici parce qu’il fait une analyse de l’arbre. Téléchargez et installez ce logiciel (voir lien sur la page du projet), et étudiez le langage de recherche qu’il utilise dans le manuel distribué avec le logiciel. Vous vous en servirez pour extraire les n-uplets < verbe; nom; prép., nom2; Tag-Fonctionnel> pour les cas où le SP est rattaché au nom et de même pour les cas où le SP est rattaché au verbe. Vous pouvez aussi extraire d’autres traits qui vous semblent être pertinent pour la décision de l’attachement. N’oubliez pas de diviser le corpus en une partie pour les données d’entraînement (sections 00–19) et une partie pour le données de test (sections 20–24). 1 Tgrep2 requiert que le corpus soit « préparé ». Nous avons fait cette préparation pour vous— vous trouverez les fichiers PTB00-19.t2c.gz et PTB20-24.t2c.gz sur la page du projet. Quelques options utile à donner à Tgrep2 : -a pour trouver toutes les instance de votre recherche; -i pour qu’il donne un numéro à chacune de ces instances pour une phrase donnée; -C pour qu’il imprime le commentaire associé à chaque phrase—un identificateur permettant de retracer la phrase dans le corpus dans les fichiers t2c que nous vous avons fournis. Il est utile de garder ces renseignements sous forme d’un identificateur au début de chaque n-uplet, de sorte à pouvoir retrouver la phrase d’où vient le n-uplet quand vous en aurez besoin. 4. Attachement du SP Lisez le chapitre 3 de Mitchell Machine Learning qui décrit les arbres de décision et l’introduction de la page web qui décrit les decision forests (http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_home.htm#overview), et implémentez la méthode d’apprentissage par decision forests. Il s’agit d’implémenter trois modules : un module qui implante les arbres de décision, un module qui échantillonne les données d’entraînement comme décrit dans la page web et un module qui combine les résultats des arbres de décisions ainsi construits. Testez le système sur vos données test. Calculez aussi une baseline n’utilisant que la préposition comme trait d’entrée. Présentez l’exactitude de la méthode, ainsi que la précision et le rappel pour l’attachement au verbe et pour l’attachement au nom. 5. Ce qu’il faut savoir pour implementer une decision forest (extrait de la page web http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_home.htm#overview) We assume that the user knows about the construction of single classification trees. Random Forests grows many classification trees. To classify a new object from an input vector, put the input vector down each of the trees in the forest. Each tree gives a classification, and we say the tree "votes" for that class. The forest chooses the classification having the most votes (over all the trees in the forest). Each tree is grown as follows: 1. If the number of cases in the training set is N, sample N cases at random - but with replacement, from the original data. This sample will be the training set for growing the tree. 2. If there are M input variables, a number m<<M is specified such that at each node, m variables are selected at random out of the M and the best split on these m is used to split the node. The value of m is held constant during the forest growing. 2