A medida que el avance nos permite darle una mayor inteligencia a los sistemas que implementamos, para que el uso sea más natural, nos encontramos con diversas características que nos gustaría desarrollar. Sin duda, una de estas características es la posibilidad de analizar una frase y determinar si es positiva, negativa o neutral.

Por supuesto, que este análisis de información tiene muchas implicaciones, entre ellas cuestiones culturales, de idioma, expresiones regionales, etc. No existe un algoritmo que de forma determinista pueda dar ese resultado. Incluso no podría reconocer aspectos del lenguaje, como la ironía.

Existen distintas alternativas para resolver este problema e implementar estas capacidades en nuestros sistemas.

Existe un API de Machine Learning que permite resolver este problema, sin embargo actualmente solo tiene soporte para Ingles, por lo cual debemos resolver este problema sin utilizar este API.

En este artículo primero vamos a ver como utilizar el API para análisis sentimental de Azure Machine Learning y posteriormente como podemos resolver este problema para realizar un análisis sentimental en español:

Para poder comenzar a utilizar este servicio, primero debemos ingresar al siguiente link para crear una instancia de la API:

http://go.microsoft.com/fwlink/?LinkID=761108

image

Una vez creada la instancia de la API tendremos acceso a una Key para poder utilizar el servicio.

Como datos de ejemplo utilizaremos el siguiente registro en donde tenemos 3 frases distintas que deseamos analizar:

  1. hello world
  2. hello foo world
  3. hello my world

image

En el primer escenario se solicitan analizar las palabras claves de la oración:

image

En el segundo escenario se solicita analizar el idioma en que se encuentra la frase:

image

En el tercer escenario se solicita hacer un análisis sentimental de la frase:

image

Como resultado de ejecución se obtiene:

image

Ahora bien, si queremos realizar un análisis sentimental en español, este servicio aún no está preparado.

En el siguiente link podrán encontrar un experimento para realizar en machinen lerarning análisis sentimental. Este experimento requiere ser entrenado con una base de tweets precalificados sentimentalmente.

https://gallery.cortanaintelligence.com/Experiment/Binary-Classification-Twitter-sentiment-analysis-4

image

Por supuesto, mientras mayor sea la base calificada mayor precisión tendrá el algoritmo. La base de datos que se utilizará para entrenar a este experimento en un pequeño porcentaje de la base generada en sentiment140.

El problema que tenemos al utilizar este experimento para realizar análisis sentimental en español, es que la base se encuentra en ingles y esta es la parte más importante para que el análisis funcione correctamente.

Lo ideal, es contar con tweets generados por culturas de habla hispana y que sean calificados sentimentalmente por personas de esa misma cultura. Por distintos motivos esto representa un gran esfuerzo humano. Inicialmente lo que podemos hacer es traducir la base de entrenamiento utilizada para el experimento.

Esa tarea la he realizado utilizando tanto bing como google translate. Les comparto los resultado para que puedan utilizar el experimento con una base en español:

https://maxmvpstorage.blob.core.windows.net/max/tweet_translated.txt

También se puede solicitar acceso al uso del corpus del TASS, aunque hay que solicitar permiso y tienen algunas limitaciones.

Realizando el mismo experimento, pero utilizando esta base de tweets que les comparto, podemos realizar el análisis semántico en español.

Por supuesto, tenemos 3 problemas principales:

  1. 160,000 frases calificadas es un número muy bajo para hacer un análisis preciso, dado que esa cantidad de frases no son representativas para algo preciso.
  2. Las frases fueron traducidas en forma automática, por lo que las palabras que se encontraban mal escritas no fueron interpretadas. Para esto se podría utilizar un diccionario online, identificar las palabras no encontradas y manualmente hacer una sanidad de la fuente de datos.
  3. La traducción automática no permite hacer una traducción precisa de como se expresaría ese concepto en español y menos aún en una cultura particular.

Sin embargo, aún con estos problemas, el ejercicio es interesante y permite realizar el análisis sentimental en español con cierta precisión.

De esta manera podemos comenzar a utilizarlo, con tweets en español. Para aquellas frases que el resultado no ha sido el correcto se puede hacer una revisión manual y posteriormente corregirlos he incorporarlos a la base de entrenamiento. De esta manera vamos incrementando la base y mejorando la calidad de la misma. El resultado a lo largo del tiempo irá mejorando en base al entrenamiento.

Ahora podemos actualizar el ejercicio del post anterior, incluyendo el sentimiento de cada frase. Nuevamente el resultado no es el más preciso, pero aún así es bastante correcto.

Actualmente está tomando algunas frases como positivas, cuando en realidad el sentido es negativo. Para estas frases lo correcto es incluirlas en la base de entrenamiento, con la calificación correspondiente, para que el algoritmo tenga una mejor precisión.

image