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:
- words.csv - une liste de mots pertinents, y compris une liste de mots non identifiés;
- 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;
- garbage.csv - liste de mots non identifiés;
- descr_words.csv - description (statistiques) de la liste de tous les mots du texte;
- 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
- Logiciel d'analyse de texte (automatique).
- 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.
- 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