Un classificateur de texte qui explique ses décisions

11

Je construis un catégoriseur de texte pour les phrases courtes. En plus de dire à l'utilisateur "la catégorie du texte que vous avez entré est C", je veux pouvoir expliquer pourquoi j'ai pris cette décision, de manière courte et compréhensible. Par exemple, je ne veux pas dire à l'utilisateur "J'ai mis votre phrase dans un réseau neuronal complexe à 3 couches et c'est la réponse qui a obtenu le meilleur score"; Je veux des explications telles que "Votre phrase contient les mots U, V et W, qui sont caractéristiques de cette catégorie, à cause des phrases telles que X, Y et Z qui sont apparues dans les données d'entraînement".

Ma question est: quels algorithmes de classification conviennent le mieux à une telle application?

k-plus-voisins semble être un bon candidat, car je peux dire à l'utilisateur "Votre phrase a la catégorie C car elle est similaire aux phrases X, Y et Z qui ont la même catégorie. Mais ses performances sur les problèmes de catégorisation de texte sont connues de être pauvre. Je cherche un classifie qui équilibre la performance avec la capacité d'explication.

EDIT: Après avoir passé beaucoup de temps à chercher un tel classificateur, j'ai commencé à construire une bibliothèque d'apprentissage automatique appelée limdu , qui permet aux classificateurs d'expliquer leurs décisions. Il est encore en cours de développement, mais il m'a déjà aidé à m'expliquer ainsi qu'à mes collègues pourquoi nos classificateurs échouent si souvent ...

Erel Segal-Halevi
la source
Le but de l'apprentissage automatique est que vous ne vous souciez pas de ce qui se passe sous le capot, vous ne vous souciez que des performances. L'autre approche a échoué, et c'est pourquoi tout le monde utilise aujourd'hui ces approches statistiques opaques - elles sont tellement meilleures.
Yuval Filmus
2
@Yuval Je suis complètement en désaccord avec l'échec des autres approches. Ils ne sont pas optimaux mais ils atteignent toujours l'objectif d'automatiser les tâches de classification bien au-dessus de ce qu'un humain a la capacité ou la patience de faire. Les boîtes noires opaques ne sont pas le seul moyen de faire efficacement l'apprentissage automatique, en particulier dans des situations comme celle-ci où les performances ne sont pas la seule considération. Soyez un peu plus ouvert sur les différents objectifs des tâches d'apprentissage automatique.
Richard D

Réponses:

7

Bien qu'il exécute mal les tâches de classification de texte, si vous voulez une explication claire du raisonnement de classification, un arbre de décision serait votre meilleure option car il fournit des règles claires pour la façon dont une instance est classée. Une trace de l'arborescence fournirait les valeurs déterminantes et en analysant les instances proches du nœud racine, vous pourriez même être en mesure de déterminer quels attributs étaient plus importants dans la classification.

Une autre option serait d'utiliser un classificateur Naive Bayes , qui fonctionne mieux pour les tâches d'exploration de texte et vous donnerait un schéma d'évaluation compréhensible basé sur des probabilités que vous pourriez utiliser pour générer le "pourquoi" que vous recherchez, même en fournissant une indication de quelles valeurs d'attribut étaient plus importantes que d'autres dans la détermination.

Les machines à vecteurs de support , en particulier l'optimisation minimale séquentielle (SMO), semblent bien fonctionner avec ces tâches et fournissent également une indication des valeurs utilisées pour effectuer la classification sous la forme de poids d'attributs et de vecteurs de support, mais je pense que vous pouvez avoir plus de mal expliciter comment ces poids et vecteurs ont influencé la décision de classification globale.

Bonne chance pour votre projet! Cela semble très intéressant.

Richard D
la source
1
Merci. J'ai également découvert que les classificateurs en ligne, tels que perceptron et winnow, sont assez bons pour cette tâche (au moins dans mon scénario), et il est facile d'expliquer la décision en regardant la valeur absolue que chaque fonctionnalité ajoute au score de classification. Pour chaque échantillon, je trie les entités en fonction de la valeur absolue de (entité * poids) et affiche les premières.
Erel Segal-Halevi
3

Je me souviens vaguement que Peter Norvig avait une mise en œuvre de MYCIN , un système expert de diagnostic médical , écrit en LISP dans son livre Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp , qui a fait exactement cela.

C'est peut-être un bon endroit pour commencer vos recherches. Vous trouverez le code source en ligne, ainsi qu'une base de règles , cependant, je recommande fortement de lire le texte et de ne pas essayer de le comprendre uniquement à partir du code source.

Vous pouvez également vous diriger directement vers la page pour Emycin (mon accent),

Emycin est un shell système expert , un cadre pour la création de programmes qui enregistrent les connaissances des experts du domaine et utilisent ces connaissances pour aider les utilisateurs non experts à résoudre les problèmes. Il fournit une interface qui aide les experts à définir les types de données et les règles, un algorithme de raisonnement à enchaînement inverse (similaire à Prolog, mais avec des différences clés), un mécanisme pour gérer l'incertitude et des installations d'introspection qui permettent aux utilisateurs d'apprendre ce que le système sait et ce qu'il fait .

Pål GD
la source
2
Il y a une raison pour laquelle les systèmes experts ne sont plus très populaires, il est difficile de coder toutes les règles.
adrianN