Python para PNL: Introducción a la biblioteca TextBlob

P

Introducción

Este es el séptimo artículo de mi serie de artículos sobre Python para PNL. En mi artículo anterior, expliqué cómo realizar el modelado de temas utilizando la asignación de Dirichlet latente y la factorización de matriz no negativa . Usamos la biblioteca Scikit-Learn para realizar el modelado de temas.

En este artículo, exploraremos TextBlob , que es otra biblioteca de PNL extremadamente poderosa para Python. TextBlob se basa en NLTK y proporciona una interfaz fácil de usar para la biblioteca NLTK. Veremos cómo se puede usar TextBlob para realizar una variedad de tareas de PNL que van desde el etiquetado de las partes del discurso hasta el análisis de sentimientos y la traducción de idiomas a la clasificación de texto.

Las instrucciones detalladas de descarga de la biblioteca se pueden encontrar en el enlace oficial . Le sugiero que instale la biblioteca TextBlob, así como los corpus de muestra.

Aquí está la esencia de las instrucciones vinculadas anteriormente, pero asegúrese de consultar la documentación oficial para obtener más instrucciones sobre la instalación si la necesita:

$ pip install -U textblob

Y para instalar los corpora:

$ python -m textblob.download_corpora

Veamos ahora las diferentes funcionalidades de la biblioteca TextBlob.

Tokenización

La tokenización se refiere a dividir un párrafo grande en oraciones o palabras. Normalmente, un token se refiere a una palabra en un documento de texto. La tokenización es bastante sencilla con TextBlob. Todo lo que tiene que hacer es importar el TextBlobobjeto de la textblobbiblioteca, pasarle el documento que desea convertir en token y luego usar los atributos sentencesy wordspara obtener las oraciones y atributos tokenizados. Veamos esto en acción:

El primer paso es importar el TextBlobobjeto:

from textblob import TextBlob

A continuación, debe definir una cadena que contenga el texto del documento. Crearemos una cadena que contenga el primer párrafo del artículo de Wikipedia sobre inteligencia artificial.

document = ("In computer science, artificial intelligence (AI), 
            sometimes called machine intelligence, is intelligence 
            demonstrated by machines, in contrast to the natural intelligence 
            displayed by humans and animals. Computer science defines AI 
            research as the study of "intelligent agents": any device that 
            perceives its environment and takes actions that maximize its
            chance of successfully achieving its goals.[1] Colloquially,
            the term "artificial intelligence" is used to describe machines
            that mimic "cognitive" functions that humans associate with other
            human minds, such as "learning" and "problem solving".[2]")

El siguiente paso es pasar este documento como parámetro a la TextBlobclase. El objeto devuelto se puede usar para convertir el documento en palabras y oraciones.

text_blob_object = TextBlob(document)

Ahora, para obtener las oraciones tokenizadas, podemos usar el sentencesatributo:

document_sentence = text_blob_object.sentences

print(document_sentence)
print(len(document_sentence))

En la salida, verá las oraciones tokenizadas junto con el número de oraciones.

[Sentence("In computer science, artificial intelligence (AI),             sometimes called machine intelligence, is intelligence             demonstrated by machines, in contrast to the natural intelligence             displayed by humans and animals."), Sentence("Computer science defines AI             research as the study of "intelligent agents": any device that             perceives its environment and takes actions that maximize its            chance of successfully achieving its goals."), Sentence("[1] Colloquially,            the term "artificial intelligence" is used to describe machines            that mimic "cognitive" functions that humans associate with other            human minds, such as "learning" and "problem solving"."), Sentence("[2]")]
4

De manera similar, el wordsatributo devuelve las palabras tokenizadas en el documento.

document_words = text_blob_object.words

print(document_words)
print(len(document_words))

La salida se ve así:

['In', 'computer', 'science', 'artificial', 'intelligence', 'AI', 'sometimes', 'called', 'machine', 'intelligence', 'is', 'intelligence', 'demonstrated', 'by', 'machines', 'in', 'contrast', 'to', 'the', 'natural', 'intelligence', 'displayed', 'by', 'humans', 'and', 'animals', 'Computer', 'science', 'defines', 'AI', 'research', 'as', 'the', 'study', 'of', 'intelligent', 'agents', 'any', 'device', 'that', 'perceives', 'its', 'environment', 'and', 'takes', 'actions', 'that', 'maximize', 'its', 'chance', 'of', 'successfully', 'achieving', 'its', 'goals', '1', 'Colloquially', 'the', 'term', 'artificial', 'intelligence', 'is', 'used', 'to', 'describe', 'machines', 'that', 'mimic', 'cognitive', 'functions', 'that', 'humans', 'associate', 'with', 'other', 'human', 'minds', 'such', 'as', 'learning', 'and', 'problem', 'solving', '2']
84

Lematización

La lematización se refiere a reducir la palabra a su forma raíz como se encuentra en un diccionario.

Para realizar la lematización a través de TextBlob, debe usar el Wordobjeto de la textblobbiblioteca, pasarle la palabra que desea lematizar y luego llamar al lemmatizemétodo.

from textblob import Word

word1 = Word("apples")
print("apples:", word1.lemmatize())

word2 = Word("media")
print("media:", word2.lemmatize())

word3 = Word("greater")
print("greater:", word3.lemmatize("a"))

En la secuencia de comandos anterior, realizamos lematización de las palabras “manzanas”, “medios” y “mayores”. En la salida, verá las palabras “manzana” (que es singular para la manzana), “medio” (que es singular para el medio) y “grande” (que es el grado positivo de la palabra mayor). Observe que para la palabra mayor, pasamos “a” como parámetro al lemmatizemétodo. Esto le dice específicamente al método que la palabra debe tratarse como un adjetivo. De forma predeterminada, el lemmatize()método trata las palabras como sustantivos . La lista completa de las partes de los componentes del discurso es la siguiente:

ADJ, ADJ_SAT, ADV, NOUN, VERB = 'a', 's', 'r', 'n', 'v'

Etiquetado de partes del discurso (POS)

Al igual que las bibliotecas spaCy y NLTK, la biblioteca TextBlob también contiene funcionalidades para el etiquetado POS.

Para encontrar etiquetas POS para las palabras en un documento, todo lo que tiene que hacer es usar el tagsatributo como se muestra a continuación:

for word, pos in text_blob_object.tags:
    print(word + " => " + pos)

En el guión de arriba, imprima las etiquetas de todas las palabras del primer párrafo del artículo de Wikipedia sobre Inteligencia Artificial. La salida del script anterior se ve así:

“ `
En => IN
computadora => NN
ciencia => NN
artificial =>
inteligencia JJ => NN
AI => NNP a
veces => RB
llamado =>
máquina VBD =>
inteligencia NN => NN
es =>
inteligencia VBZ => NN
demostrado => VBN
por => IN
máquinas => NNS
en => EN
contraste => NN
a => TO
el => DT
natural =>
inteligencia JJ => NN
mostrado => VBN
por => IN
humanos => NNS
y => CC
animales =>
Computadora NNS =>
Ciencia NNP => NN
define => NNS
AI =>
Investigación NNP => NN
as => IN
el =>
estudio DT => NN
de => IN
inteligente =>
agentes JJ => NNS
cualquiera =>
dispositivo DT => NN
que => WDT
percibe => VBZ
su => PRP $
entorno => NN
y => CC
toma =>
Acciones de VBZ => NNS
que => IN
maximizar => VB
its => PRP $
chance => NN
de => IN
exitosamente => RB
logrando => VBG
its => PRP $
metas => NNS
[=> RB
1 => CD
] => NNP
Coloquialmente => NNP
el =>
término DT => NN
artificial =>
inteligencia JJ => NN
es =>VBZ
utilizado => VBN
a => TO
describir =>
máquinas VB => NNS
que => IN
mímica => JJ
cognitivo =>
funciones JJ => NNS
que => WDT
humanos => NNS
asociado => VBP
con => EN
otro => JJ
humano => JJ
mentes = > NNS
tal => JJ
como => IN
aprendizaje => VBG
y =>
Problema CC => NN
resolviendo => NN
[=> RB
2 => CD
] => NNS

Las etiquetas POS se han impreso en forma abreviada. Para ver la forma completa de cada abreviatura, consulte este enlace .

Convertir texto en singular y plural

TextBlob también le permite convertir texto en forma plural o singular usando los métodos pluralizey singularize, respectivamente. Mira el siguiente ejemplo:

text = ("Football is a good game. It has many health benefit")
text_blob_object = TextBlob(text)
print(text_blob_object.words.pluralize())

En la salida, verá el plural de todas las palabras:

['Footballs', 'iss', 'some', 'goods', 'games', 'Its', 'hass', 'manies', 'healths', 'benefits']

De manera similar, para singularizar palabras, puede usar el singularizemétodo de la siguiente manera:

text = ("Footballs is a goods games. Its has many healths benefits")

text_blob_object = TextBlob(text)
print(text_blob_object.words.singularize())

La salida del script anterior se ve así:

['Football', 'is', 'a', 'good', 'game', 'It', 'ha', 'many', 'health', 'benefit']

Extracción de frases sustantivas

La extracción de frases sustantivas, como su nombre indica, se refiere a la extracción de frases que contienen sustantivos. Busquemos todas las frases nominales en el primer párrafo del artículo de Wikipedia sobre inteligencia artificial que usamos anteriormente.

Para encontrar frases nominales, simplemente tiene que usar los noun_phraseatributos del TextBlobobjeto. Mira el siguiente ejemplo:

text_blob_object = TextBlob(document)
for noun_phrase in text_blob_object.noun_phrases:
    print(noun_phrase)

La salida se ve así:

computer science
artificial intelligence
ai
machine intelligence
natural intelligence
computer
science defines
ai
intelligent agents
colloquially
artificial intelligence
describe machines
human minds

Puede ver todas las frases nominales en nuestro documento.

Obtener palabras y recuentos de frases

En una sección anterior, usamos el lenmétodo incorporado de Python para contar el número de oraciones, palabras y frases nominales devueltas por el TextBlobobjeto. Podemos usar los métodos integrados de TextBlob para el mismo propósito.

Para encontrar la frecuencia de aparición de una palabra en particular, tenemos que pasar el nombre de la palabra como índice a la word_countslista del TextBlobobjeto.

En el siguiente ejemplo, contaremos el número de instancias de la palabra “inteligencia” en el primer párrafo del artículo de Wikipedia sobre Inteligencia Artificial.

text_blob_object = TextBlob(document)
text_blob_object.word_counts['intelligence']

Otra forma es simplemente llamar al countmétodo en el wordsatributo y pasar el nombre de la palabra cuya frecuencia de ocurrencia se encuentra como se muestra a continuación:

text_blob_object.words.count('intelligence')

Es importante mencionar que por defecto la búsqueda no distingue entre mayúsculas y minúsculas. Si desea que su búsqueda distinga entre mayúsculas y minúsculas, debe pasar Truecomo el valor del case_sensitiveparámetro, como se muestra a continuación:

text_blob_object.words.count('intelligence', case_sensitive=True)

Al igual que el recuento de palabras, las frases nominales también se pueden contar de la misma forma. El siguiente ejemplo encuentra la frase “inteligencia artificial” en el párrafo.

text_blob_object = TextBlob(document)
text_blob_object.noun_phrases.count('artificial intelligence')

En la salida, verá 2.

Conversión a mayúsculas y minúsculas

Los objetos TextBlob son muy similares a las cadenas. Puede convertirlos a mayúsculas o minúsculas, cambiar sus valores y concatenarlos también. En el siguiente script, convertimos el texto del objeto TextBlob a mayúsculas:

text = "I love to watch football, but I have never played it"
text_blob_object = TextBlob(text)

print(text_blob_object.upper())

En la salida, tendrá la cadena en mayúsculas:

I LOVE TO WATCH FOOTBALL, BUT I HAVE NEVER PLAYED IT

De manera similar, para convertir el texto a minúsculas, podemos usar el lower()método que se muestra a continuación:

text = "I LOVE TO WATCH FOOTBALL, BUT I HAVE NEVER PLAYED IT"
text_blob_object = TextBlob(text)

print(text_blob_object.lower())

Encontrar N-gramos

N-gramos se refiere a n combinaciones de palabras en una oración. Por ejemplo, para una oración “Me encanta ver fútbol”, unos 2 gramos serían (me encanta), (me encanta mirar) y (ver fútbol). Los N-Grams pueden desempeñar un papel crucial en la clasificación de textos.

En TextBlob, los N-gramos se pueden encontrar pasando el número de N-gramos al ngramsmétodo del TextBlobobjeto. Mira el siguiente ejemplo:

text = "I love to watch football, but I have never played it"
text_blob_object = TextBlob(text)
for ngram in text_blob_object.ngrams(2):
    print(ngram)

La salida del script se ve así:

['I', 'love']
['love', 'to']
['to', 'watch']
['watch', 'football']
['football', 'but']
['but', 'I']
['I', 'have']
['have', 'never']
['never', 'played']
['played', 'it']

Esto es especialmente útil cuando se entrena modelos de lenguaje o se hace cualquier tipo de predicción de texto.

Correcciones ortográficas

La corrección ortográfica es una de las funcionalidades únicas de la biblioteca TextBlob. Con el correctmétodo del TextBlobobjeto, puede corregir todos los errores ortográficos en su texto. Mira el siguiente ejemplo:

text = "I love to watchf footbal, but I have neter played it"
text_blob_object = TextBlob(text)

print(text_blob_object.correct())

En el guión anterior cometimos tres errores ortográficos: “watchf” en lugar de “watch”, “footbal” en lugar de “football”, “neter” en lugar de “never”. En el resultado, verá que TextBlob ha corregido estos errores, como se muestra a continuación:

I love to watch football, but I have never played it

Traducción de idiomas

Una de las capacidades más poderosas de la biblioteca TextBlob es traducir de un idioma a otro. En el backend, el traductor de idiomas TextBlob utiliza la API de Google Translate

Para traducir de un idioma a otro, simplemente tiene que pasar el texto al TextBlobobjeto y luego llamar al translatemétodo en el objeto. El código de idioma para el idioma al que desea que se traduzca su texto se pasa como parámetro al método. Echemos un vistazo a un ejemplo:

text_blob_object_french = TextBlob(u'Salut comment allez-vous?')
print(text_blob_object_french.translate(to='en'))

En el guión anterior, pasamos una oración en francés al TextBlobobjeto. A continuación, llamamos al translatemétodo en el objeto y pasamos el código de idioma enal toparámetro. El código de idioma encorresponde al idioma inglés. En el resultado, verá la traducción de la oración en francés como se muestra a continuación:

Hi, how are you?

Tomemos otro ejemplo donde traduciremos del árabe al inglés:

text_blob_object_arabic = TextBlob(u'مرحبا كيف حالك؟')
print(text_blob_object_arabic.translate(to='en'))

Salida:

Hi, how are you?

Finalmente, utilizando el detect_languagemétodo, también puede detectar el idioma de la oración. Mira el siguiente guión:

text_blob_object = TextBlob(u'Hola como estas?')
print(text_blob_object.detect_language())

En la salida, verá es, que representa el idioma español.

El código de idioma para todos los idiomas se puede encontrar en este enlace .

Clasificación de texto

TextBlob también proporciona capacidades básicas de clasificación de texto. Sin embargo, no recomendaría TextBlob para la clasificación de texto debido a sus capacidades limitadas, sin embargo, si tiene datos realmente limitados y desea desarrollar rápidamente un modelo de clasificación de texto muy básico, entonces puede usar TextBlob. Para modelos avanzados, recomendaría bibliotecas de Machine Learning como Scikit-Learn o Tensorflow.

Veamos cómo podemos realizar la clasificación de texto con TextBlob. Lo primero que necesitamos es un conjunto de datos de entrenamiento y datos de prueba. El modelo de clasificación se entrenará en el conjunto de datos de entrenamiento y se evaluará en el conjunto de datos de prueba.

Supongamos que tenemos los siguientes datos de prueba y entrenamiento:

train_data = [
    ('This is an excellent movie', 'pos'),
    ('The move was fantastic I like it', 'pos'),
    ('You should watch it, it is brilliant', 'pos'),
    ('Exceptionally good', 'pos'),
    ("Wonderfully directed and executed. I like it", 'pos'),
    ('It was very boring', 'neg'),
    ('I did not like the movie', 'neg'),
    ("The movie was horrible", 'neg'),
    ('I will not recommend', 'neg'),
    ('The acting is pathetic', 'neg')
]
test_data = [
    ('Its a fantastic series', 'pos'),
    ('Never watched such a brillent movie', 'pos'),
    ("horrible acting", 'neg'),
    ("It is a Wonderful movie", 'pos'),
    ('waste of money', 'neg'),
    ("pathetic picture", 'neg')
]

El conjunto de datos contiene algunas reseñas ficticias sobre películas. Puede ver que nuestros conjuntos de datos de entrenamiento y prueba consisten en listas de tuplas donde el primer elemento de la tupla es el texto o una oración, mientras que el segundo miembro de la tupla es la revisión o sentimiento correspondiente del texto.

Entrenaremos nuestro conjunto de datos en train_datay lo evaluaremos en test_data. Para hacerlo, usaremos la NaiveBayesClassifierclase de la textblob.classifiersbiblioteca. El siguiente script importa la biblioteca:

from textblob.classifiers import NaiveBayesClassifier

Para entrenar el modelo, simplemente tenemos que pasar los datos de entrenamiento al constructor de la NaiveBayesClassifierclase. La clase devolverá un objeto entrenado en el conjunto de datos y capaz de hacer predicciones en el conjunto de prueba.

classifier = NaiveBayesClassifier(train_data)

Primero hagamos una predicción en una sola oración. Para hacerlo, necesitamos llamar al classifymétodo y pasarle la oración. Mira el siguiente ejemplo:

print(classifier.classify("It is very boring"))

Parece una reseña negativa. Cuando ejecute el script anterior, verá negen la salida.

Del mismo modo, el siguiente script volverá posya que la revisión es positiva.

print(classifier.classify("It's a fantastic series"))

También puede hacer una predicción pasando nuestro classifieral classifierparámetro del TextBlobobjeto. Luego debe llamar al classifymétodo en el TextBlobobjeto para ver la predicción.

sentence = TextBlob("It's a fantastic series.", classifier=classifier)
print(sentence.classify())

Finalmente, para encontrar la precisión de su algoritmo en el conjunto de prueba, llame al accuracymétodo en su clasificador y páselo al test_dataque acabamos de crear. Mira el siguiente guión:

classifier.accuracy(test_data)

En la salida, verá 0.66 que es la precisión del algoritmo.

Para encontrar las características más importantes para la clasificación, show_informative_featuresse puede utilizar el método. El número de características más importantes a ver se pasa como parámetro.

classifier.show_informative_features(3)

La salida se ve así:

Most Informative Features
            contains(it) = False             neg : pos    =      2.2 : 1.0
            contains(is) = True              pos : neg    =      1.7 : 1.0
           contains(was) = True              neg : pos    =      1.7 : 1.0

En esta sección, intentamos encontrar el sentimiento de la reseña de la película utilizando la clasificación de texto. En realidad, no es necesario realizar una clasificación de texto para encontrar el sentimiento de una oración en TextBlob. La biblioteca TextBlob viene con un analizador de sentimientos incorporado que veremos en la siguiente sección.

Análisis de los sentimientos

En esta sección, analizaremos el sentimiento de las opiniones públicas sobre diferentes alimentos comprados a través de Amazon. Usaremos el analizador de sentimientos TextBlob para hacerlo.

El conjunto de datos se puede descargar desde este enlace de Kaggle .

Como primer paso, necesitamos importar el conjunto de datos. Solo importaremos los primeros 20.000 registros debido a limitaciones de memoria. Puede importar más registros si lo desea. La siguiente secuencia de comandos importa el conjunto de datos:

import pandas as pd
import numpy as np

reviews_datasets = pd.read_csv(r'E:DatasetsReviews.csv')
reviews_datasets = reviews_datasets.head(20000)
reviews_datasets.dropna()

Para ver cómo se ve nuestro conjunto de datos, usaremos el headmétodo del marco de datos de pandas:

reviews_datasets.head()

La salida se ve así:

En el resultado, puede ver que la revisión de texto sobre la comida está contenida en la columna Texto. La columna de puntuación contiene las valoraciones del usuario para el producto en particular, siendo 1 la más baja y 5 la más alta.

Veamos la distribución de la calificación:

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.distplot(reviews_datasets['Score'])

Puede ver que la mayoría de las calificaciones son muy positivas, es decir, 5. Tracemos el diagrama de barras para las calificaciones para tener una mejor visión de la cantidad de registros para cada calificación.

sns.countplot(x='Score', data=reviews_datasets)

El resultado muestra que más de la mitad de las reseñas tienen calificaciones de 5 estrellas.

Seleccionemos al azar una revisión y encontremos su polaridad usando TextBlob. Echemos un vistazo a la revisión número 350.

reviews_datasets['Text'][350]

Salida:

'These chocolate covered espresso beans are wonderful!  The chocolate is very dark and rich and the "bean" inside is a very delightful blend of flavors with just enough caffine to really give it a zing.'

Parece que la revisión es positiva. Verifiquemos esto usando la biblioteca TextBlob. Para encontrar el sentimiento, tenemos que usar el sentimentatributo del TextBlogobjeto. El sentimentobjeto devuelve una tupla que contiene la polaridad y subjetividad de la reseña.

El valor de la polaridad puede estar entre -1 y 1 donde las reseñas con polaridades negativas tienen sentimientos negativos mientras que las reseñas con polaridades positivas tienen sentimientos positivos.

El valor de subjetividad puede estar entre 0 y 1. La subjetividad cuantifica la cantidad de opinión personal e información fáctica contenida en el texto. La subjetividad más alta significa que el texto contiene opiniones personales en lugar de información fáctica.

Encontremos el sentimiento de la revisión número 350.

text_blob_object = TextBlob(reviews_datasets['Text'][350])
print(text_blob_object.sentiment)

La salida se ve así:

Sentiment(polarity=0.39666666666666667,subjectivity=0.6616666666666667)

El resultado muestra que la revisión es positiva con una alta subjetividad.

Agreguemos ahora una columna para la polaridad del sentimiento en nuestro conjunto de datos. Ejecute el siguiente script:

def find_pol(review):
    return TextBlob(review).sentiment.polarity

reviews_datasets['Sentiment_Polarity'] = reviews_datasets['Text'].apply(find_pol)
reviews_datasets.head()

Ahora veamos la distribución de polaridad en nuestro conjunto de datos. Ejecute el siguiente script:

sns.distplot(reviews_datasets['Sentiment_Polarity'])

La salida del script anterior se ve así:

Es evidente a partir de la figura anterior que la mayoría de las revisiones son positivas y tienen una polaridad entre 0 y 0,5. Esto es natural ya que la mayoría de las revisiones en el conjunto de datos tienen calificaciones de 5 estrellas.

Tracemos ahora la polaridad promedio para cada calificación de puntuación.

sns.barplot(x='Score', y='Sentiment_Polarity', data=reviews_datasets)

Salida:

El resultado muestra claramente que las revisiones con puntuaciones altas tienen polaridades positivas altas.

Veamos ahora algunas de las reseñas más negativas, es decir, las reseñas con un valor de polaridad de -1.

most_negative = reviews_datasets[reviews_datasets.Sentiment_Polarity == -1].Text.head()
print(most_negative)

La salida se ve así:

545     These chips are nasty.  I thought someone had ...
1083    All my fault. I thought this would be a carton...
1832    Pop Chips are basically a horribly over-priced...
2087    I do not consider Gingerbread, Spicy Eggnog, C...
2763    This popcorn has alot of hulls I order 4 bags ...
Name: Text, dtype: object

Imprimamos el valor de la revisión número 545.

reviews_datasets['Text'][545]

En la salida, verá la siguiente revisión:

'These chips are nasty.  I thought someone had spilled a drink in the bag, no the chips were just soaked with grease.  Nasty!!'

El resultado muestra claramente que la revisión es muy negativa.

Veamos ahora algunas de las críticas más positivas. Ejecute el siguiente script:

most_positive = reviews_datasets[reviews_datasets.Sentiment_Polarity == 1].Text.head()
print(most_positive)

La salida se ve así:

106     not what I was expecting in terms of the compa...
223     This is an excellent tea.  One of the best I h...
338     I like a lot of sesame oil and use it in salad...
796     My mother and father were the recipient of the...
1031    The Kelloggs Muselix are delicious and the del...
Name: Text, dtype: object

Veamos la revisión 106 en detalle:

reviews_datasets['Text'][106]

Salida:

"not what I was expecting in terms of the company's reputation for excellent home delivery products"

Puede ver que aunque la revisión no fue muy positiva, se le ha asignado una polaridad de 1 debido a la presencia de palabras como excellenty reputation. Es importante saber que el analizador de sentimientos no es 100% a prueba de errores y puede predecir sentimientos incorrectos en algunos casos, como el que acabamos de ver.

Veamos ahora la revisión número 223 que también se ha marcado como positiva.

reviews_datasets['Text'][223]

La salida se ve así:

"This is an excellent tea.  One of the best I have ever had.  It is especially great when you prepare it with a samovar."

El resultado muestra claramente que la revisión es muy positiva.

Conclusión

La biblioteca TextBlob de Python es una de las bibliotecas de procesamiento de lenguaje natural más famosas y ampliamente utilizadas. Este artículo explica en detalle varias funcionalidades de la biblioteca TextBlob, como tokenización, derivación, análisis de sentimientos, clasificación de texto y traducción de idiomas.

En el próximo artículo repasaré la biblioteca de patrones, que proporciona muchas funciones realmente útiles para determinar atributos sobre oraciones, así como herramientas para recuperar datos de redes sociales, Wikipedia y motores de búsqueda.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad