Améliorer la qualité de la classification des textes en connectant Wikipedia

Nous utilisons une grande source structurée de textes multilingues - Wikipedia pour améliorer la classification des textes. L'approche est bonne avec un degré élevé d'automatisme et d'indépendance à partir duquel un problème de classification particulier est résolu. Le plus grand effet, cependant, est attendu sur les tâches de détermination du sujet.

L'idée principale est d'extraire de Wikipedia uniquement les textes qui nous aident à résoudre notre problème de classification, en ignorant les autres. Si nous classons des textes sur les chats, il est peu probable que nous ayons besoin de textes sur la physique quantique, bien que des textes sur d'autres types d'animaux puissent être utiles. La séparation automatique de ces textes les uns des autres est l'essence de l'approche décrite.

Wikipédia, comme vous le savez, est une collection d'articles sur de nombreux domaines de connaissances et d'intérêts. Dans le même temps, une partie importante des articles contient des liens vers des articles sur un sujet similaire, mais dans d'autres langues. Ce ne sont pas des traductions, à savoir des articles d'un sujet général. De plus, la plupart des articles entrent dans une ou plusieurs catégories. Les catégories, à leur tour, sont pour la plupart organisées sous la forme d'un arbre hiérarchique. Autrement dit, la tâche de regrouper les articles Wikipedia sur des sujets qui nous intéressent peut être résolue.

Nous utilisons la ressource DBPedia - une version précâblée et structurée de Wikipedia. DBPedia nous donne toutes les informations nécessaires - les noms des articles, leurs annotations, les catégories des articles et les catégories supérieures pour les catégories. Nous commençons par la langue la plus représentée sur Wikipédia - l'anglais. Si votre tâche ne contient pas ou peu de textes en anglais, utilisez la langue pour laquelle il existe de nombreux documents.

Étape 1. Regroupement de Wikipedia


Concentrez-vous sur les catégories d'articles. Pour l'instant, ignorez leur contenu. Les catégories forment un graphique, principalement en forme d'arbre, mais il existe également des cycles. Les articles sont les points d'extrémité du graphique (feuilles) connectés à un ou plusieurs nœuds du graphique. Nous utilisons l'outil Node2Vec pour obtenir une représentation vectorielle de chaque catégorie et de chaque article. Les articles de sujets similaires sont regroupés dans l'espace vectoriel.

Nous regroupons par n'importe quelle méthode pratique de l'article en un nombre assez important (des centaines) de grappes.

Étape 2. Formation sur les classificateurs sur Wikipédia


Nous remplaçons les noms des articles des grappes résultantes par leurs annotations (résumé long et résumé court - environ un paragraphe de texte par article). Nous avons maintenant des centaines de clusters définis comme des ensembles de textes. Nous utilisons un modèle pratique et construisons un classificateur qui résout le problème de la classification multiclasse: un cluster - une classe. Nous avons utilisé FastText.
En sortie, nous obtenons un modèle qui prend du texte en entrée et en sortie, il donne un vecteur d'estimation du degré auquel le texte appartient à nos centaines de groupes de classes.

Si la première étape consiste à regrouper les articles de Wikipédia non pas par leurs catégories, mais par leur contenu, alors, premièrement, nous perdrons des informations par catégories, mais c'est important, et deuxièmement, nous obtiendrons un système dégénéré - qui, par textes, est regroupé et construit modèle de classificateur. La qualité finale sera probablement pire qu'avec une approche séparée. Bien que je n'aie pas vérifié.

Étape 3. Construire un modèle par vous-même, combattre, données


Nous utilisons une sélection de nos données de combat et soumettons chaque document à l'entrée du modèle de l'étape 2. Le modèle renvoie un vecteur d'estimations. Nous utilisons ce vecteur comme vecteur d'entité pour le document en question. En conséquence, après avoir traité tous nos échantillons d'entraînement de documents de combat, nous obtenons un tableau sous la forme standard pour l'apprentissage automatique - une étiquette de classe, un ensemble de signes numériques. Nous appelons cette table un ensemble de formation.

Nous construisons sur l'échantillon d'apprentissage un classificateur qui peut évaluer le contenu informationnel des attributs individuels. Les arbres de décision et leurs variations aléatoires en forêt sont bien adaptés. Les signes les plus informatifs sont les groupes d'articles de Wikipédia qui ont non seulement des thèmes similaires aux thèmes de nos documents de combat, mais, plus important encore, les sujets de ces articles nous permettent de bien séparer nos classes de combat. Lors des premières itérations, l'histogramme de l'informativité des signes est généralement assez plat - plusieurs grappes informatives et une longue queue sont presque égales en termes d'informativité aux centaines de signes restants.

Après avoir étudié l'histogramme du contenu informationnel des caractères, un point d'inflexion a été déterminé empiriquement à chaque fois, et environ 10 à 30% des grappes sont passées à l'itération suivante. L'essence de l'itération est que les articles des clusters informatifs sélectionnés ont été combinés, soumis aux étapes 1 à 3, où ils ont été regroupés à nouveau, deux classificateurs ont été reconstruits, et tout s'est terminé par une analyse de l'histogramme du contenu de l'information. Cela prendra 3-4 itérations.

Il s'est avéré que sur nos données, les signes numériques, en particulier les nombres des années, ont un poids très fort et entraînent l'informatisation de l'ensemble du cluster sur eux-mêmes. En conséquence logique, les groupes consacrés aux événements sportifs annuels sont devenus les plus informatifs - une masse de nombres et de dates, un vocabulaire étroit. J'ai dû supprimer tous les numéros dans les textes des annotations d'articles (dans la deuxième étape). C'est devenu sensiblement meilleur, des groupes d'articles ayant vraiment un sujet ciblé ont commencé à se démarquer (comme nous l'avons imaginé). Dans le même temps, des clusters inattendus sont apparus qui logiquement tombaient sur notre mission de combat, avaient le bon vocabulaire, mais il était très difficile de deviner a priori l'utilité de tels clusters.

Étape 4. Finalisez le modèle


Après plusieurs itérations des étapes 1 à 3, nous avons un nombre raisonnable d'articles sélectionnés sur Wikipedia, dont les sujets aident à partager nos documents de combat. Nous élargissons la sélection avec des articles similaires dans d'autres langues qui nous intéressent et construisons des grappes finales, cette fois des dizaines. Ces clusters peuvent être utilisés de deux manières: soit créer un classificateur similaire à l'étape 2, et l'utiliser pour étendre le vecteur de fonctionnalité numérique dans votre mission de combat, ou utiliser ces ensembles de textes comme source de vocabulaire supplémentaire et les intégrer dans votre classificateur de combat. Nous avons utilisé la deuxième voie.

Notre classificateur de combat est un ensemble de deux modèles - bayes naïfs tronqués et xgboost. Naive Bayes travaille sur des grammes longs, ce sont des grammes avec des longueurs de 1 à 16 éléments, et chaque gramme trouvé incline le total à l'une des classes, mais Bayes ne prend pas de décision finale - il ne donne que la somme des poids en grammes liés à chaque des cours. Xgboost accepte la sortie de bayes, d'autres classificateurs et certains attributs numériques qui sont construits indépendamment du texte, et xgboost donne déjà le modèle final et l'évaluation finale. Cette approche facilite la connexion de tous les ensembles de textes au modèle gram bayes, y compris les ensembles d'articles Wikipédia qui en résultent, et xgboost recherche déjà des modèles sous la forme de réactions typiques des clusters wikipedia aux textes de combat.

Résultats et conclusions


Le premier résultat a donné une augmentation de la précision conditionnelle de 60% à 62%. Lors du remplacement des annotations des articles Wikipedia à l'étape 4 par les articles dégonflés eux-mêmes, la précision est passée à 66%. Le résultat est naturel, car la taille de l'annotation est de deux ou trois phrases, et la taille de l'article est supérieure de plusieurs ordres de grandeur. Plus de matériel linguistique - plus d'effet.

Nous devrions nous attendre à ce que, après avoir terminé toute la procédure sur les textes des articles, plutôt que des annotations, l'augmentation de la qualité soit encore plus grande, mais il y a déjà un problème de numéro technique - il est difficile de pomper et de traiter l'intégralité de Wikipédia, ou sa partie notable (si vous ne commencez pas dès la première itération). De plus, si vous utilisez initialement non seulement l'anglais, mais toutes les langues d'intérêt, vous pouvez toujours gagner autre chose. Dans ce cas, la croissance des volumes traités est multiple, et non par ordre de grandeur, comme dans le premier cas.

Vecteur de document sémantique


Pour chaque document, un vecteur est construit à partir de la relation du document aux sujets donnés en fonction des catégories Wikipédia. Le vecteur est chiffré soit par la méthode décrite à l'étape 3, soit par nos bayes grammes. En conséquence, les documents de combat peuvent être regroupés en fonction de ces vecteurs et obtenir un regroupement des documents de combat par sujet. Il ne reste plus qu'à déposer les hashtags et chaque nouveau document peut déjà tomber dans la base de données avec des balises. Les utilisateurs peuvent alors rechercher. C'est le cas si vous apposez des balises de manière explicite et visible à l'utilisateur. Cela a l'air à la mode, même si je ne suis pas un partisan.

Recherche adaptative


Une méthode plus intéressante d'utilisation des vecteurs de documents sémantiques est la recherche adaptative. En observant l'activité de l'utilisateur, sur quels documents il s'attarde et ceux qu'il ne lit même pas, vous pouvez définir le domaine d'intérêt de l'utilisateur dans le long terme (après tout, les utilisateurs ont également une répartition des responsabilités et tout le monde recherche principalement le sien) et dans le cadre de la session de recherche en cours.

Les documents avec des sujets similaires ont des vecteurs sémantiques similaires avec une mesure de cosinus élevée, ce qui vous permet d'évaluer les documents dans les résultats de la recherche à la volée en fonction du degré de conformité attendue avec les intérêts de l'utilisateur, ce qui vous permet d'augmenter les documents nécessaires dans les résultats de la recherche.

Par conséquent, même avec des requêtes de recherche identiques pour chaque utilisateur, les résultats de la recherche peuvent être personnalisés pour lui et en fonction du document de l'étape précédente qui intéressait l'utilisateur, la prochaine étape de recherche sera adaptée aux besoins de l'utilisateur, même si la requête de recherche elle-même n'a pas changé.

Nous travaillons actuellement sur le problème de la recherche adaptative.

Test d'hypothèse d'entreprise


Les affaires viennent périodiquement avec des idées brillantes qui sont très difficiles à mettre en œuvre. Nous devons apprendre à trouver des documents par leur description, sans avoir soit un échantillon balisé pour la formation, ni la possibilité de soumettre aux évaluateurs un ensemble de documents à noter. Cela se produit généralement lorsque les documents cibles sont rarement trouvés en ce qui concerne le flux général de documents, et par conséquent, en soumettant un pool de 10 mille documents aux évaluateurs sans filtrage préalable, vous pouvez obtenir 1-2 sorties nécessaires ou même moins.

Notre approche est de créer un processus d'apprentissage itératif basé sur des vecteurs sémantiques. À la première étape, nous trouvons plusieurs textes qui définissent notre sujet cible - il peut s'agir d'articles de Wikipédia ou de textes provenant d'autres sources. Pour chaque texte, son vecteur sémantique est produit. Si le sujet cible est complexe, l'algèbre des ensembles fonctionne - unification, intersection, exclusion de certains sujets des autres. Par exemple - il y a des articles Wikipedia sur «Recherche et développement» et sur «Cosmétique», l'intersection des ensembles donnera «R&D sur les cosmétiques».

Tous les documents de la base de données peuvent être triés selon le degré de conformité avec les sujets donnés, puis l'algèbre des ensembles fonctionne sur les documents eux-mêmes comme suit - un document est considéré comme pertinent pour le sujet si son vecteur sémantique est plus proche du vecteur des articles Wikipédia d'un sujet donné que la moyenne de la base de données. Intersection - si en même temps le vecteur sémantique du document est plus proche des deux sujets que la moyenne de la base de données. D'autres opérations sont similaires.

Nous trouvons un ensemble de centaines ou deux documents qui ont la proximité la plus proche de tous les sujets positifs et, en même temps, la proximité la plus proche de tous les sujets négatifs (si nous ne sommes pas intéressés par les questions financières dans la recherche que nous recherchons, nous définirons l'article de la catégorie «Finance» comme exemple négatif) ) Nous donnerons ces documents aux évaluateurs, ils y trouveront plusieurs exemples positifs, sur la base de ces exemples, nous rechercherons d'autres documents avec des vecteurs sémantiques proches, les marquerons et, en sortie, nous obtiendrons suffisamment de documents pour que la classe positive puisse construire n'importe quel classificateur pratique. Cela peut prendre plusieurs itérations.

Résumé


L'approche décrite permet automatiquement, sans analyse manuelle, de sélectionner à partir de Wikipedia ou d'un autre ensemble source de textes qui aident à résoudre le problème de classification. En connectant simplement les clusters de Wikipedia à un classificateur de travail, on peut s'attendre à une augmentation significative de la qualité, sans nécessiter une adaptation du classificateur lui-même.

Eh bien, la recherche adaptative est intéressante.

Source: https://habr.com/ru/post/fr446228/


All Articles