An谩lisis de sentimientos en Python con TextBlob

    Introducci贸n

    Las tecnolog铆as de vanguardia en PNL nos permiten analizar los lenguajes naturales en diferentes capas: desde una simple segmentaci贸n de informaci贸n textual hasta m茅todos m谩s sofisticados de categorizaci贸n de sentimientos.

    Sin embargo, no significa inevitablemente que deba ser muy avanzado en programaci贸n para implementar tareas de alto nivel como el an谩lisis de sentimientos en Python.

    An谩lisis de los sentimientos

    Los algoritmos de an谩lisis de sentimientos se centran principalmente en definir opiniones, actitudes e incluso emoticonos en un corpus de textos. La gama de sentimientos establecidos var铆a significativamente de un m茅todo a otro. Mientras que un analizador est谩ndar define hasta tres emociones polares b谩sicas (positiva, negativa, neutra), el l铆mite de los modelos m谩s avanzados es m谩s amplio.

    En consecuencia, pueden mirar m谩s all谩 de la polaridad y determinar seis emociones “universales” (por ejemplo, ira, disgusto, miedo, felicidad, tristeza y sorpresa):

     

    Fuente: Espectro de salud mental

    Adem谩s, dependiendo de la tarea en la que est茅 trabajando, tambi茅n es posible recopilar informaci贸n adicional del contexto, como el autor o un tema que, en un an谩lisis posterior, puede prevenir un problema m谩s complejo que una clasificaci贸n de polaridad com煤n, a saber, subjetividad / objetividad. identificaci贸n.

    Por ejemplo, esta frase de Business insider: “En marzo, Elon Musk describi贸 la preocupaci贸n por el brote de coronavirus como un” p谩nico “y” tonto “, y desde entonces tuite贸 informaci贸n incorrecta, como su teor铆a de que los ni帽os son” esencialmente inmunes “a el virus.” expresa la subjetividad a trav茅s de una opini贸n personal de E. Musk, as铆 como del autor del texto.

    An谩lisis de sentimientos en Python con TextBlob

    El enfoque que aplica el paquete TextBlob al an谩lisis de opiniones difiere en que se basa en reglas y, por lo tanto, requiere un conjunto predefinido de palabras categorizadas. Estas palabras pueden, por ejemplo, cargarse desde la base de datos NLTK. Adem谩s, los sentimientos se definen en funci贸n de las relaciones sem谩nticas y la frecuencia de cada palabra en una oraci贸n de entrada que permite obtener como resultado una salida m谩s precisa.

    Una vez que se logra el primer paso y un modelo de Python se alimenta con los datos de entrada necesarios, un usuario puede obtener los puntajes de sentimiento en forma de polaridad y subjetividad que se discutieron en la secci贸n anterior. Podemos ver c贸mo funciona este proceso en este art铆culo al Foro Kapadia:

    Salida de TextBlob para un polaridad la tarea es un flotador dentro del rango [-1.0, 1.0] d贸nde -1.0 es una polaridad negativa y 1.0 es positivo. Esta puntuaci贸n tambi茅n puede ser igual a 0, que representa una evaluaci贸n neutral de una declaraci贸n, ya que no contiene ninguna palabra del conjunto de entrenamiento.

    Considerando que, un subjetividad / objetividad la tarea de identificaci贸n informa un flotador dentro del rango [0.0, 1.0] d贸nde 0.0 es una oraci贸n muy objetiva y 1.0 es muy subjetivo.

    Hay varios ejemplos de interacci贸n de Python con el analizador de sentimientos TextBlob: a partir de un modelo basado en diferentes Kaggle conjuntos de datos (por ejemplo, rese帽as de pel铆culas) para calcular los sentimientos de los tweets a trav茅s de la API de Twitter.

    Pero, veamos un analizador simple que podr铆amos aplicar a una oraci贸n en particular o un texto corto. Primero comenzamos con la importaci贸n de la biblioteca TextBlob:

    # Importing TextBlob
    from textblob import TextBlob
    

    Una vez importados, cargaremos una oraci贸n para su an谩lisis y crearemos una instancia TextBlob objeto, as铆 como asignar el sentiment propiedad nuestra analysis:

    # Preparing an input sentence
    sentence=""'The platform provides universal access to the world's best education, partnering with top universities and organizations to offer courses online.'''
    
    # Creating a textblob object and assigning the sentiment property
    analysis = TextBlob(sentence).sentiment
    print(analysis)
    

    los sentiment la propiedad es una namedtuple de la forma Sentiment(polarity, subjectivity).

    Donde el resultado esperado del an谩lisis es:

    Sentiment(polarity=0.5, subjectivity=0.26666666666666666)
    

    Adem谩s, tambi茅n es posible buscar resultados de polaridad o subjetividad por separado simplemente ejecutando lo siguiente:

    from textblob import TextBlob
    
    # Preparing an input sentence
    sentence=""'The platform provides universal access to the world's best education, partnering with top universities and organizations to offer courses online.'''
    
    analysisPol = TextBlob(sentence).polarity
    analysisSub = TextBlob(sentence).subjectivity
    
    print(analysisPol)
    print(analysisSub)
    

    Lo que nos dar铆a la salida:

    0.5
    0.26666666666666666
    

    Una de las mejores cosas de TextBlob es que permite al usuario elegir un algoritmo para la implementaci贸n de las tareas de PNL de alto nivel:

    • PatternAnalyzer – un clasificador predeterminado que se basa en la biblioteca de patrones
    • NaiveBayesAnalyzer – un modelo NLTK entrenado en un corpus de rese帽as de pel铆culas

    Para cambiar la configuraci贸n predeterminada, simplemente especificaremos un NaiveBayes analizador en el c贸digo. Ejecutemos un an谩lisis de sentimiento en tweets directamente desde Gorjeo:

    from textblob import TextBlob
    # For parsing tweets
    import tweepy 
    
    # Importing the NaiveBayesAnalyzer classifier from NLTK
    from textblob.sentiments import NaiveBayesAnalyzer
    

    Despu茅s de eso, necesitamos establecer una conexi贸n con la API de Twitter a trav茅s de claves API (que puede obtener a trav茅s de un cuenta de desarrollador):

    # Uploading api keys and tokens
    api_key = 'XXXXXXXXXXXXXXX'
    api_secret="XXXXXXXXXXXXXXX"
    access_token = 'XXXXXXXXXXXXXXX'
    access_secret="XXXXXXXXXXXXXXX"
    
    # Establishing the connection
    twitter = tweepy.OAuthHandler(api_key, api_secret)
    api = tweepy.API(twitter)
    

    Ahora, podemos realizar el an谩lisis de tweets sobre cualquier tema. Una palabra buscada (por ejemplo, bloqueo) puede ser una palabra o m谩s. Adem谩s, esta tarea puede llevar mucho tiempo debido a la enorme cantidad de tweets. Se recomienda limitar la salida:

    # This command will call back 5 tweets within a 鈥渓ockdown鈥 topic
    corpus_tweets = api.search("lockdown", count=5) 
    for tweet in corpus_tweets:
        print(tweet.text)
    

    El resultado de este 煤ltimo fragmento de c贸digo traer谩 cinco tweets que mencionan la palabra buscada de la siguiente forma:

    [email聽protected]: How Asia's densest slum contained the virus and the economic catastrophe that stares at the hardworking slum population...
    

    El 煤ltimo paso en este ejemplo es cambiar el modelo predeterminado al analizador NLTK que devuelve sus resultados como un namedtuple de la forma: Sentiment(classification, p_pos, p_neg):

    # Applying the NaiveBayesAnalyzer
    blob_object = TextBlob(tweet.text, analyzer=NaiveBayesAnalyzer())
    # Running sentiment analysis
    analysis = blob_object.sentiment
    print(analysis)
    

    Finalmente, nuestro modelo de Python nos dar谩 la siguiente evaluaci贸n de sentimiento:

    Sentiment(classification='pos', p_pos=0.5057908299783777, p_neg=0.49420917002162196)
    

    Aqu铆, lo clasifica como un sentimiento positivo, con el p_pos y p_neg los valores son ~0.5 cada.

    Conclusi贸n

    En este art铆culo, hemos cubierto qu茅 es el an谩lisis de sentimientos, despu茅s de lo cual hemos utilizado la biblioteca TextBlob para realizar el an谩lisis de sentimientos en oraciones importadas, as铆 como en tweets.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *