Tâche: extraire des expressions clés du texte en russe. Python NLP

Ce qui était nécessaire au tout début:

  • un programme «pĂŞche» des noms uniques de produits dans une industrie spĂ©cifique Ă  partir d'un texte brut en russe. Texte brut - un texte qu'une personne a Ă©crit, exprimant simplement ses pensĂ©es et ne se souciant pas de la formation ou de la sĂ©lection d'une liste de mots;
  • liste de mots obtenue automatiquement;
  • traitement manuel ou automatisĂ© minimal pour convertir la liste en un ensemble de hashtags ou de mots-clĂ©s pour le texte.

Je crois que de nombreuses personnes sont implicitement confrontées au problème tous les jours, après avoir écrit ou analysé un article, un post, un commentaire, une note, un rapport, etc. Donc, par mon occupation, j'ai dû faire face à ce problème plusieurs fois par jour. Par conséquent, on peut dire que la «paresse», dans le bon sens du terme, m'a conduit à l'idée de l'automatisation.

Maintenant, lorsque j'écris cet article, l'idée a été préservée, mais l'ensemble de données du résultat final a beaucoup changé:

  • ce ne sont pas les mots qui sont sĂ©lectionnĂ©s mais les phrases clĂ©s, y compris les mots;
  • la liste des expressions clĂ©s est marquĂ©e avec 16 marqueurs diffĂ©rents;
  • tous les mots du texte (y compris les mots non clĂ©s) sont lemmatisĂ©s - sont donnĂ©s dans la forme initiale ou sont unifiĂ©s sous le format affichĂ©;
  • chaque mot dans le texte a des analyses supplĂ©mentaires liĂ©es Ă  la position dans le texte et au nombre de rĂ©pĂ©titions.

Les résultats du logiciel Nrlpk (Natural Russian Language Processing by the Keys) préparent les données pour:

  • analyse de textes d'un Ă©ventail illimitĂ© de sujets et d'industries (le dĂ©veloppement et les essais ont Ă©tĂ© effectuĂ©s sur la base de matĂ©riaux industriels et complexes militaro-industriels - le complexe militaro-industriel);
  • rubrication automatique, classification, catalogage, matĂ©rialisation des matĂ©riaux (sites en ligne);
  • surveillance et filtrage par contenu avec les paramètres de rĂ©ponse du système (services de sĂ©curitĂ© et systèmes en boucle fermĂ©e ou en ligne);
  • balisage multicouche de textes (AI).

La qualité


Afin de ne pas parcourir l'intégralité de l'article ceux qui ne croient qu'en chiffres, et non pas en mots et ceux qui attendent une qualité absolue et n'acceptent pas l'autre ...

La qualité de l' échantillon est de l'ordre de 95 à 100% lors des tests sur des articles ne dépassant pas 3 500 mots. La dispersion est liée à la qualité et à la complexité de la présentation. Voici un exemple de l'un des articles qui ont participé au test, et voici le résultat de son analyse automatique .

Il est nécessaire de retirer environ 7-10% de l'intervalle de qualité obtenu, c'est-à-dire le niveau réel de qualité sera probablement de 85 à 93%. Cela est dû au fait que:

  • pendant le processus de test, les exigences pour les donnĂ©es sĂ©lectionnĂ©es changent, ce que je n'avais pas remarquĂ© auparavant et je crois que je ne remarque pas tout maintenant;
  • lors de la rĂ©conciliation manuelle, il y a mon opinion subjective que ce qui peut ĂŞtre reconnu exactement comme une clĂ© dans un article et ce qui ne l'est pas - et cela ne correspond probablement pas Ă  la clĂ© Ă  la clĂ© avec l'opinion des auteurs des articles.

Une liste complète des articles testés et des statistiques détaillées des résultats sont disponibles sur GitHub .

Ce qui a spécifiquement affecté la qualité du résultat dans chaque article se trouve dans le fichier Reasons sur GitHub .

Comment lire les résultats


Dans chaque dossier pour un article spécifique en cours d'analyse, il y a 5 fichiers avec un ensemble de données en Unicode:

  1. words.csv - une liste de mots pertinents, y compris une liste de mots non identifiés;
  2. keys.csv - une liste de mots-clés, maintenant il contient, en plus des expressions marquées, également des mots qui sont répétés dans le texte au moins un nombre spécifié de fois - dans ce cas, au moins 4 fois;
  3. garbage.csv - liste de mots non identifiés;
  4. descr_words.csv - description (statistiques) de la liste de tous les mots du texte;
  5. descr_keys.csv - description (statistiques) de la liste des mots clés;

Et motivations_qualité.txt est une liste (facultative) d'expressions de l'article qui ont été sélectionnées manuellement et qui ont manqué les clés, ou qui ont été incorrectes (selon l'auteur nrlpk).

Vous pouvez apprendre Ă  lire ces fichiers Ă  partir du fichier Legend sur GitHub .

nrlpk vous permet d'obtenir n'importe quel ensemble de données dans l'un des formats suivants:

  • Pandas Dataframe (par dĂ©faut);
  • Dictionnaire Python;
  • JSON
  • Fichier CSV.

MĂ©thodologie de test


  1. Logiciel d'analyse de texte (automatique).
  2. Identification manuelle (par les yeux), manuelle (marquage) des expressions clés et rapprochement de la liste des expressions clés reçue, avec la liste reçue automatiquement.
  3. Calcul du pourcentage de qualité : le nombre d'expressions manquées ou mal orthographiées + le nombre de mots à la poubelle, au nombre total de mots dans le texte.

Les outils


nrlpk est écrit en Python 3.7.0. Déjà en train de développer le futur logiciel nrlpk, deux exigences obligatoires sont apparues:

  • choisissez des expressions, pas des mots - y compris des mots;
  • la prĂ©sence d'un dictionnaire de termes spĂ©cialisĂ©s de l'industrie.

Ces exigences ont remis en question l'utilisation de NLTK et de pymorphy2, ce qui pourrait résoudre certains des défis.

Pour lever les doutes, une sélection manuelle a été faite d'une sélection de textes des médias extraits du plus grand agrégateur de nouvelles en langue russe sur le sujet du complexe militaro-industriel - VPK.Name . L'analyse de l'étiquetage a révélé:

  • toute une couche de donnĂ©es qui ne devraient pas ĂŞtre soumises Ă  une tokenisation et une lemmatisation mot par mot;
  • l'impossibilitĂ© dans de nombreux cas de tokenisation selon les phrases Ă  une sĂ©rieuse transformation du texte pour corriger les inexactitudes grammaticales que les auteurs autorisent dans plus de 80% des articles. Ces inexactitudes n'affectent en rien la perception du texte par une personne, mais affectent très significativement la perception et l'interprĂ©tation de ce texte par la machine.

En outre, déjà à ce stade, le besoin de collecter et de stocker une variété d'informations statistiques sur les objets en cours de traitement est devenu apparent.

Compte tenu de ces facteurs, Pandas a été choisi comme package de base pour travailler avec les données, ce qui, en plus des tâches décrites ci-dessus, a permis d'effectuer une lemmatisation par lots.

Après avoir analysé les dictionnaires disponibles de la langue russe, OpenCorpora a été prise comme base, qui , soit dit en passant, est également utilisée en pymorphie2.
Il a subi une transformation en une forme pratique pour travailler avec Pandas, après quoi les dictionnaires suivants ont été sélectionnés:

  • grand - la base entière des mots;
  • mauvais mots - mots qui sont exclus de l'analyse du texte en raison d'un manque de signification;
  • spĂ©cial - un dictionnaire de mots spĂ©cialisĂ©s (de l'industrie). Les noms propres ne sont pas inclus dans le dictionnaire: noms, noms, prĂ©noms, adresses, produits, produits, sociĂ©tĂ©s, personnes, etc. Il s'agit d'une dĂ©cision fondamentale et Ă©clairĂ©e, car dans toute industrie / direction vivante, une telle approche nĂ©cessiterait une surveillance constante et l'ajout manuel de dictionnaires, ce qui ruine l'idĂ©e de faciliter le travail grâce Ă  l'automatisation;

Les dictionnaires sont enregistrés en unicode dans un format texte simple pour la gestion à partir de n'importe quel programme externe.

Puisque la base des dictionnaires en nrlpk et pymorphy2 est identique, la désignation des parties du discours (gramme) est identique. Le nombre de marqueurs (grammes non standard) est actuellement de 16 et la plupart d'entre eux, si les expressions marquées ne sont pas constituées de plusieurs mots, en plus du marqueur, ont également une désignation de la partie vocale du gramme de base. La désignation des marqueurs correspondants (grammes non standard) avec pymorphy2 est identique, en particulier:

  • NUMB est un nombre;
  • ROMN est un nombre romain;
  • UNKN - le jeton n'a pas pu ĂŞtre analysĂ©.

Soit dit en passant, pour les expressions contenant des données numériques, dans nrlpk, en plus de NUMB et ROMN, les marqueurs suivants sont également utilisés:

  • NUSR - l'expression contient une ou plusieurs donnĂ©es numĂ©riques;
  • MATH - L'expression contient une formule mathĂ©matique.

Qu'est-ce qu'une expression de mot-clé multi-mots? Par exemple, NUSR:

  • si le texte est le 25 fĂ©vrier 2020, alors l'expression clĂ© sera le 25 fĂ©vrier 2020, avec le lemme «02.25.2020», le gramme «NUSR» et le marqueur NUSR;
  • cependant, si le texte dit «25 fĂ©vrier 2020», l'expression clĂ© sera «25 fĂ©vrier 2020», avec le lemme «2f2g», le gramme «WIQM» et le marqueur WIQM;
  • s'il y a 25 tonnes dans le texte, alors dans la clĂ© nous verrons "25 tonnes", avec le lemme "2t", oĂą "NUSR" sera Ă©galement utilisĂ© comme gramme et marqueur.

Pourquoi aviez-vous besoin de décrire les mots et les clés


Au début, il fallait vérifier le fonctionnement des algorithmes nrlpk - si les mots étaient perdus, s'il y avait une union inutile, quelle était la proportion de clés dans le texte, etc.

Mais au fur et à mesure du débogage du logiciel, certaines «régularités» ont commencé à apparaître, dont l'identification, en tant que tâche, n'a pas été posée à nrlpk:

  • identification des mots Ă©crits avec des fautes d'orthographe;
  • identification de textes de mauvais style, mauvais -%> 35% (observations pratiques Ă  la suite de tests);
  • identification des textes cibles (Ă©troitement focalisĂ©s, clairement positionnĂ©s) - skeys -% <5 sans touches numĂ©riques (observations pratiques Ă  la suite des tests);
  • identification des textes qui ne sont pas sujets Ă  des sujets de l'industrie - skeys-% <1.

Une analyse de la combinaison mutuelle des indicateurs statistiques peut être tout aussi intéressante, par exemple:

  • identification des textes de "large portĂ©e" - touches -%> 45% avec des touches-% tendant vers des touches-%.

Pourquoi tout est-il Ă©crit


nrlpk est prêt à travailler avec les indicateurs de qualité actuels pour le traitement des textes russes, mais n'est pas fourni en tant que service. L'auteur a des orientations de développement claires et compréhensibles pour augmenter le pourcentage de qualité et stabiliser ce pourcentage. Pour développer cette tâche, un investisseur stratégique et / ou un nouveau détenteur des droits d'auteur est requis, prêt à poursuivre le développement du projet vers les objectifs fixés.

PS


Les étiquettes de ce texte (initial - sur Habré un peu changé) (listées ci-dessous) sont générées automatiquement par nrlpk avec les paramètres suivants:

  • Ne reconnaissent pas comme clĂ©s les expressions avec des donnĂ©es numĂ©riques;
  • reconnaĂ®tre comme clĂ©s les mots rĂ©pĂ©tĂ©s dans le texte au moins 8 fois.

Des données détaillées sur le résultat du traitement nrlpk de cet article peuvent être trouvées sur GitHub .

Publié par: avl33

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


All Articles