Algorithmes d’apprentissage
Rendre en compte des indices locaux
Dans les années 90, d’autres approches ont émergé suite à la disponibilité d’importants volumes de données pour des problématiques identifiées. Or, pour des besoins applicatifs ou d’évaluation, certains jeux de données ont été qualifiés manuellement ou semiautomatiquement. Pour une tâche spécifique, cette qualification peut relever d’une simple classification binaire (détection : le phénomène est-il observé dans les données) jusqu’à un travail plus approfondi (reconnaissance ou résolution) comme par exemple une structuration en profondeur (format XML, enregistrements d’une base de données) ou la découverte de relations entre documents (liens, pointeurs entre documents ou vers un référentiel).
Bien entendu, les tâches pour lesquelles les systèmes sont capables de réaliser des traitements automatiquement sans que le risque d’erreur soit jugé trop important (calculs, envoi de courriels, déclenchement d’opérations comptables, enregistrement / manipulation / diffusion de contenus multimédias, correction orthographique) ont été outillées par l’implémentation directe des procédés sous forme d’automates. Cependant, pour de nombreuses autres tâches, l’intuition conduisait à penser qu’elles pouvaient être résolues automatiquement, à l’aide de modèles plus abstraits, plus complexes, nécessitant une implémentation et un paramétrage.
Ainsi, disposant pour certaines tâches de nombreux exemples des données entrées dans leur forme brute (numérisée) et des données attendues en sortie (qualifiées), il devient possible d’examiner systématiquement les correspondances d’une représentation vers l’autre. Dans ce contexte, concevoir le système peut se focaliser sur l’élaboration d’un modèle paramétrable qui vise à transformer la première représentation en la seconde (quelles données en entrée sont potentiellement pertinentes, quelles règles de transformation sont à disposition, comment tenir compte des erreurs pour ajuster les paramètres, etc.).
Une procédure automatique et itérative, dite d’apprentissage automatique [Mitchell, 1997], sera alors chargée d’ajuster les paramètres disponibles, cette procédure étant guidée à chaque itération par les erreurs que commet le système sur les jeux de données disponibles. Dans notre cas, la représentation source est le texte brut (sans entités nommées), la représentation cible contient les annotations en entités nommées (c.f. 2.2).
Mais les algorithmes d’apprentissage existants ont été majoritairement tournés vers des tâches de classification (binaire ou multi-valuées) : détection de pourriels, transcription d’images (glyphes) en textes (symboles d’un alphabet), répartition de documents au sein de thématiques, etc. Dans ce cadre, l’apprentissage automatique se rapproche plutôt d’un étiquetage (attribution d’une étiquette à un élément) que d’une annotation (délimitation d’une expression). Prenons pour exemple l’énoncé suivant, annoté en entités nommées : ‘En 1969 Georges Pompidou dirige la France ’ En première approche, le texte doit être converti afin que chaque unité atomique (token) reçoive une classe (type d’entité nommée). Pour cela, et afin de pouvoir déterminer les frontières (même lorsque deux entités de même type sont contiguës), le format BIO s’est imposé.
Au premier token d’une entité de type t sera affectée la classe ‘B-t’ (Begin). Si l’entité contient plusieurs tokens, les tokens suivants seront classifiés ‘I-t’ (Inside). Enfin, les mots qui ne sont partie d’aucune entité recevront la classe ‘O’ (Outside). La figure 3.2 illustre ceci pour notre exemple. Cette représentation par classes associées aux mots permet d’utiliser des modèles qui estiment la probabilité des classes pour les tokens du texte. Pour ce faire, des statistiques peuvent être recueillies sur les données exemples. En première approximation, nous pouvons En O 1969 B-date Georges B-pers Pompidou I-pers dirige O la O France B-org Figure 3.2 – Représentation BIO d’une annotation simplement affecter à chaque token la classe qui lui est majoritaire (la plus fréquente) dans le corpus d’apprentissage.
Pour ceci, nous considérons les données d’apprentissage comme un ensemble de paires Ex = {(ti , ci)} : les tokens et les classes qui leur sont associées. Pour annoter un token t, le système sélectionne la classe c qui maximise la fréquence |{(ti , ci) ∈ Ex, ti = t, ci = c}|. Immédiatement, nous voyons que ceci se heurte à deux difficultés majeures : – le token peut ne pas être présent dans le corpus d’apprentissage (notamment pour les noms propres, catégorie ouverte), – les mots ambigus (‘Washington’ peut-être une personne, un lieu ou une organisation) présenteront systématiquement un taux d’erreur directement lié à leur degré d’ambiguïté.