
La technologie d'analyse de texte évolue rapidement sous l'influence de l'apprentissage automatique. Les réseaux de neurones issus de la recherche scientifique théorique sont passés dans la vie réelle et l'analyse de texte est activement intégrée dans les solutions logicielles. Les réseaux de neurones sont capables de résoudre les tâches les plus complexes du traitement du langage naturel, personne n'est surpris par la traduction automatique, la «conversation» avec un robot dans une boutique en ligne, la reformulation, la réponse aux questions et le maintien d'un dialogue. Pourquoi, alors, Siri, Alexa et Alice ne veulent-ils pas nous comprendre, Google ne trouve pas ce que nous recherchons, et les traducteurs automatiques nous amusent avec des exemples de «difficultés de traduction» du chinois vers l'albanais? La réponse réside dans les détails - dans des algorithmes qui fonctionnent correctement en théorie, mais sont difficiles à mettre en œuvre dans la pratique. Apprenez à utiliser des techniques d'apprentissage automatique pour analyser du texte dans des tâches réelles à l'aide des fonctionnalités et des bibliothèques Python. De la recherche de modèles et du prétraitement des données, vous passerez aux méthodes de classification et de regroupement des textes, puis passerez à l'interprétation visuelle, à l'analyse des graphiques, et après vous être familiarisé avec les techniques de mise à l'échelle, apprenez à utiliser l'apprentissage en profondeur pour analyser le texte.
Qu'est-ce qui est décrit dans ce livre?
Ce livre parle de l'utilisation de méthodes d'apprentissage automatique pour analyser du texte à l'aide des bibliothèques Python que nous venons de lister. La nature appliquée du livre suggère que nous ne nous concentrons pas sur la linguistique académique ou les modèles statistiques, mais sur le déploiement efficace de modèles textuels dans l'application.
Notre modèle d'analyse de texte est directement lié au processus d'apprentissage automatique - la recherche d'un modèle composé d'attributs, d'un algorithme et d'hyperparamètres qui donnerait les meilleurs résultats sur les données d'apprentissage afin d'évaluer des données inconnues. Ce processus commence par la création d'un ensemble de données d'apprentissage, qui dans le domaine de l'analyse de texte est appelé corpus. Nous examinons ensuite les méthodes d'extraction d'attributs et de prétraitement pour représenter le texte sous forme de données numériques compréhensibles par les méthodes d'apprentissage automatique. De plus, après avoir pris connaissance de quelques notions de base, nous passerons à l'étude des méthodes de classification et de regroupement des textes, dont l'histoire complète les premiers chapitres du livre.
Dans les chapitres suivants, l'accent est mis sur l'expansion des modèles avec des ensembles d'attributs plus riches et la création d'applications d'analyse de texte. Tout d'abord, nous verrons comment il est possible de présenter et de mettre en œuvre un contexte sous forme de signes, puis nous passerons à une interprétation visuelle pour contrôler le processus de sélection du modèle. Ensuite, nous verrons comment analyser des relations complexes extraites du texte à l'aide de techniques d'analyse de graphes. Après cela, nous tournons notre attention vers les agents interactifs et approfondissons notre compréhension de l'analyse syntaxique et sémantique du texte. En conclusion, le livre présentera une discussion pratique sur les techniques de mise à l'échelle pour l'analyse de texte dans les systèmes multiprocesseurs utilisant Spark, et enfin, nous considérerons la prochaine étape de l'analyse de texte: l'apprentissage en profondeur.
À qui s'adresse ce livre?
Ce livre est écrit pour les programmeurs Python qui souhaitent utiliser des méthodes de traitement du langage naturel et d'apprentissage automatique dans leurs produits logiciels. Nous ne supposons pas que nos lecteurs ont des connaissances académiques ou mathématiques spéciales, et nous nous concentrons plutôt sur les outils et les techniques, plutôt que sur de longues explications. Tout d'abord, ce livre traite de l'analyse des textes en anglais, donc les lecteurs auront besoin au moins d'une connaissance de base des entités grammaticales telles que les noms, les verbes, les adverbes et les adjectifs, et de la façon dont ils sont liés. Les lecteurs sans expérience en apprentissage automatique et en linguistique, mais avec des compétences en programmation en Python, ne se sentiront pas perdus dans l'apprentissage des concepts que nous allons introduire.
Extrait. Extraire des graphiques du texte
Extraire un graphique du texte est une tâche difficile. Sa solution dépend généralement du domaine et, d'une manière générale, la recherche d'éléments structurés dans des données non structurées ou semi-structurées est déterminée par des questions analytiques contextuelles.
Nous proposons de décomposer cette tâche en étapes plus petites en organisant un processus d'analyse graphique simple, comme le montre la Fig. 9.3.
Dans ce processus, nous déterminons d'abord les entités et les relations entre elles, en fonction de la description de la tâche. De plus, sur la base de ce schéma, nous déterminons la méthodologie de sélection d'un graphique dans le corpus en utilisant des métadonnées, des documents dans le corpus et des phrases ou jetons dans des documents pour extraire des données et les relations entre eux. La technique de sélection d'un graphique est un processus cyclique qui peut être appliqué au corps, générer un graphique et enregistrer ce graphique sur le disque ou la mémoire pour un traitement analytique ultérieur.
Au stade de l'analyse, les calculs sont effectués sur le graphique extrait, par exemple, le clustering, l'analyse structurelle, le filtrage ou l'évaluation, et un nouveau graphique est créé, qui est utilisé dans les applications. Sur la base des résultats de l'étape d'analyse, nous pouvons revenir au début du cycle, affiner la méthodologie et le schéma, extraire ou réduire des groupes de nœuds ou d'arêtes afin d'essayer d'obtenir des résultats plus précis.
Création d'un graphique social
Considérez notre corps d'articles d'actualité et la tâche de modéliser les relations entre les différentes entités dans le texte. Si nous considérons la question des différences de couverture entre les différentes agences de presse, vous pouvez construire un graphique à partir des éléments représentant les noms des publications, les noms des auteurs et les sources d'information. Et si l'objectif est de combiner des références à une entité dans de nombreux articles, en plus des détails démographiques, nos réseaux peuvent fixer la forme d'appel (respectueux et autres). Les entités qui nous intéressent peuvent être dans la structure des documents eux-mêmes ou contenues directement dans le texte.
Disons que notre objectif est de trouver des personnes, des lieux et tout ce qui est lié les uns aux autres dans nos documents. En d'autres termes, nous devons construire un réseau social en effectuant une série de transformations, comme le montre la Fig. 9.4. Nous commençons la construction du graphique en utilisant la classe EntityExtractor créée au chapitre 7. Ensuite, nous ajoutons les transformateurs, dont l'un recherche des paires d'entités liées, et le second convertit ces paires en un graphique.
Rechercher des paires d'entitésNotre prochaine étape consiste à créer la classe EntityPairs, qui reçoit des documents sous forme de listes d'entités (créées par la classe EntityExtractor du chapitre 7). Cette classe doit agir comme un convertisseur dans le pipeline Pipeline de Scikit-Learn, et donc hériter des classes BaseEstimator et TransformerMixin, comme décrit au chapitre 4. Il est supposé que les entités dans le même document sont inconditionnellement liées les unes aux autres, nous ajoutons donc la méthode des paires à l'aide de la fonction itertools .permutations pour créer toutes les paires possibles d'entités dans un document. Notre méthode de transformation appellera des paires pour chaque document du corps:
import itertools from sklearn.base import BaseEstimator, TransformerMixin class EntityPairs(BaseEstimator, TransformerMixin): def __init__(self): super(EntityPairs, self).__init__() def pairs(self, document): return list(itertools.permutations(set(document), 2)) def fit(self, documents, labels = None): return self def transform(self, documents): return [self.pairs(document) for document in documents]
Vous pouvez maintenant extraire séquentiellement des entités de documents et les coupler. Mais nous ne pouvons pas encore distinguer les paires d'entités qui se produisent fréquemment des paires qui ne se produisent qu'une seule fois. Nous devons en quelque sorte coder le poids de la relation entre les entités de chaque paire, que nous traiterons dans la section suivante.
Graphiques des propriétés
Le modèle mathématique du graphique ne définit que des ensembles de nœuds et d'arêtes et peut être représenté comme une matrice d'adjacence, qui peut être utilisée dans une variété de calculs. Mais il ne prend pas en charge un mécanisme de modélisation de la force ou des types de relations. Deux entités apparaissent-elles dans un seul document ou dans plusieurs? Se rencontrent-ils dans des articles d'un genre particulier? Pour prendre en charge un tel raisonnement, nous avons besoin d'un moyen d'enregistrer des propriétés significatives dans les nœuds et les bords du graphique.
Le modèle de graphique des propriétés vous permet d'incorporer plus d'informations dans le graphique, élargissant ainsi nos capacités. Dans le graphique des propriétés, les nœuds sont des objets avec des bords entrants et sortants et, en règle générale, contenant le champ type, ressemblant à une table dans une base de données relationnelle. Les nervures sont des objets qui définissent les points de début et de fin; ces objets contiennent généralement un champ d'étiquette qui identifie le type de connexion et un champ de poids qui définit la force de la connexion. En utilisant des graphiques pour l'analyse de texte, nous utilisons souvent des noms comme nœuds et des verbes comme arêtes. Après être passé à l'étape de modélisation, cela nous permettra de décrire les types de nœuds, les étiquettes de lien et la structure de graphe proposée.
À propos des auteurs
Benjamin Bengfort est un spécialiste de la science des données basé à Washington, DC, qui ignore complètement la politique (une chose courante pour le District de Columbia) et préfère la technologie. Il travaille actuellement sur sa thèse de doctorat à l'Université du Maryland, où il étudie l'apprentissage automatique et l'informatique distribuée. Il y a des robots dans son laboratoire (bien que ce ne soit pas son domaine de prédilection), et à son grand dam, les assistants équipent constamment ces robots de couteaux et d'outils, probablement dans le but de remporter un concours culinaire. En regardant un robot essayer de couper une tomate, Benjamin préfère héberger lui-même la cuisine, où il cuisine des plats français et hawaïens, ainsi que des barbecues et des barbecues de toutes sortes. Programmeur professionnel en éducation, chercheur de données sur les vocations, Benjamin écrit souvent des articles couvrant un large éventail de questions, du traitement du langage naturel à l'analyse des données en Python et à l'utilisation de Hadoop et Spark dans l'analyse.
Dr. Rebecca Bilbro - spécialiste en science des données, programmeur Python, professeur, conférencier et auteur d'articles; vit à Washington, DC. Il est spécialisé dans l'évaluation visuelle des résultats du machine learning: de l'analyse des fonctionnalités à la sélection des modèles et aux paramétrages hyper paramétriques. Il mène des recherches dans le domaine du traitement du langage naturel, de la construction de réseaux sémantiques, de la résolution d'entités et du traitement de l'information avec un grand nombre de dimensions. En tant que membre actif de la communauté des utilisateurs et des développeurs de logiciels open source, Rebecca est heureuse de travailler avec d'autres développeurs sur des projets tels que Yellowbrick (un package Python qui vise à la modélisation prédictive de la boîte noire). Dans ses temps libres, il fait souvent du vélo avec sa famille ou s'entraîne au ukulélé. Elle a obtenu son doctorat à l'Université de l'Illinois, à Urbana-Champaign, où elle a étudié les techniques pratiques de communication et de visualisation en technologie.
»Plus d'informations sur le livre sont disponibles sur
le site Web de l'éditeur»
Contenu»
Extrait20% de réduction sur les colporteurs -
PythonLors du paiement de la version papier du livre, une version électronique du livre est envoyée par e-mail.
PS: 7% du coût du livre ira à la traduction de nouveaux livres informatiques, la liste des livres remis à l'imprimerie est
ici .