Info
Content

Capítulo 7-3º | Chapter 7-3º

Procesamiento de lenguaje natural (PLN) y minería de texto (NLTK) | Natural language processing (PLN) and text mining (NLTK)

Orange_data_mining,_visual_programming_interface,_May_2013.png


Fig. I A. C7.3-1.- Minería de datos, interfaz de programación visual / Data mining, visual programming interface. Crédito imag (Blaz Zupan [CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)]). URL: https://upload.wikimedia.org/wikipedia/commons/4/4e/Orange_data_mining%2C_visual_programming_interface%2C_May_2013.png


Ir al índice principal del libro Go to the main index of the book

Contenidos

Contents

7.3.1.- Introducción

7.3.1.- Introducction

7.3.2.- Minería de datos

7.3.2.- Data Mining

7.3.3.- Minería de texto

7.3.3.- Text mining

7.3.4.- Scikit-aprender

7.3.4.- Scikit-learn

7.3.5.- Instalar scikit-learn

7.3.5.- Installing scikit-learn

7.3.6.- Ciencia de datos en 6 horas

7.3.6.- Data Science in 6 hours


| Autor / Author: Juan Antonio Lloret Egea | Miembro de la Alianza Europea para la IA / Member to the European AI Alliance |https://orcid.org/0000-0002-6634-3351|© 2019. Licencia de uso y distribución / License for use and distribution: [ Los estados de la inteligencia artificial (IA) | The states of artificial intelligence (AI) ] creative commons CC BY-NC-ND |ISSN 2695-3803|| Escrito / Writed: 18/08/2019. Actualizado / Updated: 18/08/2019 |


7.3.1.- Introducción | Introducction

Dentro del Data Science tenemos dos elementos: Data Mining y Text Mining. / Within Data Science we have two elements: Data Mining and Text Mining.


7.3.2.-Minería de datos | Data Mining

La minería de datos o exploración de datos (es la etapa de análisis de "Knowledge Discovery in Databases" o KDD) es un campo de la estadística y las ciencias de la computación referido al proceso que intenta descubrir patrones en grandes volúmenes de conjuntos de datos. Utiliza los métodos de la inteligencia artificial, aprendizaje automático, estadística y sistemas de bases de datos.

El objetivo general del proceso de minería de datos consiste en extraer información de un conjunto de datos y transformarla en una estructura comprensible para su uso posterior.

Además de la etapa de análisis en bruto, supone aspectos de gestión de datos y de bases de datos, de procesamiento de datos, del modelo y de las consideraciones de inferencia, de métricas de intereses, de consideraciones de la teoría de la complejidad computacional, de post-procesamiento de las estructuras descubiertas, de la visualización y de la actualización en línea.

Objetivos del Data Mining

La tarea de minería de datos real es el análisis automático o semi-automático de grandes cantidades de datos para extraer patrones interesantes hasta ahora desconocidos, como los grupos de registros de datos (análisis clúster), registros poco usuales (la detección de anomalías) y dependencias (minería por reglas de asociación). Esto generalmente implica el uso de técnicas de bases de datos como los índices espaciales. Estos patrones pueden entonces ser vistos como una especie de resumen de los datos de entrada, y pueden ser utilizados en el análisis adicional o, por ejemplo, en el aprendizaje automático y análisis predictivo. Por ejemplo, el paso de minería de datos podría identificar varios grupos en los datos, que luego pueden ser utilizados para obtener resultados más precisos de predicción por un sistema de soporte de decisiones. Ni la recolección de datos, preparación de datos, ni la interpretación de los resultados y la información son parte de la etapa de minería de datos, pero que pertenecen a todo el proceso KDD como pasos adicionales.

De la informática toma las siguientes técnicas:
  1. Algoritmos genéticos: son métodos numéricos de optimización, en los que aquella variable o variables que se pretenden optimizar junto con las variables de estudio constituyen un segmento de información. Aquellas configuraciones de las variables de análisis que obtengan mejores valores para la variable de respuesta, corresponderán a segmentos con mayor capacidad reproductiva. A través de la reproducción, los mejores segmentos perduran y su proporción crece de generación en generación. Se puede además introducir elementos aleatorios para la modificación de las variables (mutaciones). Al cabo de cierto número de iteraciones, la población estará constituida por buenas soluciones al problema de optimización, pues las malas soluciones han ido descartándose, iteración tras iteración.
  2. Inteligencia Artificial: mediante un sistema informático que simula un sistema inteligente, se procede al análisis de los datos disponibles. Entre los sistemas de Inteligencia Artificial se encuadrarían los Sistemas Expertos y las Redes Neuronales.
  3. Sistemas Expertos: son sistemas que han sido creados a partir de reglas prácticas extraídas del conocimiento de expertos. Principalmente a base de inferencias o de causa-efecto.
  4. Sistemas Inteligentes: son similares a los sistemas expertos, pero con mayor ventaja ante nuevas situaciones desconocidas para el experto.
  5. Redes neuronales: genéricamente, son métodos de proceso numérico en paralelo, en el que las variables interactúan mediante transformaciones lineales o no lineales, hasta obtener unas salidas. Estas salidas se contrastan con los que tenían que haber salido, basándose en unos datos de prueba, dando lugar a un proceso de retroalimentación mediante el cual la red se reconfigura, hasta obtener un modelo adecuadoC7.3-1.

[English]

Data mining or data exploration (the "Knowledge Discovery in Databases" or KDD analysis stage) is a field of statistics and computer science that refers to the process that attempts to discover patterns in large volumes of datasets.  It uses the methods of artificial intelligence, machine learning, statistics and database systems.

The general objective of the data mining process is to extract information from a data set and transform it into an understandable structure for later use.

In addition to the raw analysis stage, it involves aspects of data and database management, data processing, model and considerations of inference, interest metrics, considerations of computational complexity theory, post-processing of discovered structures, visualization and online update.

Data Mining Objectives

The real task of mining data is the automatic or semi-automatic analysis of large amounts of data to extract interesting patterns hitherto unknown, such as groups of data records (cluster analysis), unusual records (anomaly detection) and dependencies (mining by association rules). This generally involves the use of database techniques such as spatial indexes. These patterns can then be seen as a kind of summary of the input data, and can be used in additional analysis or, for example, in machine learning and predictive analysis. For example, the data mining step could identify several groups in the data, which can then be used to obtain more accurate prediction results by a decision support system. Neither the data collection, data preparation, nor the interpretation of the results and information are part of the data mining stage, but they belong to the entire KDD process as additional steps.

From computer science takes the following techniques:
  1. Genetic algorithms: they are numerical methods of optimization, in which that variable or variables that are intended to be optimized together with the study variables constitute a segment of information. Those configurations of the analysis variables that obtain better values ​​for the response variable will correspond to segments with greater reproductive capacity. Through reproduction, the best segments last and their proportion grows from generation to generation. It is also possible to introduce random elements for the modification of the variables (mutations). After a certain number of iterations, the population will be constituted by good solutions to the optimization problem, since the bad solutions have been discarded, iteration after iteration.
  2. Artificial Intelligence: through a computer system that simulates an intelligent system, the available data is analyzed. Artificial Intelligence systems would include Expert Systems and Neural Networks.
  3. Expert Systems: they are systems that have been created from practical rules drawn from the knowledge of experts. Mainly based on inferences or cause-effect.
  4. Intelligent Systems: they are similar to expert systems, but with greater advantage in the face of new situations unknown to the expert.
  5. Neural networks: generically, they are parallel numerical process methods, in which the variables interact by means of linear or non-linear transformations, until obtaining outputs. These outputs are contrasted with those that should have left, based on test data, leading to a feedback process through which the network is reconfigured, until an adequate model is obtainedC7.3-1.

7.3.3.-Minería de texto | Text mining

Text_mining_protocol.png

Fig. I A. C7.3-2.- Minería de datos, interfaz de programación visual / Text mining protocol. Crédito imag (Varsha D. Badal, Petras J. Kundrotas , Ilya A. Vakser [CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0)]). URL: https://upload.wikimedia.org/wikipedia/commons/2/21/Text_mining_protocol.png

La minería de texto, también conocida como minería de datos de texto, aproximadamente equivalente al análisis de texto, es el proceso de derivar información de alta calidad del texto. La información de alta calidad generalmente se deriva de la elaboración de patrones y tendencias a través de medios como el aprendizaje de patrones estadísticos. La minería de texto generalmente implica el proceso de estructurar el texto de entrada (generalmente el análisis, junto con la adición de algunas características lingüísticas derivadas y la eliminación de otras, y la posterior inserción en una base de datos), derivando patrones dentro de los datos estructurados y finalmente evaluación e interpretación de la salida. La 'alta calidad' en la minería de textos generalmente se refiere a alguna combinación de relevancia, novedad e interés. Las tareas típicas de minería de texto incluyen categorización de texto, agrupamiento de texto, extracción de concepto / entidad, producción de taxonomías granulares, análisis de sentimientos, resumen de documentos y modelado de relación de entidad (es decir, relaciones de aprendizaje entre entidades nombradas).
El análisis de texto implica la recuperación de información, análisis léxico para estudiar distribuciones de frecuencia de palabras, reconocimiento de patrones, etiquetado / anotación, extracción de información, técnicas de extracción de datos que incluyen análisis de enlaces y asociaciones, visualización y análisis predictivo. El objetivo general es, esencialmente, convertir el texto en datos para el análisis, mediante la aplicación del procesamiento del lenguaje natural (PNL) y los métodos analíticos.
Una aplicación típica es escanear un conjunto de documentos escritos en un lenguaje natural y modelar el conjunto de documentos con fines de clasificación predictiva o completar una base de datos o un índice de búsqueda con la información extraídaC7.3-2.

[English]

Text mining, also referred to as text data mining, roughly equivalent to text analytics, is the process of deriving high-quality information from text. High-quality information is typically derived through the devising of patterns and trends through means such as statistical pattern learning. Text mining usually involves the process of structuring the input text (usually parsing, along with the addition of some derived linguistic features and the removal of others, and subsequent insertion into a database), deriving patterns within the structured data, and finally evaluation and interpretation of the output. 'High quality' in text mining usually refers to some combination of relevance, novelty, and interest. Typical text mining tasks include text categorization, text clustering, concept/entity extraction, production of granular taxonomies, sentiment analysis, document summarization, and entity relation modeling (i.e., learning relations between named entities).

Text analysis involves information retrieval, lexical analysis to study word frequency distributions, pattern recognition, tagging/annotation, information extraction, data mining techniques including link and association analysis, visualization, and predictive analytics. The overarching goal is, essentially, to turn text into data for analysis, via application of natural language processing (NLP) and analytical methods. A typical application is to scan a set of documents written in a natural language and either model the document set for predictive classification purposes or populate a database or search index with the information extractedC7.3-2.


Ver también Procesamiento del Lenguaje Natural (PLN)


NLTK (Natural Language ToolKit) es una plataforma líder para crear programas de Python para trabajar con datos de lenguaje humano. Proporciona interfaces fáciles de usar a más de 50 recursos corporales y léxicos como WordNet, junto con un conjunto de bibliotecas de procesamiento de texto para clasificación, tokenización, derivación, etiquetado, análisis y razonamiento semántico, envoltorios para bibliotecas NLP de potencia industrial, y un foro de discusión activo(Google).


[English]


See too Natural Language Processing (NLP)


NLTK (Natural Language ToolKit) is a leading platform for building Python programs to work with human language data. It provides easy-to-use interfaces to over 50 corpora and lexical resources such as WordNet, along with a suite of text processing libraries for classification, tokenization, stemming, tagging, parsing, and semantic reasoning, wrappers for industrial-strength NLP libraries, and an active discussion forum (Google).


Tokenize-and-tag-some-text.png


Fig. I A. C7.3-3.- Algunas cosas simples que puede hacer con NLTK / Some simple things you can do with NLTK. Crédito imag (nltk.org). URL: http://www.nltk.org/



Natural Language ToolKit, o más comúnmente NLTK, es un conjunto de bibliotecas y programas para el procesamiento simbólico y estadístico de lenguaje natural (PLN) para inglés escrito en el lenguaje de programación Python. Fue desarrollado por Steven Bird y Edward Loper en el Departamento de Informática y Ciencias de la Información de la Universidad de Pensilvania. NLTK incluye demostraciones gráficas y datos de muestra.


El libro El procesamiento del lenguaje natural con Python proporciona una introducción práctica a la programación para el procesamiento del lenguaje. Escrito por los creadores de NLTK, guía al lector a través de los fundamentos de escribir programas de Python, trabajar con corpus, categorizar texto, analizar la estructura lingüística y más. La versión en línea del libro se ha actualizado para Python 3 y NLTK 3. (Lanzamiento de NLTK 3.4.5: agosto de 2019).


Natural Language Processing with Python. – Analyzing Text with the Natural Language Toolkit.

(Steven Bird, Ewan Klein, and Edward Loper).

0. Prefacio
1. Procesamiento de lenguaje y Python
2. Acceso a Corporación de texto y recursos léxicos
3. Procesamiento de texto sin procesar
4. Escribir programas estructurados
5. Categorización y etiquetado de palabras
6. Aprendiendo a clasificar texto
7. Extraer información del texto
8. Analizando la estructura de la oración
9. Construyendo gramáticas basadas en características
10. Analizando el significado de las oraciones
11. Gestión de datos lingüísticos
12. Epílogo: Enfrentando el desafío del idioma
Bibliografía
Índice de términos

NLTK está destinado a apoyar la investigación y la enseñanza en PNL o áreas estrechamente relacionadas, incluida la lingüística empírica, la ciencia cognitiva, la inteligencia artificial, la recuperación de información y el aprendizaje automático. NLTK se ha utilizado con éxito como herramienta de enseñanza, como herramienta de estudio individual y como plataforma para la creación de prototipos y la construcción de sistemas de investigación. Hay 32 universidades en los Estados Unidos y 25 países que utilizan NLTK en sus cursos. NLTK admite funcionalidades de clasificación, tokenización, derivación, etiquetado, análisis y razonamiento semántico.(Wikipedia).


[English]

«The Natural Language Toolkit, or more commonly NLTK, is a suite of libraries and programs for symbolic and statistical natural language processing (NLP) for English written in the Python programming language. It was developed by Steven Bird and Edward Loper in the Department of Computer and Information Science at the University of Pennsylvania. NLTK includes graphical demonstrations and sample data.

The book Natural Language Processing with Python provides a practical introduction to programming for language processing. Written by the creators of NLTK, it guides the reader through the fundamentals of writing Python programs, working with corpora, categorizing text, analyzing linguistic structure, and more. The online version of the book has been been updated for Python 3 and NLTK 3. (NLTK 3.4.5 release: August 2019).

Natural Language Processing with Python. – Analyzing Text with the Natural Language Toolkit.

(Steven Bird, Ewan Klein, and Edward Loper).

0. Preface
1. Language Processing and Python
2. Accessing Text Corpora and Lexical Resources
3. Processing Raw Text
4. Writing Structured Programs
5. Categorizing and Tagging Words
6. Learning to Classify Text
7. Extracting Information from Text
8. Analyzing Sentence Structure
9. Building Feature Based Grammars
10. Analyzing the Meaning of Sentences
11. Managing Linguistic Data
12. Afterword: Facing the Language Challenge
Bibliography
Term Index

NLTK is intended to support research and teaching in NLP or closely related areas, including empirical linguistics, cognitive science, artificial intelligence, information retrieval, and machine learning. NLTK has been used successfully as a teaching tool, as an individual study tool, and as a platform for prototyping and building research systems. There are 32 universities in the US and 25 countries using NLTK in their courses. NLTK supports classification, tokenization, stemming, tagging, parsing, and semantic reasoning functionalities». (Wikipedia)



Los siguientes temas están cubiertos en este vídeo / The following topics are covered in this video:

  1. La evolución del lenguaje humano/ The Evolution of Human Language.
  2. ¿Qué es la minería de texto? / What is Text Mining?
  3. ¿Qué es el procesamiento del lenguaje natural? / What is Natural Language Processing?
  4. Aplicaciones de PNL / Applications of NLP.
  5. Componentes y demostración de PNL. / NLP Components and Demo.

Fig. I A. C7.3-4.-Natural Language Processing In 10 Minutes. Crédito imag (Edureka). URL: https://youtu.be/05ONoGfmKvA


7.3.4.- Scikit-aprender/ Scikit-learn

Scikit-learn (anteriormente scikits.learn) es una biblioteca para aprendizaje de máquina de software libre para el lenguaje de programación Python. Incluye varios algoritmos de clasificación, regresión y análisis de grupos entre los cuales están máquinas de vectores de soporte, bosques aleatorios, Gradient boosting, K-means y DBSCAN. Está diseñada para interoperar con las bibliotecas numéricas y científicas NumPy y SciPy. (Scikit-learn está escrito principalmente en Python, con algunos algoritmos de núcleo escritos en Cython para obtener mayor rendimiento. Las máquinas de vectores de soporte están implementadas por una conexión en Cython a LIBSVM; de forma similar, regresión logística y máquinas de vectores de soporte lineales llaman a la biblioteca LIBLINEAR.) (Wikipedia).

Página web: http://scikit-learn.org/


[English]

Scikit-learn (formerly scikits.learn) is a free software machine learning library for the Python programming language. It includes several classification, regression and group analysis algorithms among which are support vector machines, random forests, Gradient boosting, K-means and DBSCAN. It is designed to interoperate with the numerical and scientific libraries NumPy and SciPy. (Scikit-learn is written primarily in Python, with some kernel algorithms written in Cython for better performance. Support vector machines are implemented by a connection in Cython to LIBSVM; similarly, logistic regression and vector machines from Linear supports call the LIBLINEAR library.) (Wikipedia).

Website: http://scikit-learn.org



Fig. I A. C7.3-5.- Español / Spanish. (Noviembre, 2018). Introducción de la Librería scikit - learn de Python. (Ligdi Gonzalez). URL: https://youtu.be/iONvh4hg0Qs.

Otros vídeos de interés (librería Numpy Parte I, Numpy Parte II, librería Pandas Parte I, librería Pandas Parte II, librería Matplotlib Parte I, librería Matplotlib parte II, etc.).



Fig. I A. C7.3.6.-  ( 31 july, 2018). Learning Scikit-Learn (AI Adventures). (Google Cloud Platform). URL: https://youtu.be/rvVkVsG49uU


Una introducción al aprendizaje automático con scikit-learn aquí / An introduction to machine learning with scikit-learn here


7.3.5.- Instalar scikit-learn / Installing scikit-learn

Instrucciones de instalación / installation instructions: https://scikit-learn.org/stable/install.html

Scikit-learn requiere / Scikit-learn requires:

  • Python (>= 3.5)
  • NumPy (>= 1.11.0)
  • SciPy (>= 0.17.0)
  • joblib (>= 0.11)

Las capacidades de trazado de Scikit-learn (es decir, las funciones comienzan con "plot_") requieren Matplotlib (> = 1.5.1). Algunos de los ejemplos de scikit-learn pueden requerir una o más dependencias adicionales: scikit-image (> = 0.12.3), pandas (> = 0.18.0). (El proyecto WinPython distribuye scikit-learn como un complemento adicional).


[English]

Scikit-learn plotting capabilities (i.e., functions start with “plot_”) require Matplotlib (>= 1.5.1). Some of the scikit-learn examples might require one or more extra dependencies: scikit-image (>= 0.12.3), pandas (>= 0.18.0).

(The WinPython project distributes scikit-learn as an additional plugin).



7.3.6.- Ciencia de datos en 6 horas  | Data Science in 6 hours


Fig. I A. C7.3-7.- Curso completo para principiantes / Full Course for Beginners. Crédito imág (freeCodeCamp.org). URL:  https://youtu.be/ua-CiDNNj30


Bibliografía  | Bibliography


[C7.3-1] Wikipedia. Minería de datos.[Recuperado (18/08/2019) de: https://es.wikipedia.org/wiki/Miner%C3%ADa_de_datos ]

[C7.3-2]. Wikipedia. Text mining. [Recuperado (18/08/2019) de: https://en.wikipedia.org/wiki/Text_mining ]


Back to top