¿Cómo se calcula el análisis de sentimiento en blob

Uso lo siguiente para calcular el sentimiento de 200 oraciones cortas. No utilicé un conjunto de datos de entrenamiento:

for sentence in textblob.sentences: print(sentence.sentiment)

El análisis devuelve dos valores: polaridad y subjetividad. Por lo que leo en línea, la puntuación de polaridad es una flotación dentro del rango [-1.0, 1.0] donde 0 indica neutral, +1 una actitud muy positiva y -1 una actitud muy negativa. La subjetividad es una flotación dentro del rango [0.0, 1.0] donde 0.0 es muy objective y 1.0 es muy subjetivo.

Entonces, ahora mi pregunta: ¿Cómo se calculan esas puntuaciones?

Tengo algunos ceros para la puntuación de polaridad de casi la mitad de las frases y me pregunto si el cero indica neutralidad o, más bien, el hecho de que la frase no presente palabras que tengan una polaridad. Me estoy preguntando la misma pregunta para otro analizador de sentimientos: NaiveBayesAnalyzer.

¡Gracias por tu ayuda!
Marie

El TextBlob NaiveBayesAnalyzer se basa aparentemente en el Stanford NLTK. El algoritmo de Naive Bayes en general se explica aquí: Una explicación simple de la Clasificación de Naive Bayes

y su aplicación al sentimiento y la objetividad se describe aquí: http://nlp.stanford.edu/courses/cs224n/2009/fp/24.pdf

Básicamente, tienes razón en que ciertas palabras se etiquetarán como “40% positivo / 60% negativo” en función de cómo se usaron en algún conjunto de datos de entrenamiento (para el Stanford NLTK, los datos de entrenamiento fueron críticas de películas). Luego, las puntuaciones de todas las palabras en su oración se multiplican para producir la puntuación de la oración.

No lo he probado, pero espero que si la biblioteca devuelve exactamente 0.0, entonces su oración no contenía ninguna palabra que tuviera una polaridad en el conjunto de entrenamiento NLTK. Sospecho que los investigadores no los incluyeron porque 1) eran demasiado raros en los datos de entrenamiento o 2) se sabía que carecían de significado (como “el”, “a”, “y”, etc.).

Eso va por el analizador Naive Bayes. Con respecto al PatternAnalyzer, los documentos de TextBlob dicen que está basado en la biblioteca de “patrones”, pero no parece documentar cómo funciona. Sin embargo, sospecho que algo similar está sucediendo.