Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Inteligencia artificial fácil
  3. Opiniones y clasificación de textos
Extrait - Inteligencia artificial fácil Machine Learning y Deep Learning prácticos
Extractos del libro
Inteligencia artificial fácil Machine Learning y Deep Learning prácticos
3 opiniones
Volver a la página de compra del libro

Opiniones y clasificación de textos

Lo que vamos a descubrir y requisitos

En el capítulo anterior hemos visto la utilidad de la clasificación aplicada a los números, que nos permitía determinar si el objeto detectado por un sonar era una mina o una roca. Ahora vamos a descubrir la utilidad de la clasificación para el texto. Estos beneficios quizás son menos evidentes, salvo si mencionamos el hecho de que este tipo de clasificación permite ofrecerle publicidad o artículos de contenido relacionados con las distintas búsquedas que haya hecho en Internet o las conversaciones que haya mantenido en las redes sociales. 

También veremos que la clasificación de texto se puede aplicar a la determinación de la opinión de los internautas en las redes sociales sobre un tema determinado. Reconocemos que este aspecto puede ser un poco inquietante y suscitar los temores que hemos mencionado al principio del libro.

Requisitos necesarios para abordar este capítulo correctamente: haber leído los capítulos Los fundamentos del lenguaje Python, Estadísticas para comprender los datos, Principales algoritmos de Machine Learning y Clasificar bien no es una opción.

Tratamiento automático del lenguaje natural (TALN)

El tratamiento automático del lenguaje natural (TALN o Natural Language Processing, NLP) es una disciplina en el límite entre la informática, la lingüística y la inteligencia artificial.

Uno de los objetivos de esta disciplina es la comprensión del lenguaje natural (el que usamos) para deducir el sentido y poder interactuar con nosotros. Como es lógico, los campos de las posibles aplicaciones están orientados alrededor del lenguaje y la lengua, y entre ellas podemos citar las siguientes:

  • Traducción automática.

  • Correcciones ortográficas.

  • Comunicación hombre-máquina (chatbot).

  • Síntesis y reconocimiento de palabras.

  • Análisis de las opiniones.

Para conseguirlo, podemos utilizar un primer enfoque llamado método lingüístico, cuyo objetivo es describir la información que hay que extraer utilizando normas lingüísticas (de gramáticas y redacción), o bien utilizar Machine Learning. No hay ninguna duda de que vamos a darle preferencia al segundo método.

Bayesiano ingenuo aplicado al TALN

Cuando mencionamos la clasificación de texto, el algoritmo imprescindible que nos permite realizar esta tarea es el bayesiano ingenuo, que se basa en la frecuencia de aparición de las palabras. Para los distintos ejemplos que siguen le invitamos a dejar su ordenador a un lado durante algunos instantes y a equiparse con una hoja de papel, un lápiz y una calculadora.

1. El teorema

Como ya hemos mencionado e ilustrado en el capítulo Principales algoritmos de Machine Learning, el algoritmo bayesiano ingenuo se basa en el teorema de Bayes. Este teorema se fundamenta en las probabilidades condicionales, es decir, la determinación de la probabilidad de que se produzca un acontecimiento en función de otro que ya se ha producido. Los acontecimientos deben ser independientes entre sí.

El teorema de Bayes se explica con la siguiente fórmula:

images/Ch08_01.PNG

2. Elegir palabras para un ejemplo

Paro ilustrar el funcionamiento del algoritmo con un ejemplo concreto, hemos elegido el caso de un sitio que ofrece talleres de programación para niños y adolescentes. Vamos a intentar determinar si el hecho de utilizar las palabras clave «Taller niños» y «Curso IA» en la publicidad de las redes sociales, incita a los internautas a los que va dirigida esta publicidad a inscribir más a sus hijos en los cursos.

Para ello, disponemos de los datos de 10 internautas que han hecho o no una inscripción en los cursos después de haber visto una publicidad que solo contenía la palabra clave «Taller niños», otra que solo tenía la palabra clave «Curso IA», una tercera que incluía las dos palabras clave y una cuarta que no contenía ninguna de las palabras clave.

internauta

taller_niños

curso_ia

inscripción

1

No

No

2

No

3

No

No

4

No

5

No

No

6

No

No

7

No

8

No

9

No

No

10

No

Podemos extraer algunas conclusiones de esta tabla:

  • El primer internauta ha visto la publicidad que contenía la palabra clave «Curso IA» pero no ha hecho la inscripción.

  • El internauta n.º 4 ha visto la publicidad que contenía la palabra clave «Taller niños» y ha hecho una inscripción....

Bayesiano ingenuo para el análisis de opinión

Como vamos a comprobar ahora, el teorema bayesiano ingenuo nos va a permitir hacer el análisis de la opción de los internautas en función de sus publicaciones en las redes sociales.

Al analizar los distintos mensajes que han dejado los usuarios en las redes sociales o en sitios de Internet sobre un producto o un tema en particular (deportes, política u otros), podemos determinar si están bastante contentos, descontentos, felices, tristes, de acuerdo o en desacuerdo, y actuar en consecuencia.

¿Cómo? Analizando las palabras de los distintos mensajes y clasificando estos mensajes en distintas categorías: de acuerdo, en desacuerdo, contento o descontento. Esta clasificación permite, por ejemplo, avisar directamente a los responsables de comunicación de un producto en caso de descontento ; al hacerlo así, se puede responder al usuario con mucha rapidez y evitar una mala imagen de la marca.

Tomemos como caso de estudio una serie de conversaciones sobre los gatos extraída de las redes sociales. A partir de la aparición de las palabras en una frase se puede identificar la opinión de la persona que ha publicado el mensaje: si le gustan o no los gatos.

El conjunto de las observaciones que vamos a utilizar en este capítulo se basará en textos en inglés. El motivo es que, desgraciadamente, no es tan fácil encontrar conjuntos de datos en español y, por su composición, resulta mucho más fácil trabajar con el idioma inglés.

Mensaje

Opinión

I love cats

Positiva

I hate cats

Negativa

Cats are beautiful

Positiva

Cats are awful

Negativa

Cats are intelligent

Positiva

Ahora imaginamos un comentario nuevo: «I love awful cats». ¿A la persona que ha publicado este comentario le gustan o no le gustan los gatos? Es la pregunta difícil a la que tendrá que responder nuestro algoritmo de clasificación de textos.

1. Fase 1: Normalización de los datos

La normalización del texto consistirá en eliminar los acentos, los caracteres especiales y ponerlo en minúsculas:

Mensaje

Opinión

i love cats

Positiva

i hate cats

Negativa

cats are beautiful

Positiva

cats are awful

Negativa

cats are intelligent

Positiva

2. Fase 2: Eliminación de las stop words

Las stop words...

Caso práctico: creencias sobre el calentamiento climático

Ahora vamos a proceder a la determinación de opiniones a partir de un conjunto de observaciones procedente de la red social Twitter. No nos vamos a detener en las distintas fases de cálculo, sino que utilizaremos el lenguaje Python para realizar la misión de clasificación.

1. ¿Cómo obtener datos?

Lo primero que tenemos que hacer es obtener un conjunto de observaciones Para ello podemos utilizar las distintas redes sociales, como Facebook o Twitter, a fin recoger un conjunto de conversaciones. En efecto, las redes sociales son propicias para la clasificación de opiniones porque los usuarios las utilizan para publicar sus pareceres sobre distintos temas.

Además, gracias a los hashtag es fácil seleccionar las conversaciones relacionadas con un tema que nos interesa. Al seleccionar las conversaciones que tienen el hashtag #inteligenciaartificial, hay muchas posibilidades de que se refieran a la inteligencia artificial.

Como ejemplo, vamos a estudiar las distintas opiniones que los estadounidenses han dejado en Twitter sobre el calentamiento climático. Intentaremos clasificarlas en dos grupos: los que son conscientes del calentamiento y los que no creen en él. Esta clasificación podría utilizarse con fines políticos o de sensibilización, usted decide.

2. Creación de un proyecto Python

Los módulos de Python que vamos a utilizar en este proyecto están relacionados con la manipulación de datos de texto y de tablas.

Por eso vamos a utilizar las siguientes bibliotecas:

  • NLTK (Natural Language ToolKit)

  • Numpy

  • Pandas

  • Scikit-Learn

3. Adquisición y preparación de los datos

Los datos que vamos a utilizar se pueden descargar en el sitio del editor. Para evitarle todas las fases de preparación de los datos (normalización de las etiquetas de clasificación y eliminación de las observaciones no categorizadas), ya hemos...

Fases de aprendizaje y de predicción

Los datos están preparados y ahora podemos pasar a las fases de aprendizaje y de predicción.

1. Distribución en conjuntos de pruebas y de aprendizaje

Como solemos hacer en estos casos, creamos un conjunto de aprendizaje y un conjunto de pruebas que contienen respectivamente un 80 % y un 20 % de las observaciones como información para predecir la característica CREENCIA.

from sklearn.model_selection import train_test_split  
  
X_train, X_test, y_train, y_test =  
train_test_split(mensajesTwitter['TWEET'].values,   
mensajesTwitter['CREENCIA'].values,test_size=0.2) 

Hemos optado por conservar los términos anglosajones (train y test) porque los encontrará de este modo en los distintos casos prácticos disponibles en Internet.

2. Creación de una canalización de aprendizaje

Una canalización de aprendizaje puede asimilarse a un conjunto de acciones consecutivas que se han de realizar sobre el conjunto de observaciones.

La primera acción añadida a la canalización se hará con la función CountVectorizer() y consistirá en crear la matriz de las apariciones de las distintas palabras en las distintas frases, como hemos aprendido a hacerlo de manera manual.

La matriz de apariciones de las palabras sirve para determinar la cantidad de veces que aparece una palabra en un texto. Sin embargo, eso no significa que una palabra que tiene una cantidad importante de apariciones sea determinante en la clasificación del mensaje. En efecto, puede suceder que la misma palabra se repita 10 veces en un mensaje, pero que solo se haya utilizado en un único mensaje. Es preferible dar un peso a las palabras en función de su frecuencia de aparición en un mensaje (Terme Frequency) y de su cantidad de apariciones en el conjunto de los mensajes (Inverse document frequency). Este peso...

El algoritmo SVM (máquina de vectores de soporte) para la clasificación de texto

Ahora vamos a utilizar el algoritmo SVM para intentar clasificar nuestro texto. Este algoritmo empieza a ser familiar porque en los capítulos anteriores hemos podido conocer su funcionamiento y optimización.

Al igual que el algoritmo bayesiano ingenuo, vamos a utilizar una canalización para llevar a cabo las distintas tareas de análisis de los mensajes antes de su aprendizaje:

from sklearn.pipeline import Pipeline  
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.feature_extraction.text import TfidfTransformer  
from sklearn.svm import SVC  
etapas_aprendizaje = Pipeline([('frequence',   
CountVectorizer()),  
                                 ('tfidf', TfidfTransformer()),  
                                 ('algoritmo',  
SVC(kernel='linear', C=2))]) 

Ahora hacemos el aprendizaje:

modelo = etapas_aprendizaje.fit(X_train,y_train)  
from sklearn.metrics import classification_report  
print(classification_report(y_test, modelo.predict(X_test),  
digits=4)) 

Precisión

Recall

F1-score

F1-score

0

0.7514

0.6376

0.6898...

¿El algoritmo SVM es más eficaz que el bayesiano ingenuo?

Podemos constatar que el algoritmo SVM es mucho más eficaz que el bayesiano ingenuo. Los expertos de Machine Learning han constatado el mismo resultado. La causa es que el algoritmo bayesiano ingenuo considera cada característica como independiente, mientras que SVM busca encontrar elementos de correlación entre ellos. Sin embargo, el bayesiano ingenuo ofrece buenos resultados con un coste de rendimiento menor que el algoritmo SVM. Por lo tanto, hay que darle prioridad al bayesiano ingenuo. Además, ese es motivo por el que se utiliza para los filtros contra el correo no deseado o filtros antispam, por su simplicidad de puesta en marcha y su buen rendimiento.

En este capítulo un poco difícil, tal y como hemos visto en algunos párrafos, hemos descubierto cómo puede intervenir Machine Learning en la clasificación de texto y las múltiples aplicaciones que eso puede generar, hasta la determinación de la opinión expresada por los usuarios de las redes sociales. Es posible que esto le desconcierte y somos conscientes de ello, sobre todo teniendo en cuenta el momento actual. Por eso aprovechamos este capítulo para sensibilizarle sobre la información depositada en las redes sociales y el uso que se puede hacer de ella. En el capítulo siguiente conoceremos los algoritmos de aprendizaje no supervisado, ¿su...