En esta serie de artículos, pretendemos poner a esta tecnología (también llamada Sentiment Analysis, Opinion Extraction o Appraisal theory) en 'su sitio'.

Medios De Comunicación Social, Personales

Antes de introducir las piedras técnicas y desmitificar algunas percepciones al respecto de la tecnología, se hace necesario introducir los siguientes conceptos:

  1. Subjetividad de un texto: Es una medida de la carga emocional del autor de un texto. Así, por ejemplo: 'Coca-cola es una compañía americana' se considera una mención (no hay subjetividad), mientras que 'Coca-cola me parece un buen refresco' se considera una opinión. Es importante señalar que la subjetividad siempre es de un sujeto (el emisor) a un objeto (el receptor), y nos podemos encontrar con textos subjetivos respecto a una compañía y objetivos respecto a otra: "El otro día fui al Mercadona de mi barrio y me compré un exquisito jamón Bernardo Hernández".
  2. Polaridad de una opinión: Otra medida: cuantifica la negatividad/positividad de una opinión respecto a una entidad: "Coca-cola es demasiado cara" (polaridad negativa) vs "Coca-cola me encanta" (polaridad positiva)
  3. Sistema automático de clasificación de opiniones: Consta de dos etapas: detector de subjetividad y detector de polaridad
  4. Precisión de un sistema automático de clasificación de opiniones:

Introducido el problema(1 y 2), su solución (3) y su medida de éxito (4), podemos proceder a desmitificar las siguientes asunciones académicas/comerciales:

Ficción número 1: El aprendizaje automático (machine learning) es la herramienta ideal para atacar el problema de la detección de polaridad de una opinión.

No es cierto. Es un tema con el que se siguen pegando en las universidades. El aprendizaje automático funciona bien, en general,cuando contamos con una gran muestra de ejemplos clasificados a mano y cuando las características sobre las que se entrena son estadísticamente independientes una de otra. El modelo común con el que se parte en este caso es el de 'bag-of-words': Es decir, el input al clasificador automático son las palabras del texto ('tokens'), sin ningún orden, simplemente con el peso asociado a cada token correspondiente a su frecuencia de aparición. El problema es sutil, pero con un ejemplo se entiende bien:

  1. "No me gusta Coca-cola". La entrada al clasificador es el vector ['No','me','gusta'] (eliminamos la entidad para no sesgar el entrenamiento).
  2. "Me gusta Coca-cola". La entrada al clasificador es el vector ['me', 'gusta'].
  3. "Me gusta Coca-cola pero no tengo sed hoy". La entrada al clasificador es ['me', 'gusta','pero','no','tengo','sed','hoy'].

A pesar de que 1) es negativa, 2) positiva y 3) positiva:

Realmente, la lógica nos hace pensar que no debemos usar como características los tokens, sino las secuencias 'no_me_gusta' y 'me_gusta'. Esta aproximación se denomina clasificación de 'N-gramas' [1], pero una vez más, nos encontramos con algunas trampas:

Tras unos buenos tortazos iniciales, en los que nunca conseguíamos una precisión superior al 60% (sin n-gramas y con n-gramas de ventana variable y fija), en Paradigma decidimos usar máquinas de estados y gramáticas que 'entendieran' el papel sintáctico de cada token y así conocer 'dónde debemos recortar' la opinión, de manera 100% acoplada a cada caso particular.

El fondo del problema es que, para tareas de clasificación compleja y dependiente de las secuencias de entrada, el trabajo humano inicial que alimenta a un clasificador automático debe ser lo más completo y exhaustivo posible; y una extracción automática de tokens, no resuelve el problema, así como tampoco la generación de N-gramas.

Con los nuevos modelos basados en gramáticas, saltamos de un 60% a un mínimo de un 80%, que como se verá más adelante, y por varios motivos, está muy cercano al techo tecnológico o incluso perceptual.

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.