Libro "Análisis de datos de texto aplicado en Python"

imagen La tecnología de análisis de texto está cambiando rápidamente bajo la influencia del aprendizaje automático. Las redes neuronales de la investigación científica teórica han pasado a la vida real, y el análisis de texto se integra activamente en las soluciones de software. Las redes neuronales son capaces de resolver las tareas más complejas del procesamiento del lenguaje natural, nadie se sorprende con la traducción automática, la "conversación" con un robot en una tienda en línea, reformulando, respondiendo preguntas y manteniendo un diálogo. ¿Por qué, entonces, Siri, Alexa y Alice no quieren entendernos, Google no encuentra lo que estamos buscando y los traductores automáticos nos divierten con ejemplos de "dificultades de traducción" del chino al albanés? La respuesta está en los detalles: en algoritmos que funcionan correctamente en teoría, pero que son difíciles de implementar en la práctica. Aprenda a utilizar técnicas de aprendizaje automático para analizar texto en tareas de la vida real utilizando las capacidades y bibliotecas de Python. Desde la búsqueda de modelos y el preprocesamiento de datos, pasará a los métodos de clasificación y agrupación de textos, luego procederá a la interpretación visual, el análisis de gráficos y, después de familiarizarse con las técnicas de escala, aprenderá a utilizar el aprendizaje profundo para analizar texto.


¿Qué se describe en este libro?


Este libro habla sobre el uso de métodos de aprendizaje automático para analizar texto usando las bibliotecas de Python que acabamos de enumerar. La naturaleza aplicada del libro sugiere que no nos centremos en la lingüística académica o los modelos estadísticos, sino en el despliegue efectivo de modelos formados por texto dentro de la aplicación.

Nuestro modelo de análisis de texto está directamente relacionado con el proceso de aprendizaje automático: la búsqueda de un modelo que consta de atributos, un algoritmo e hiperparámetros que darían los mejores resultados en los datos de entrenamiento para evaluar datos desconocidos. Este proceso comienza con la creación de un conjunto de datos de capacitación, que en el campo del análisis de texto se denomina corpus. Luego examinamos los métodos para extraer atributos y preprocesar para representar el texto en forma de datos numéricos comprensibles para los métodos de aprendizaje automático. Además, después de conocer algunos de los conceptos básicos, pasaremos a estudiar los métodos de clasificación y agrupación de texto, cuya historia completa los primeros capítulos del libro.

En capítulos posteriores, el enfoque está en expandir modelos con conjuntos de atributos más ricos y crear aplicaciones de análisis de texto. Primero, veremos cómo es posible presentar e implementar un contexto en forma de signos, luego pasaremos a una interpretación visual para controlar el proceso de selección del modelo. Luego veremos cómo analizar relaciones complejas extraídas del texto utilizando técnicas de análisis gráfico. Después de eso, dirigimos nuestra atención a los agentes interactivos y profundizamos nuestra comprensión del análisis sintáctico y semántico del texto. En conclusión, el libro presentará una discusión práctica de las técnicas de escalado para el análisis de texto en sistemas multiprocesador que usan Spark, y finalmente, consideraremos la siguiente etapa del análisis de texto: aprendizaje profundo.

¿Para quién es este libro?


Este libro está escrito para programadores de Python interesados ​​en utilizar el procesamiento del lenguaje natural y los métodos de aprendizaje automático en sus productos de software. No suponemos que nuestros lectores tengan conocimientos académicos o matemáticos especiales, sino que se centren en herramientas y técnicas, en lugar de largas explicaciones. En primer lugar, este libro analiza el análisis de textos en inglés, por lo que los lectores necesitarán al menos un conocimiento básico de entidades gramaticales como sustantivos, verbos, adverbios y adjetivos, y cómo se relacionan. Los lectores sin experiencia en aprendizaje automático y lingüística, pero con habilidades de programación en Python, no se sentirán perdidos al aprender los conceptos que presentaremos.

Extracto Extraer gráficos del texto


Extraer un gráfico del texto es una tarea difícil. Su solución generalmente depende del área temática y, en general, la búsqueda de elementos estructurados en datos no estructurados o semiestructurados se determina mediante preguntas analíticas sensibles al contexto.

Proponemos dividir esta tarea en pasos más pequeños organizando un proceso simple de análisis gráfico, como se muestra en la Fig. 9.3.

imagen

En este proceso, primero determinamos las entidades y las relaciones entre ellas, en función de la descripción de la tarea. Además, sobre la base de este esquema, determinamos la metodología para seleccionar un gráfico del corpus utilizando metadatos, documentos en el corpus y frases o tokens en los documentos para extraer datos y las relaciones entre ellos. La técnica de seleccionar un gráfico es un proceso cíclico que se puede aplicar al cuerpo, generar un gráfico y guardar este gráfico en el disco o la memoria para su posterior procesamiento analítico.

En la etapa de análisis, los cálculos se realizan en el gráfico extraído, por ejemplo, agrupación, análisis estructural, filtrado o evaluación, y se crea un nuevo gráfico, que se utiliza en las aplicaciones. Con base en los resultados de la etapa de análisis, podemos volver al comienzo del ciclo, refinar la metodología y el esquema, extraer o colapsar grupos de nodos o bordes para tratar de lograr resultados más precisos.

Crear un gráfico social


Considere nuestro cuerpo de artículos de noticias y la tarea de modelar las relaciones entre diferentes entidades en el texto. Si consideramos el tema de las diferencias en la cobertura entre diferentes agencias de noticias, puede construir un gráfico a partir de los elementos que representan los nombres de las publicaciones, los nombres de los autores y las fuentes de información. Y si el objetivo es combinar referencias a una entidad en muchos artículos, además de los detalles demográficos, nuestras redes pueden arreglar la forma de apelación (respetuosa y otras). Las entidades que nos interesan pueden estar en la estructura de los documentos o estar contenidas directamente en el texto.

Digamos que nuestro objetivo es encontrar personas, lugares y cualquier otra cosa relacionada entre nosotros en nuestros documentos. En otras palabras, necesitamos construir una red social realizando una serie de transformaciones, como se muestra en la Fig. 9.4. Comenzamos la construcción del gráfico usando la clase EntityExtractor creada en el Capítulo 7. Luego agregamos los transformadores, uno de los cuales busca pares de entidades relacionadas, y el segundo convierte estos pares en un gráfico.

imagen

Buscar pares de entidades

Nuestro siguiente paso es crear la clase EntityPairs, que recibe documentos en forma de listas de entidades (creadas por la clase EntityExtractor del Capítulo 7). Esta clase debe actuar como un convertidor en la canalización Pipeline de Scikit-Learn y, por lo tanto, heredar las clases BaseEstimator y TransformerMixin, como se describe en el Capítulo 4. Se supone que las entidades en el mismo documento están relacionadas incondicionalmente entre sí, por lo que agregamos el método de pares usando la función itertools .permutaciones para crear todos los pares posibles de entidades en un documento. Nuestro método de transformación llamará pares para cada documento en el cuerpo:

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] 

Ahora puede extraer secuencialmente entidades de documentos y emparejarlas. Pero aún no podemos distinguir pares de entidades que ocurren con frecuencia de pares que ocurren solo una vez. De alguna manera debemos codificar el peso de la relación entre las entidades en cada par, que trataremos en la siguiente sección.

Gráficos de propiedades


El modelo matemático del gráfico define solo conjuntos de nodos y aristas y puede representarse como una matriz de adyacencia, que puede usarse en una variedad de cálculos. Pero no admite un mecanismo para modelar la fuerza o los tipos de relaciones. ¿Aparecen dos entidades en un solo documento o en muchos? ¿Se reúnen en artículos de un género en particular? Para admitir dicho razonamiento, necesitamos alguna forma de guardar propiedades significativas en los nodos y bordes del gráfico.

El modelo de gráfico de propiedad le permite incrustar más información en el gráfico, ampliando así nuestras capacidades. En el gráfico de propiedades, los nodos son objetos con bordes entrantes y salientes y, por regla general, contienen un campo de tipo, parecido a una tabla en una base de datos relacional. Las costillas son objetos que definen los puntos inicial y final; estos objetos generalmente contienen un campo de etiqueta que identifica el tipo de conexión y un campo de peso que define la fuerza de la conexión. Al usar gráficos para el análisis de texto, a menudo usamos sustantivos como nodos y verbos como bordes. Después de pasar al paso de modelado, esto nos permitirá describir los tipos de nodos, etiquetas de enlaces y la estructura gráfica propuesta.

Sobre los autores


Benjamin Bengfort es un especialista en ciencia de datos con sede en Washington, DC, que ignora por completo la política (algo común para el Distrito de Columbia) y prefiere la tecnología. Actualmente está trabajando en su tesis doctoral en la Universidad de Maryland, donde estudia aprendizaje automático y computación distribuida. Hay robots en su laboratorio (aunque esta no es su área favorita), y para su disgusto, sus asistentes constantemente equipan estos robots con cuchillos y herramientas, probablemente con el objetivo de ganar una competencia culinaria. Al ver a un robot que intenta picar un tomate, Benjamin prefiere organizar la cocina él mismo, donde cocina platos franceses y hawaianos, así como parrilladas y barbacoas de todo tipo. Un programador de educación profesional, investigador de datos vocacionales, Benjamin a menudo escribe artículos que cubren una amplia gama de temas, desde el procesamiento del lenguaje natural hasta el análisis de datos en Python y el uso de Hadoop y Spark en análisis.

Dra. Rebecca Bilbro - especialista en ciencia de datos, programadora de Python, maestra, profesora y autora de artículos; vive en Washington DC Se especializa en la evaluación visual de los resultados del aprendizaje automático: desde el análisis de características hasta la selección de modelos y la configuración de hiperparámetros. Realiza investigaciones en el campo del procesamiento del lenguaje natural, construyendo redes semánticas, resolviendo entidades y procesando información con una gran cantidad de dimensiones. Como participante activo en la comunidad de usuarios y desarrolladores de software de código abierto, Rebecca se complace en trabajar con otros desarrolladores en proyectos como Yellowbrick (un paquete de Python que tiene como objetivo el modelado predictivo de caja negra). En su tiempo libre, a menudo monta bicicletas con su familia o practica tocando el ukelele. Recibió su doctorado de la Universidad de Illinois, en Urbana-Champaign, donde estudió las técnicas prácticas de comunicación y visualización en tecnología.

»Se puede encontrar más información sobre el libro en el sitio web del editor
» Contenidos
» Extracto

Cupón de 20% de descuento para vendedores ambulantes - Python

Tras el pago de la versión en papel del libro, se envía una versión electrónica del libro por correo electrónico.

PD: el 7% del costo del libro se destinará a la traducción de nuevos libros de computadora, la lista de libros entregados a la imprenta está aquí .

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


All Articles