https://www.cedro.org/images/default-source/0baner/banner_conlicencia-com_ingles.gif?sfvrsn=b51c69a6_10
CEDRO
https://www.cedro.org/images/default-source/0baner/bannercastellanoblog.gif?sfvrsn=b01c69a6_12
CEDRO

Capít. 7.- Programación y frameworks en IA | Programming and frameworks in AI

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

Una mirada al futuro: Gen | A look into the future: Gen


GEN: New AI programming language


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

Contenidos

 

Contents

7.1.1.- Introducción

7.1.1.- Introduction

7.1.2.- Gen y Julia

7.1.2.- Gen and Julia

7.1.3.- Documentación disponible de Gen

7.1.3.- Available Gen documentation

7.1.4.- Documentación disponible de Julia

7.1.4.- Available Julia documentation


Autor / Author: Juan Antonio Lloret Egea |eu-ai-alliance-3_0.pngMiembro de la Alianza Europea para la IA / Member to the European AI Alliance | ORCID iD iconhttps://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: 22/08/2019. Actualizado / Updated: 22/08/2019 |


7.1.1.- Introducción | Introduction

Vamos a permitirnos primero una corta reflexión sobre cuáles son los lenguajes de programación mejor posicionados (con referencia a las salidas laborales y salarios) en el año 2019. Obviamente es una opinión. Pero escuchando otras opiniones y comparándolas entre ellas, es indudable que posicionarse como Top 1 es una cuestión de pugna entre Python y Java. Aunque nuevos horizontes se abren camino de futuro...


[English]

We are going to allow ourselves first a short reflection on which are the best positioned programming languages (with reference to work outs and salaries) in the year 2019. Obviously it is an opinion. But listening to other opinions and comparing them to each other, it is clear that positioning yourself as Top 1 is a matter of conflict between Python and Java. Although new horizons make their way to the future...


Las lista que obtenemos es la siguiente | The list we get is as follows:

  1. Python.
  2. JavaScript.
  3. Java.
  4. R.
  5. Swift.
  6. Golang.
  7. C#.
  8. C++.
  9. Scala.
  10. Kotlin.


Fig. I A. C7.1.1-. Los 10 principales lenguajes de programación en 2019 / Top 10 Programming Languages In 2019. Crédito imag (edureka). URL: https://youtu.be/jAx3c3OMkmI


Pero siempre es aconsejable obtener un ranking desde otro punto de vista y más actualizado. Esa posibilidad la tenemos con IEEE Spectrum en su web de análisis: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019


[English]

But it is always advisable to obtain a ranking from another point of view and more updated. We have this possibility with IEEE Spectrum in its analysis website: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019 


The-Top-Programming-Languages-2019---IEEE-Spectrum.png


Fig. I A. C7.1.2. Language Ranking: IEEE Spectrum 06.09.2019. URL: https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2019


7.1.2.- Gen y Julia | Gen and Julia

  • Gen es un paquete para el lenguaje de programación Julia. GEN consta de múltiples lenguajes de modelado que se implementan como DSL en Julia y una biblioteca de Julia para la programación de inferencia. C7.1-1


Fig. I A. C7.1.3- Gen: un sistema de programación probabilística de uso general con inferencia programable / Gen: A General-Purpose Probabilistic Programming System with Programmable Inference. Crédito imag (ACM SIGPLAN). URL: https://youtu.be/Nm255oONOdw


Abstracto

Aunque la programación probabilística se usa ampliamente para algunas clases restringidas de modelos estadísticos, los sistemas existentes carecen de la flexibilidad y la eficiencia necesarias para el uso práctico con modelos más desafiantes que surgen en campos como la visión por computadora y la robótica. Este artículo presenta Gen, un sistema de programación probabilística de propósito general que logra flexibilidad de modelado y eficiencia de inferencia a través de varias construcciones de lenguaje novedosas: (i) la interfaz de función generativa para encapsular modelos probabilísticos; (ii) lenguajes de modelado interoperables que alcanzan diferentes compromisos de flexibilidad/eficiencia; (iii) combinadores que explotan patrones comunes de independencia condicional; y (iv) una biblioteca de inferencia que permite a los usuarios implementar algoritmos de inferencia eficientes en un alto nivel de abstracciónC7.1-2.


Demostramos que Gen supera a los sistemas de programación probabilística de vanguardia, a veces por múltiples órdenes de magnitud, en diversos problemas que incluyen el seguimiento de objetos, la estimación de la postura del cuerpo en 3D a partir de una imagen de profundidad e inferir la estructura de una serie de tiempoC7.1-2.


"Un equipo de investigadores del MIT está facilitando que los novatos se mojen los pies con inteligencia artificial, al tiempo que ayuda a los expertos a avanzar en el campo". Publicación efectuada por la oficina de prensa del MIT sobre Gen aquí


[Primero, obtenga Julia (ver abajo)]. El paquete Gen se puede instalar con el administrador de paquetes Julia. Desde Julia REPL, escriba ] para ingresar al modo REPL de paquete y luego ejecutar:

 pkg> add https://github.com/probcomp/Gen

  • "Gen is a package for the Julia programming language. GEN consists of multiple modeling languages that are implemented as DSL in Julia and a Julia library for inference programming". C7.1-1

Abstract

"Although probabilistic programming is widely used for some restricted classes of statistical models, existing systems lack the flexibility and efficiency needed for practical use with more challenging models arising in fields like computer vision and robotics. This paper introduces Gen, a general-purpose probabilistic programming system that achieves modeling flexibility and inference efficiency via several novel language constructs: (i) the generative function interface for encapsulating probabilistic models; (ii) interoperable modeling languages that strike different flexibility/efficiency trade-offs; (iii) combinators that exploit common patterns of conditional independence; and (iv) an inference library that empowers users to implement efficient inference algorithms at a high level of abstraction" C7.1-2.


"We show that Gen outperforms state-of-the-art probabilistic programming systems, sometimes by multiple orders of magnitude, on diverse problems including object tracking, estimating 3D body pose from a depth image, and inferring the structure of a time series". C7.1-2


"A team of MIT researchers is making it easier for novices to get their feet wet with artificial intelligence, while also helping experts advance the field". Publication made by the MIT press office on Gen here.


[First, obtain Julia (see below)]. The Gen package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and then run:

pkg> add https://github.com/probcomp/Gen


Fig. I A. C7.1.4- Aprenda Julia en un vídeo / Learn Julia in one video. Crédito imag (Derek Banas). URL: https://youtu.be/sE67bP2PnOo


  • Julia es un lenguaje de programación muy atractivo para los científicos de datos, estadísticos y analistas financieros. Ofreciendo un lenguaje de programación fácil de aprender que ofrece un gran rendimiento. En su contra se encuentra su juventud, por lo que no se encuentran disponibles la cantidad de librerías que se puede encontrar actualmente en los lenguajes más populares como R, Python o Matlab". [...] A la vista de los resultados constrastados por gráfica se puede observar que Julia es uno de los lenguajes más rápidos, siendo incluso más rápido que C en ciertas situaciones. Este rendimiento no se puede conseguir con otros lenguajes de alto nivel como Matlab, Python o R. El rendimiento se consigue gracias a la utilización de un compilador JIT en lugar de un intérprete. Lo que significa que la primera ejecución del código es más lenta ya que el compilador ha de analizar y compilar el código. Pudiendo significar un desventaja en ciertas ocasiones respecto a otros lenguajes. Los usuarios de Julia indica que es tan fácil de usar como puede ser Python, R o Matlab. Estaban cansados de tener que cambiar entre Matlab, Lisp, Python, Ruby, Perl, Mathematica, R y C. Por lo que desean tener u único lenguaje de programación que fuese bueno para el cálculo científico, aprendizaje automático, minería de datos, álgebra lineal, computación paralela y computación distribuida. C7.1-3

La instalación de Julia es sencilla, ya sea utilizando binarios precompilados o compilando desde la fuente. Descargue e instale Julia siguiendo las instrucciones en https://julialang.org/downloads/ .

La forma más fácil de aprender y experimentar con Julia es iniciando una sesión interactiva (también conocida como bucle read-eval-print o "REPL") haciendo doble clic en el ejecutable de Julia o ejecutando julia desde la línea de comandos:

$ julia _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.2.0 (2019-08-20) _/ |\__'_|_|_|\__'_| | |__/ | julia> 1 + 2 3 julia> ans 3 

[English]


  • Julia is a very attractive programming language for data scientists, statisticians and financial analysts. Offering an easy-to-learn programming language that offers great performance. Her youth is against her, so there is no available number of libraries that can be found currently in the most popular languages ​​such as R, Python or Matlab [...] In view of the results contrasted by graph it can be seen that Julia is one of the fastest languages, being even faster than C in certain situations. This performance cannot be achieved with other high-level languages ​​such as Matlab, Python or R. The performance is achieved thanks to the use of a JIT compiler instead of an interpreter. Which means that the first execution of the code is slower since the compiler has to analyze and compile the code. It can mean a disadvantage in certain occasions with respect to other languages. Julia users indicated that it is as easy to use as Python, R or Matlab. "They were tired of having to switch between Matlab, Lisp, Python, Ruby, Perl, Mathematica, R and C. So they want to have a only programming language that was good for scientific calculation, machine learning, data mining, linear algebra, parallel computing and distributed computing.C7.1-3

Julia's installation is simple, either using precompiled binaries or compiling from the source. Download and install Julia following the instructions at https://julialang.org/downloads/.

The easiest way to learn and experiment with Julia is to start an interactive session (also known as the read-eval-print or "REPL" loop) by double clicking on Julia's executable or running julia from the command line:

$ julia _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.2.0 (2019-08-20) _/ |\__'_|_|_|\__'_| | |__/ | julia> 1 + 2 3 julia> ans 3 


Fig. I A. C7.1.5- Los datos de referencia mostrados se calcularon con Julia v1.0.0, SciLua v1.0.0-b12, Rust 1.27.0, Go 1.9, Java 1.8.0_17, Javascript V8 6.2.414.54, Matlab R2018a , Anaconda Python 3.6.3, R 3.5.0 y Octave 4.2.2. C y Fortran se compilan con gcc 7.3.1, tomando el mejor tiempo de todos los niveles de optimización (-O0 a -O3). C, Fortran, Go, Julia, Lua, Python y Octave usan OpenBLAS v0.2.20 para operaciones matriciales; Mathematica usa Intel (R) MKL. Las implementaciones de Python de matrix_statistics y matrix_multiply utilizan las funciones NumPy v1.14.0 y OpenBLAS v0.2.20; el resto son implementaciones puras de Python. / The benchmark data shown  were computed with Julia v1.0.0, SciLua v1.0.0-b12, Rust 1.27.0, Go 1.9, Java 1.8.0_17, Javascript V8 6.2.414.54, Matlab R2018a, Anaconda Python 3.6.3, R 3.5.0, and Octave 4.2.2. C and Fortran are compiled with gcc 7.3.1, taking the best timing from all optimization levels (-O0 through -O3). C, Fortran, Go, Julia, Lua, Python, and Octave use OpenBLAS v0.2.20 for matrix operations; Mathematica uses Intel(R) MKL. The Python implementations of matrix_statistics and matrix_multiply use NumPy v1.14.0 and OpenBLAS v0.2.20 functions; the rest are pure Python implementations. Crédito imag (Julia Micro-Benchmarks). URL: https://julialang.org/benchmarks/

7.1.3.- Documentación disponible de Gen | Available Gen documentationC7.1-1

GenTF

(Plugin TensorFlow para el sistema de programación probabilística Gen / TensorFlow plugin for the Gen probabilistic programming system)

El paquete Julia GenTF permite que las funciones generativas Gen invoquen los cálculos de TensorFlow ejecutados en la GPU por el tiempo de ejecución de TensorFlow. Los usuarios construyen un cálculo de TensorFlow utilizando la API familiar de TensorFlow Python, y luego empaquetan el cálculo de TensorFlow en una función TFF, que es un tipo de función generativa proporcionada por GenTF. Las funciones generativas escritas en el lenguaje de modelado incorporado de Gen pueden llamar a la perfección las funciones TFF. GenTF integra la diferenciación automática de Gen con los gradientes de TensorFlow, lo que permite la diferenciación automática de los cálculos que combinan el código de Julia y TensorFlow.


[English]

The Julia package GenTF allows for Gen generative functions to invoke TensorFlow computations executed on the GPU by the TensorFlow runtime. Users construct a TensorFlow computation using the familiar TensorFlow Python API, and then package the TensorFlow computation in a TFFunction, which is a type of generative function provided by GenTF. Generative functions written in Gen's built-in modeling language can seamlessly call TFFunctions. GenTF integrates Gen's automatic differentiation with TensorFlow's gradients, allowing automatic differentiation of computations that combine Julia and TensorFlow code.


Tutoriales / Tutorials

The tutorials below were generated from Jupyter notebooks, which are available as part of a Docker container, at Gen Quickstart. Some tutorials have not yet been rendered into HTML.


https://github.com/probcomp/Gen


Docker

A docker image containing an installation of Gen, with tutorial Jupyter notebooks, is available here


Introduction to Modeling in Gen

This tutorial introduces the basics of modeling in Gen. It shows how to perform inference using generic inference algorithms. It does not explore custom inference programming.


Scaling with Combinators and the Static Modeling Language

This tutorial shows how generative function combinators and the static modeling language are used to achieve good asymptotic scaling time of inference algorithms.


Particle Filtering in Gen

This tutorial shows how to implement a particle filter for tracking the location of an object from measurements of its relative bearing.


A Bottom-up Introduction to Gen

This tutorial describes the reasoning behind some of the basic concepts in Gen.


Reasoning about Regenerate

This tutorial explains some of the mathematical details of MCMC in Gen.


Docs


Gen: A General-Purpose Probabilistic Programming System with Programmable Inference

Reference



Fig. I A. C7.1.6- Gen: un sistema de programación probabilistico de propósito general con inferencia programable / Gen: a General-Purpose Prob-abilistic Programming System with Programmable Inference


7.1.4.- Documentación disponible de Julia | Available Julia documentationC7-1-4

Tutoriales / Tutorials

Get jupyter notebooks for the following youtube tutorials here or run them directly on JuliaBox.


Video



Text



Fuents / Resources



Libros / Books


  • Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares by Stephen Boyd and Lieven Vandenberghe (474 pages; Cambridge University Press; published August 23, 2018), with a Julia Language Companion.
  • Algorithms for Optimization by Mykel Kochenderfer and Tim Wheeler (520 pages; MIT Press; published Mar 12, 2019).
  • Julia Programming for Operations Research, Second Edition by Changhyun Kwon (260 pages; published: 2019-03; ISBN: 978-1798205471). This book aims to teach how one can solve various optimization problems arising in operations research and management science, based on Julia v1.0+ and JuMP v0.19+
  • Think Julia - How to Think Like a Computer Scientist by Allen Downey and Ben Lauwens.
  • Fundamentals of Numerical Computation by Tobin A. Driscoll and Richard J. Braun. Julia code for the book is available on GitHub.
  • Statistics with Julia: Fundamentals for Data Science, Machine Learning and Artificial Intelligence by Hayden Klok and Yoni Nazarathy. (DRAFT. PDF will be taken down when the book is published later in 2019).
  • Data Science with Julia by Paul D. McNicholas and Peter A. Tait (220 pages; published: January 2019; ISBN: 9781138499980). Covers the core components of Julia v1.0. Reviews data visualization, supervised and unsupervised learning. Details R interoperability.
  • Julia: High Performance Programming by Ivo Balbaert, Avik Sengupta, Malcolm Sherrington (697 pages; published: November 2016; ISBN: 9781787125704). In this learning path, you will learn to use an interesting and dynamic programming language—Julia! This book is a combination and curation of the three separate books by the three authors.
  • Julia High Performance by Avik Sengupta (120 pages; published: 2016-05; ISBN: 9781785880919). This is a book about performance optimisation of Julia programs, showing how to design and write Julia code that fully realises the potential speed of the language and its libraries.
  • Mastering Julia by Malcolm Sherrington - published by Packt Publishing (410 pages; published: 2015-07; ISBN: 9781783553310)
  • Getting Started with Julia Programming by Ivo Balbaert - published by Packt Publishing (214 pages; published: 2015-02-28; ISBN: 9781783284795)
  • Seven More Languages in Seven Weeks by Bruce Tate, Fred Daoud, Jack Moffit and Ian Dees - published by The Pragmatic Programmers (350 pages; published: 2014-11-15; ISBN: 978-1-94122-215-7). This book contains a Julia tutorial chapter (written by Jack Moffitt and Bruce Tate) for programmers new to Julia, which is very good, with nice examples and exercises.
  • Julia for Data Science by Anshul Joshi (348 pages; published: 2016-09; ISBN: 9781785289699). Explore the world of data science from scratch with Julia by your side.
  • Julia for Data Science by Zacharias Voulgaris PhD (415 pages; published: 2016-09-01; ISBN: 9781634621304). Master the essentials of data science through the Julia programming ecosystem (no prior knowledge of the language is required), accompanied by a variety of interesting examples and exercises.


Fig. I A. C7.1.7- El lenguaje de Julia | The Julia Language


 Bibliografía  | Bibliography


[C7.1-1] GEN. [Recuperado (14/08/2019) de: https://probcomp.github.io/Gen/]

[C7.1-2] Marco F. Cusumano-Towner, Feras A. Saad, Alexander K. Lew,and Vikash K. Mansinghka. 2019. Gen: A General-Purpose Prob-abilistic Programming System with Programmable Inference. InProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’19), June 22–26, 2019, Phoenix, AZ, USA.ACM, New York, NY, USA, 16 pages: [221-236]. [Recuperado (14/08/2019) de: https://doi.org/10.1145/3314221.3314642

[C7.1-3] Rodríguez, D. (24/09/2018). ¿Conoces el lenguaje de programación Julia? Analytics Lane. [Recuperado (14/08/2019) de: https://www.analyticslane.com/2018/09/24/conoces-el-lenguaje-de-programacion-julia/ ]

[C7-1-4] Julia. [[Recuperado (14/08/2019) de: https://julialang.org/learning/]


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

Procesamiento del Lenguaje Natural (PLN) | Natural Language Processing (NLP)


Fig. I A. C2.4.1-. Procesamiento de lenguaje natural en 10 minutos | Natural Language Processing In 10 Minutes. Crédito imag (Edureka). URL: https://youtu.be/5ctbvkAMQO4 


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

Contenidos

 

Contents

7.2.1.- Introducción

7.2.1.- Introduction

7.2.2.- ¿Para qué es útil PLN?

7.2.2.- What is NLP useful for?

7.2.3.- Uso de algoritmos de PLN: Algorithmia

7.2.3.- Use of NLP algorithms: Algorithmia

7.2.4.- Bibliotecas PLN de código abierto

7.2.4.- NLP open source libraries

7.2.5.- Ejemplos de casos de uso del procesamiento del lenguaje natural

7.2.5.- Examples of use cases of natural language processing

7.2.6.- IBM lleva el PLN a nuevos horizontes

7.2.6.- IBM takes the NLP to new horizons

7.2.7.- Cursos o libros de PLN

7.2.7.- NLP courses or books


Autor / Author: Juan Antonio Lloret Egea |eu-ai-alliance-3_0.pngMiembro de la Alianza Europea para la IA / Member to the European AI Alliance | ORCID iD iconhttps://orcid.org/0000-0002-6634-3351|| Escrito / Writed: 25/08/2019. Actualizado / Updated: 25/08/2019 |

© 2019. Licencia de uso / License for use: [ Los estados de la inteligencia artificial (IA) | The states of artificial intelligence (AI) ] Creative Commons CC BY-NC-ND |ISSN 2695-3803 | Preprint DOI 10.13140/RG.2.2.30635.39205 |

7.2.1.- Introducción | Introduction


El campo de estudio que se centra en las interacciones entre el lenguaje humano y las computadoras se llama procesamiento del lenguaje natural, o PLN para abreviar. Se encuentra en la intersección de la informática, la inteligencia artificial y la lingüística computacional (Wikipedia). El chatbot de arriba llamado 'Chico' es un buen ejemplo de ello. Se utiliza PLN de Google, Dialogflow.

PLN es una forma para que las computadoras analicen, comprendan y obtengan significado del lenguaje humano de una manera inteligente y útil. Al utilizar PLN los desarrolladores pueden organizar y estructurar el conocimiento para realizar tareas como resumen automático, traducción, reconocimiento de entidades con nombre, extracción de relaciones, análisis de sentimientos, reconocimiento de voz y segmentación de temas. Y está lleno de posibilidades para la recopilación de noticias.

Los avances en la investigación en PLN como BERT de Google AI, ELMo de Allen Institute, GPT-2  de OpenAI y ULMFiT suelen estar capacitados para grandes cantidades de texto sin etiquetar y disponible públicamente desde Internet.


[English]

The field of study that focuses on the interactions between human language and computers is called natural language processing, or PLN for short. It is located at the intersection of computer science, artificial intelligence and computational linguistics (Wikipedia). The chatbot above called ''Chico' is a good example of this. Google PLN, Dialogflow is used.

NLP is a way for computers to analyze, understand and obtain meaning of human language in an intelligent and useful way. By using NLP developers can organize and structure knowledge to perform tasks such as automatic summary, translation, recognition of named entities, relationship extraction, sentiment analysis, voice recognition and segmentation of topics. And it is full of possibilities for news gathering.

Advances in research in NLP such as BERT from Google AI, ELMo from Allen Institute, GPT-2 from OpenAI and ULMFiT are usually trained for large amounts of unlabeled text and publicly available from the Internet.

Y aprenden mediante transferencia de aprendizaje, es decir, el conocimiento obtenido de un problema se almacena y se aplica a un problema diferente o relacionado. Éstos modelos de lenguaje previamente entrenados pueden mejorar sustancialmente el rendimiento de la PLN.


Cuando Google decidió abrir BERT como código abierto, en noviembre de 2018, afirmó que cualquier persona en el mundo puede entrenar su propio sistema de respuesta a preguntas de última generación (o una variedad de otros modelos) en aproximadamente 30 minutos en una TPU en la nube, o en unas pocas horas usando una sola GPU.

OpenAI  lanzó un nuevo modelo de lenguaje llamado GPT-2, en febrero de 2019, y afirmó que GPT-2 podría predecir cuáles serían las siguientes palabras de un usuario después de permitirle recoger una oración o frase. Aparentemente el sistema era tan bueno que tuvo que ser retirado del dominio público por temor a que fuera mal utilizado (eso transmitió la entidad a la prensa)C7.2-1



Fig. I A. C2.4.2-. Cómo OpenAI escribe historias de noticias convincentes y obras de ficción | How OpenAI writes convincing news stories and works of fiction. Crédito imag (Guardian News). URL: https://youtu.be/XMJ8VxgUzTc


[English]
When Google decided to open BERT as open source, in November 2018, it stated that anyone in the world can train their own system of answering the latest generation of questions (or a variety of other models) in approximately 30 minutes on a TPU in the cloud, or in a few hours using a single GPU.

OpenAI (nonprofit AI research entity) launched a new language model called GPT-2, in February 2019, and stated that GPT-2 could predict what a user's next words would be after allowing him to pick up a sentence or phrase Apparently the system was so good that it had to be removed from the public domain for fear that it would be misused (that the entity transmitted to the press) C7.2-1.


Dam Daniel King (uno de los padre de la herramienta) ha publicado la función online de OpenAI para probarlo. Ha publicado la versión completa de su generador de texto en Talk to Transformer. Y nuestra prueba ha sido introducir el texto: I am writing a book on Artificial Intelligence called "The States of AI". Y el resultado ha sido éste (algo decepcionante porque habla del 2015 y alguna salida de tono más). (Update Aug 20: OpenAI released a larger model: 774M).


[English]

Dam Daniel King (one of the tool's parents) has published the OpenAI online feature to prove it. He has published the full version of his text generator in Talk to Transformer. And our test has been to introduce the text: I am writing a book on Artificial Intelligence called "The States of AI". And the result has been this (somewhat disappointing because it speaks of 2015 and some more tone output). (Update Aug 20: OpenAI released a larger model: 774M).


GPT2.png


Cómo configurar el entorno para GPT-2 en Python / How to Setup the Environment for GPT-2 in Python

El modelo a usar de GPT-2 es el mediano,  con 345 millones de parámetros (el del ejemplo de antes es el grande con 774 millones).  Puede descargar el modelo previamente entrenado desde el repositorio oficial deOpenAI GitHub. Y siga estas instrucciones.


[English]
The model to use of GPT-2 is the medium one, with 345 million parameters (the one in the example above is the large one with 774 million). You can download the previously trained model from the official OpenAI GitHub repository. And follow these instructions.


Ver también / See too: Sesgo racial en el procesamiento del lenguaje natural / Racial bias in natural language processing


7.2.2.- ¿Para qué es útil PLN? | What is NLP useful for?

Además de las operaciones comunes de procesador de textos (que tratan el texto como una mera secuencia de símbolos) PLN considera la estructura jerárquica del lenguaje; porque varias palabras forman una frase, varias frases forman una oración y las oraciones transmiten ideas. Durante tiempo ha cumplido  funciones útiles como corregir la gramática, convertir el habla en texto y traducir automáticamente a otros idiomas.  PLN permite a las máquinas entender cómo hablamos los seres humanos. Y sus aplicaciones van incluso hasta el análisis de sentimientos, extracción de temas, extracción de relaciones y también para minería de textos y respuestas automáticas de preguntas.

PLN es un problema difícil en informática, porque el lenguaje humano rara vez es preciso. Comprender el lenguaje humano es comprender no sólo las palabras, sino también los conceptos y cómo están vinculados para crear significado. La ambigüedad del lenguaje es lo que hace que el procesamiento del lenguaje natural sea un problema difícil de dominar para las computadorasC7.2-1.


[English]

Other common word processor operations (which treat the text as a mere sequence of symbols) NLP considers the hierarchical structure of the language; because several words form a sentence, several sentences form a sentence and sentences convey ideas.

For a long time has fulfilled useful functions such as correcting grammar, converting speech into text and automatically translating into other languages. NLP allows machines to understand how we speak human beings. And its applications even go to the analysis of feelings, extraction of topics, extraction of relationships and also for text mining and automatic answering of questions.

NLP is a difficult problem in computer science, because human language is rarely accurate. Understanding human language is understanding not only the words, but also the concepts and how they are linked to create meaning. Language ambiguity is what makes natural language processing a difficult problem to master for computers C7.2-1.


7.2.3.- Uso de algoritmos de PLN: Algorithmia | Use of NLP algorithms: Algorithmia

Algorithmia.png

Fig. I A. C2.4.3-. Creación de una cuenta en Algorithmia / Creating an account in Algorithmia. Crédito imag (Creación propia). Ampliar / Enlarge.


Generalmente éstos se basan en algoritmos de aprendizaje automático. En lugar de codificar manualmente grandes conjuntos de reglas, PLN puede evolucionar desde el aprendizaje automático para aprender de forma autónoma estas reglas mediante el análisis de un conjunto de ejemplos y hacer una inferencia estática. Como norma cuantos más datos se analicen más preciso será el modelo. La ejecución de los algoritmos podemos realizarla de forma concatenada para que uno siga al anterior y obtener una Σ de algoritmos.

(Algorithmia es una compedio de algoritmos que van desde el análisis de textos, Machine Learning, visión por computador y Deep Learning).  Algunos de los algoritmos usados para el análisis de contenidos en textos en Algorithmia son:

  • Summarizer |Este algoritmo toma grandes bloques de texto no estructurado y extrae oraciones de temas clave en función de la frecuencia de los temas y términos clave. Docs. 

Por visualizar, por ejemplo, Summarizer he tomado el texto completo del inicio (usted puede utilizar otros para probrar los diferentes algoritmos. Previamente se le solicitará que cree una cuenta nueva como en la Fig. I A. C2.4.3. Tiene limitaciones de uso en cantidad en 55K créditos al mes):

"El campo de estudio que se centra en las interacciones entre el lenguaje humano y las computadoras se llama procesamiento del lenguaje natural, o PLN para abreviar. Se encuentra en la intersección de la informática, la inteligencia artificial y la lingüística computacional (Wikipedia). PLN es una forma para que las computadoras analicen, comprendan y obtengan significado del lenguaje humano de una manera inteligente y útil. Al utilizar PLN los desarrolladores pueden organizar y estructurar el conocimiento para realizar tareas como resumen automático, traducción, reconocimiento de entidades con nombre, extracción de relaciones, análisis de sentimientos, reconocimiento de voz y segmentación de temas. Y está lleno de posibilidades para la recopilación de noticias. Los avances en la investigación en PLN como BERT de Google AI, ELMo de Allen Institute, GPT-2  de OpenAI y ULMFiT suelen estar capacitados para grandes cantidades de texto sin etiquetar y disponible públicamente desde Internet".

Y nos devuelve estas oraciones como claves o resumen:

PLN es una forma para que las computadoras analicen, comprendan y obtengan significado del lenguaje humano de una manera inteligente y útil. Al utilizar PLN los desarrolladores pueden organizar y estructurar el conocimiento para realizar tareas como resumen automático, traducción, reconocimiento de entidades con nombre, extracción de relaciones, análisis de sentimientos, reconocimiento de voz y segmentación de temas.


  • AutoTag |Aprovecha LDA, una técnica que descubre temas contenidos en un cuerpo de texto. Este algoritmo toma texto sin formato, ya sea solo o como un conjunto de documentos, y genera etiquetas candidatas para el texto. Docs.
  • Reconocimiento de entidad (Named Entity Recognition). |Este algoritmo recupera entidades reconocidas de un cuerpo de texto utilizando la biblioteca stanfordNlp. (Hay algunos más en este campo).
  • Análisis de sentimientos |Para identificar el sentimiento de una cadena de texto, de muy negativo a neutral y a muy positivo. Docs.
  • PorterStemmer |Para reducir las palabras a su raíz.
  • Tokenizer |Para dividir el texto en tokens. Docs.

[English]

Generally these are based on machine learning algorithms. Instead of manually coding large sets of rules, PNL can evolve from machine learning to learn these rules autonomously by analyzing a set of examples and making a static inference. As a rule, the more data analyzed, the more accurate the model will be. The execution of the algorithms can be done concatenated so that one follows the previous one and obtain an Σ algorithm.

(Algorithmia is a compendium of algorithms ranging from text analysis, Machine Learning, computer vision and Deep Learning). Some of the algorithms used for the analysis of content in texts in Algorithmia are:

  • Summarizer | This algorithm takes large blocks of unstructured text and extracts sentences from key topics based on the frequency of key topics and terms. Docs

To visualize, for example, Summarizer I have taken the full text of the start (you can use others to test the different algorithms. Previously you will be asked to create a new account as Fig. I A. C2.4.3. It has limitations of use in quantity to 55k credits/month):

"Other common word processor operations (which treat the text as a mere sequence of symbols) NLP considers the hierarchical structure of the language; because several words form a sentence, several sentences form a sentence and sentences convey ideas. For a long time has fulfilled useful functions such as correcting grammar, converting speech into text and automatically translating into other languages. NLP allows machines to understand how we speak human beings. And its applications even go to the analysis of feelings, extraction of topics, extraction of relationships and also for text mining and automatic answering of questions. NLP is a difficult problem in computer science, because human language is rarely accurate. Understanding human language is understanding not only the words, but also the concepts and how they are linked to create meaning. Language ambiguity is what makes natural language processing a difficult problem to master for computers".

And he returns these sentences as key themes or overview:

The field of study that focuses on the interactions between human language and computers is called natural language processing, or PLN for short. NLP is a way for computers to analyze, understand and obtain meaning of human language in an intelligent and useful way.


  • AutoTag | Take advantage of LDA, a technique that discovers topics contained in a body of text. This algorithm takes plain text, either alone or as a set of documents, and generates candidate labels for the text. Docs
  • Entity recognition (Named Entity Recognition). | This algorithm retrieves recognized entities from a body of text using the stanfordNlp library. (There are some more in this field).
  • Sentiment analysis | To identify the feeling of a text string, from very negative to neutral and very positive. Docs
  • PorterStemmer | To reduce words to their root.
  • Tokenizer | To divide the text into tokens. Docs

7.2.4.- Bibliotecas PLN de código abierto | NLP open source libraries

Estas bibliotecas proporcionan los bloques de construcción algorítmicos de PLN en aplicaciones del mundo real. (Algorithmia proporciona un punto final de API gratuito para muchos de estos algoritmos, sin tener que configurar o aprovisionar servidores e infraestructura)C7.2-1.

  • Apache OpenNLP: un kit de herramientas de aprendizaje automático que proporciona tokenizadores, segmentación de oraciones, etiquetado de parte del discurso, extracción de entidades con nombre, fragmentación, análisis, resolución de coreferencia y más.
  • Natural Language Toolkit (NLTK) : una biblioteca de Python que proporciona módulos para procesar texto, clasificar, tokenizar, derivar, etiquetar, analizar y más. (Propio para la mintería de datos. Lanzamiento de NLTK 3.4.5: agosto de 2019).
  • MALLET: un paquete de Java que proporciona asignación de Dirichlet latente, clasificación de documentos, agrupamiento, modelado de temas, extracción de información y más. (Está basado en Java).

[English]

These libraries provide the algorithmic building blocks of PNL in real-world applications. (Algorithmia provides a free API endpoint for many of these algorithms, without having to configure or provision servers and infrastructure)C7.2-1.

  • Apache OpenNLP: a machine learning toolkit that provides tokenizers, sentence segmentation, part-of-speech labeling, named entity extraction, fragmentation, analysis, coreference resolution and more.
  • Natural Language Toolkit (NLTK): a Python library that provides modules to process text, classify, tokenize, derive, label, analyze and more. (Own for data mining. NLTK 3.4.5 release: August 2019).
  • MALLET: a Java package that provides latent Dirichlet allocation, document classification, grouping, topic modeling, information extraction and more.

7.2.5.- Ejemplos de casos de uso del procesamiento del lenguaje natural | Examples of use cases of natural language processing

El análisis de las redes sociales es un gran ejemplo del uso de PLN. Las marcas hacen un seguimiento de las conversaciones en línea para comprender lo que dicen los clientes y obtener información sobre el comportamiento del usuario. "Una de las formas más convincentes de que PLN ofrece inteligencia valiosa es mediante el seguimiento de los sentimientos (el tono de un mensaje escrito (tweet, actualización de Facebook, etc.) y etiquetar ese texto como positivo, negativo o neutral". (Rehling. Ex ingeniero de software senior y experto en PLN en Meltwater Group) C7.2-1. El artículo puede encontrarlo aquí.

  • Herramienta para monitoreo de redes sociales
  1. Comience usando el algoritmo Recuperar Tweets con palabras clave para capturar todas las menciones de su marca en Twitter.
  2. Luego, canalice los resultados en el algoritmo de Análisis de opinión, que asignará una calificación de opinión de 0-4 para cada cadena (Tweet).
  • PLN para construir su propio lector RSS

Puede construir un lector RSS de aprendizaje automático en menos de 30 minutos utilizando los siguientes algoritmos:

  1. ScrapeRSS para tomar el título y el contenido de una fuente RSS.
  2. Html2Text para conservar el texto importante, pero eliminar todo el HTML del documento.
  3. AutoTag utiliza la asignación de Dirichlet latente para identificar palabras clave relevantes del texto.
  4. El análisis de sentimientos se usa para identificar si el artículo es positivo, negativo o neutral.
  5. El resumen se utiliza finalmente para identificar las oraciones clave.

[Inglish

The analysis of social networks is a great example of the use of NLP. Brands track online conversations to understand what customers say and get information about user behavior. One of the most convincing ways that NLP offers valuable intelligence is by tracking feelings (the tone of a written message (tweet, Facebook update, etc.) and labeling that text as positive, negative or neutral, "said Rehling (former senior software engineer and NLP expert at Meltwater Group) C7.2-1. The article can be found here.

  • Social network monitoring tool
  1. Start using the Recover Tweets with keywords algorithm to capture all your brand mentions on Twitter.
  2. Then, channel the results in the Opinion Analysis algorithm, which will assign an opinion rating of 0-4 for each string (Tweet).
  • PLN to build your own RSS reader

You can build a machine learning RSS reader in less than 30 minutes using the following algorithms:

  1. ScrapeRSS to take the title and content of an RSS feed.
  2. Html2Text to preserve important text, but remove all HTML from the document.
  3. AutoTag uses the latent Dirichlet assignment to identify relevant keywords in the text.
  4. Sentiment analysis is used to identify whether the article is positive, negative or neutral.
  5. The summary is finally used to identify key sentences.

7.2.6.- IBM lleva el PLN a nuevos horizontes | IBM takes the NLP to new horizons


Fig. I A. C2.4.4-. LIVE DEBATE – IBM Project Debater. URL: https://youtu.be/m3u-1yttrVw


IBM Project Debater es el primer sistema de inteligencia artificial (IA) que puede debatir sobre humanos en temas complejos. Después de años de desarrollo, Project Debater participó con éxito en un debate en vivo con el campeón de debate humano Harish Natarajan el 11 de febrero de 2019 en la conferencia IBM Think en San Francisco. Dominar el lenguaje es un gran desafío para la IA, y Project Debater es un hito importante en este viaje ( Fuente, IBM. 28 de julio, 2019). Más información aquí.

En Intelligence Squared U.S., hemos debatido sobre IA antes: los riesgos, las recompensas y si puede cambiar el mundo, pero por primera vez, estamos debatiendo con AI. En asociación con IBM, Intelligence Squared US está organizando un debate único entre un defensor de campeones de clase mundial y un sistema de inteligencia artificial. IBM Project Debater es el primer sistema de IA diseñado para debatir sobre humanos en temas complejos utilizando una combinación de investigación pionera desarrollada por investigadores de IBM, que incluye: redacción y entrega de discursos basados en datos, comprensión auditiva y modelado de dilemas humanos. Debutó por primera vez en un pequeño evento a puerta cerrada en junio de 2018, Project Debater ahora se enfrentará a su oponente más duro hasta ahora frente a su mayor audiencia, con nuestro propio John Donvan en el asiento del moderador. El tema no será revelado al Proyecto Debater y al campeón del debate humano hasta poco antes de que comience el debate. (Youtube, IBM).


[English]

IBM Project Debater is the first artificial intelligence (AI) system that can discuss humans on complex issues. After years of development, Project Debater successfully participated in a live debate with human debate champion Harish Natarajan on February 11, 2019 at the IBM Think conference in San Francisco. Mastering language is a great challenge for AI, and Project Debater is an important milestone on this trip. (Source, IBM. July 28, 2019). More information here.

"At Intelligence Squared U.S., we’ve debated AI before – the risks, the rewards, and whether it can change the world – but for the first time, we’re debating with AI. In partnership with IBM, Intelligence Squared U.S. is hosting a unique debate between a world-class champion debater and an AI system. IBM Project Debater is the first AI system designed to debate humans on complex topics using a combination of pioneering research developed by IBM researchers, including: data-driven speechwriting and delivery, listening comprehension, and modeling human dilemmas. First debuted in a small closed-door event in June 2018, Project Debater will now face its toughest opponent yet in front of its largest-ever audience, with our own John Donvan in the moderator’s seat. The topic will not be revealed to Project Debater and the champion human debater until shortly before the debate begins". (Youtube, IBM).


7.2.7.- Cursos o libros de PLN | NLP courses or books


 Bibliografía  | Bibliography


[C7.2-1] Kiser,  M. (11 de agosto, 2016). Introduction to Natural Language Processing (NLP). Algorithmia. [Recuperado (14/08/2019) de: https://blog.algorithmia.com/introduction-natural-language-processing-nlp/ ]


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 |eu-ai-alliance-3_0.pngMiembro de la Alianza Europea para la IA / Member to the European AI Alliance | ORCID iD iconhttps://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 ]