Python para NLP: Introducción a la biblioteca TextBlob

Introducción

Este es el séptimo artículo de mi serie de artículos sobre Python para la 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 . Utilizamos 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 partes del habla hasta el análisis de sentimientos, y la traducción de idiomas a la clasificación de textos.
Las instrucciones de descarga detalladas para la biblioteca se pueden encontrar en el enlace oficial . Le sugiero que instale la biblioteca TextBlob, así como los cuerpos de muestra.
Aquí está el resumen 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 corpus:
$ python -m textblob.download_corpora
Veamos ahora las diferentes funcionalidades de la biblioteca TextBlob.

Tokenización

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 tokenizar, y luego usar los atributos sentenceswordspara 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 un 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 en token, podemos usar el sentencesatributo:
document_sentence = text_blob_object.sentences

print(document_sentence)  
print(len(document_sentence))  
En la salida, verás las oraciones con token 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  
Del mismo modo, el wordsatributo devuelve las palabras en token 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  

Lemmatización

Lemmatización se refiere a reducir la palabra a su forma de 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 mematizar 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 el guión anterior, realizamos la lematización de las palabras "manzanas", "medios" y "mayor". 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 para 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 ser tratada como un adjetivo. Por defecto, las palabras son tratadas como sustantivos por el lemmatize()método. La lista completa de las partes de los componentes del habla es la siguiente:
ADJ, ADJ_SAT, ADV, NOUN, VERB = 'a', 's', 'r', 'n', 'v'  

Etiquetado de partes del habla (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 anterior, imprima las etiquetas de todas las palabras en el primer párrafo del artículo de Wikipedia sobre Inteligencia Artificial. La salida de la secuencia de comandos anterior se ve así:
In => IN  
computer => NN  
science => NN  
artificial => JJ  
intelligence => NN  
AI => NNP  
sometimes => RB  
called => VBD  
machine => NN  
intelligence => NN  
is => VBZ  
intelligence => NN  
demonstrated => VBN  
by => IN  
machines => NNS  
in => IN  
contrast => NN  
to => TO  
the => DT  
natural => JJ  
intelligence => NN  
displayed => VBN  
by => IN  
humans => NNS  
and => CC  
animals => NNS  
Computer => NNP  
science => NN  
defines => NNS  
AI => NNP  
research => NN  
as => IN  
the => DT  
study => NN  
of => IN  
intelligent => JJ  
agents => NNS  
any => DT  
device => NN  
that => WDT  
perceives => VBZ  
its => PRP$  
environment => NN  
and => CC  
takes => VBZ  
actions => NNS  
that => IN  
maximize => VB  
its => PRP$  
chance => NN  
of => IN  
successfully => RB  
achieving => VBG  
its => PRP$  
goals => NNS  
[ => RB
1 => CD  
] => NNP
Colloquially => NNP  
the => DT  
term => NN  
artificial => JJ  
intelligence => NN  
is => VBZ  
used => VBN  
to => TO  
describe => VB  
machines => NNS  
that => IN  
mimic => JJ  
cognitive => JJ  
functions => NNS  
that => WDT  
humans => NNS  
associate => VBP  
with => IN  
other => JJ  
human => JJ  
minds => NNS  
such => JJ  
as => IN  
learning => VBG  
and => CC  
problem => NN  
solving => 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 a singular y plural

TextBlob también le permite convertir texto en una forma plural o singular usando los métodos pluralizesingularize, 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ás el plural de todas las palabras:
['Footballs', 'iss', 'some', 'goods', 'games', 'Its', 'hass', 'manies', 'healths', 'benefits']
Del mismo modo, para singularizar palabras puedes 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 de la secuencia de comandos anterior se ve así:
['Football', 'is', 'a', 'good', 'game', 'It', 'ha', 'many', 'health', 'benefit']

Extracción de frases

La extracción de frases de nombre, como su nombre indica, se refiere a extraer frases que contienen sustantivos. Encontremos 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 en el 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  
Puedes ver todas las frases nominales en nuestro documento.

Obtención de 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 incorporados 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 aparición 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 la búsqueda distinga entre mayúsculas y minúsculas, debe pasar Trueel valor del case_sensitiveparámetro, como se muestra a continuación:
text_blob_object.words.count('intelligence', case_sensitive=True)  
Al igual que los recuentos de palabras, las frases nominales también se pueden contar de la misma manera. 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.

Convertir 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, verás 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 como 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-Grams

Los N-gramos se refieren a una combinación de palabras en una oración. Por ejemplo, para una frase "Me encanta ver fútbol", algunos 2 gramos serían (Me encanta), (Me encanta mirar) y (Ver fútbol). Los N-gramos pueden desempeñar un papel crucial en la clasificación del texto.
En TextBlob, los N-grams se pueden encontrar al pasar el número de N-Grams 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 al entrenar modelos de lenguaje o al hacer 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 de ortografía 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 de ortografía: "watchf" en lugar de "watch", "footbal" en lugar de "football", "neter" en lugar de "never". En la salida, 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 de TextBlob usa la API de Google Translate
Para traducir de un idioma a otro, simplemente debe 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 un 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 el idioma 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 la salida, 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 script:
text_blob_object = TextBlob(u'Hola como estas?')  
print(text_blob_object.detect_language())  
En la salida, verá es, que significa 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 aprendizaje automático 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 capacitará en el conjunto de datos de capacitación y se evaluará en el conjunto de datos de prueba.
Supongamos que tenemos los siguientes datos de entrenamiento y prueba:
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 revisiones 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 el sentimiento correspondiente del texto.
Entrenaremos nuestro conjunto de datos en train_datay lo evaluaremos en el test_dataPara ello, utilizaremos 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 sobre 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 crítica 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. A continuación, 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 pruebas, llame al accuracymétodo en su clasificador y páselo al test_dataque acabamos de crear. Mira el siguiente script:
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 para 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, tratamos de 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 sentimiento incorporado que veremos en la siguiente sección.

Análisis de los sentimientos

En esta sección, analizaremos el sentimiento de las revisiones públicas para diferentes alimentos comprados a través de Amazon. Usaremos el analizador de opiniones 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 restricciones de memoria. Puede importar más registros si lo desea. El siguiente script importa el conjunto de datos:
import pandas as pd  
import numpy as np

reviews_datasets = pd.read_csv(r'E:\Datasets\Reviews.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í:
Desde la salida, puede ver que la revisión de texto sobre el alimento está contenida en la columna Texto. La columna de puntuación contiene las calificaciones 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 altamente positivas, es decir, 5. Dibujemos el gráfico de barras para que las calificaciones tengan una mejor visión del número de registros para cada calificación.
sns.countplot(x='Score', data=reviews_datasets)  
La salida muestra que más de la mitad de las reseñas tienen calificaciones de 5 estrellas.
Seleccionemos aleatoriamente una revisión y encontremos su polaridad utilizando 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. Vamos a verificar esto utilizando la biblioteca TextBlob. Para encontrar el sentimiento, tenemos que usar el sentimentatributo del TextBlogobjeto. El sentimentobjeto devuelve una tupla que contiene la polaridad y la subjetividad de la revisión.
El valor de la polaridad puede estar entre -1 y 1, donde las revisiones con polaridades negativas tienen sentimientos negativos, mientras que las revisiones 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 objetiva contenida en el texto. La subjetividad más alta significa que el texto contiene una opinión personal en lugar de información objetiva.
Vamos a encontrar el sentimiento de la revisión 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)  
La salida muestra que la revisión es positiva con una alta subjetividad.
Ahora agreguemos una columna para la polaridad del sentimiento en nuestro conjunto de datos. Ejecuta 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 la polaridad en nuestro conjunto de datos. Ejecuta el siguiente script:
sns.distplot(reviews_datasets['Sentiment_Polarity'])  
La salida de la secuencia de comandos anterior se ve así:
De la figura anterior se desprende 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.
Ahora vamos a trazar la polaridad promedio para cada calificación de puntuación.
sns.barplot(x='Score', y='Sentiment_Polarity', data=reviews_datasets)  
Salida:
La salida muestra claramente que las revisiones con puntajes de calificación altos tienen polaridades positivas altas.
Veamos ahora algunas de las revisiones más negativas, es decir, las revisiones 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 del número de revisión 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!!'  
La salida muestra claramente que la revisión es altamente negativa.
Veamos ahora algunas de las críticas más positivas. Ejecuta 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 reseña 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"
Se 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 excellentreputationEs importante saber que el analizador de opiniones no está 100% a prueba de errores y podría predecir sentimientos erróneos en algunos casos, como el que acabamos de ver.
Veamos ahora el número de revisión 223 que también se ha marcado como positivo.
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 altamente positiva.

Conclusión

La biblioteca TextBlob de Python es una de las bibliotecas de procesamiento de lenguaje natural más famosas y más utilizadas. Este artículo explica varias funcionalidades de la biblioteca TextBlob, como la tokenización, la derivación, el análisis de sentimientos, la clasificación de textos y la traducción de idiomas en detalle.
En el siguiente artículo repasaré la biblioteca de patrones, que proporciona muchas funciones realmente útiles para determinar los atributos de las oraciones, así como herramientas para recuperar datos de redes sociales, Wikipedia y motores de búsqueda.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.