Introducción
Contenido
- 1 Introducción
- 2 Tokenización
- 3 Lematización
- 4 Etiquetado de partes del discurso (POS)
- 5 Convertir texto en singular y plural
- 6 Extracción de frases sustantivas
- 7 Obtener palabras y recuentos de frases
- 8 Conversión a mayúsculas y minúsculas
- 9 Encontrar N-gramos
- 10 Correcciones ortográficas
- 11 Traducción de idiomas
- 12 Clasificación de texto
- 13 Análisis de los sentimientos
- 14 Conclusió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 TextBlob
objeto de la textblob
biblioteca, pasarle el documento que desea convertir en token y luego usar los atributos sentences
y words
para obtener las oraciones y atributos tokenizados. Veamos esto en acción:
El primer paso es importar el TextBlob
objeto:
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 TextBlob
clase. 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 sentences
atributo:
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 words
atributo 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 Word
objeto de la textblob
biblioteca, pasarle la palabra que desea lematizar y luego llamar al lemmatize
mé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 lemmatize
mé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.
Te puede interesar:Distancia de Levenshtein y similitud de texto en PythonPara encontrar etiquetas POS para las palabras en un documento, todo lo que tiene que hacer es usar el tags
atributo 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 pluralize
y 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 singularize
mé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_phrase
atributos del TextBlob
objeto. 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 len
método incorporado de Python para contar el número de oraciones, palabras y frases nominales devueltas por el TextBlob
objeto. 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_counts
lista del TextBlob
objeto.
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 count
método en el words
atributo 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 True
como el valor del case_sensitive
pará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.
Te puede interesar:Análisis de las tendencias de compra del Black Friday a través del Machine Learningtext_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 ngrams
método del TextBlob
objeto. 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 correct
método del TextBlob
objeto, 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 TextBlob
objeto y luego llamar al translate
mé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 TextBlob
objeto. A continuación, llamamos al translate
método en el objeto y pasamos el código de idioma en
al to
parámetro. El código de idioma en
corresponde 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_language
mé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 .
Te puede interesar:La biblioteca matemática de PythonClasificació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_data
y lo evaluaremos en test_data
. Para hacerlo, usaremos la NaiveBayesClassifier
clase de la textblob.classifiers
biblioteca. 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 NaiveBayesClassifier
clase. 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 classify
mé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á neg
en la salida.
Del mismo modo, el siguiente script volverá pos
ya que la revisión es positiva.
print(classifier.classify("It's a fantastic series"))
También puede hacer una predicción pasando nuestro classifier
al classifier
parámetro del TextBlob
objeto. Luego debe llamar al classify
método en el TextBlob
objeto 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 accuracy
método en su clasificador y páselo al test_data
que 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_features
se 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:
Te puede interesar:Trabajando con PostgreSQL en Pythonimport 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 head
mé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 sentiment
atributo del TextBlog
objeto. El sentiment
objeto 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.
Te puede interesar:Transformaciones afines de imágenes en Python con Numpy, Pillow y OpenCVTracemos 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 excellent
y 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.
Te puede interesar:Introducción a los decoradores de Python