Skip to content

york-2015/pghumor

 
 

Repository files navigation

pgHumor: Detección de humor en tweets en idioma español

Este proyecto de grado busca saber si un tweet escrito en idioma español se trata de humor o no, aplicando técnicas supervisadas de aprendizaje automático. Fue realizado por Matías Cubero y Santiago Castro, y supervisado por Guillermo Moncecchi y Diego Garat. Por información más completa, ver el informe final.

Queremos agradecer a Diego Serra e Ignacio Acuña, que realizaron su proyecto del curso Computación de Alta Performance basado en este trabajo, supervisado por Sergio Nesmachnow, con el fin de mejorar el rendimiento del clasificador a la hora de calcular los valores de las características. Se puede ver en la etiqueta hpc-entrega. La continuación de su línea de trabajo está en la rama hpc.

Resumen

— Ayer, al salir del trabajo atropellé a un unicornio.

— No jodas, ¿tenés trabajo?

¿Qué hace gracioso a este tweet? ¿Qué es el humor? ¿Qué genera la risa? El proyecto intenta acercarse a eso. Existen teorías, pero ninguna logra ser completamente certera.

Se extrajeron 16.488 tweets de cuentas humorísticas y 22.875 de cuentas no humorísticas (noticias, frases filosóficas y curiosidades). Se realizó una aplicación web y una aplicación Android para que la gente nos dé su opinión de cuáles son humorísticos realmente. Se obtuvieron 33.531 votacinoes desde inicios del mes de setiembre de 2014 hasta finales de octubre del mismo año (¡gracias!). Resultó haber poco humor en las cuentas humorísticas:

Proporciones de humor según la gente

Se contstruyó este clasificador en base a características que buscan informalidad, determinado formato, temas que generan tensión, entre otras cosas. Utiliza técnicas como SVM, kNN, árboles de decisión y Naïve Bayes. Se logra una precisión de 83,6% y recall de 68,9% sobre el corpus construido.

Se construyó también una demo para ilustrar los resultados obtenidos.

Instalación

Las dependencias principales de este proyecto son:

  • Python 2.7 (junto con varias bibliotecas; ver el código)
  • MySQL
  • Freeling (revisión 2588 del SVN)

Configuración

Se deben cargar los dumps corpus.sql y chistesdotcom.sql

En el archivo clasificador/config/environment.py poner las credenciales de la API de Twitter y los datos para las bases de datos. Un ejemplo de este archivo es el siguiente:

# coding=utf-8
from __future__ import absolute_import, division, print_function, unicode_literals

import os

# Twitter API credentials
os.environ['CONSUMER_KEY'] = '--CONSUMER KEY--'
os.environ['CONSUMER_SECRET'] = '--CONSUMER SECRET--'
os.environ['ACCESS_KEY'] = '--ACCESS KEY--'
os.environ['ACCESS_SECRET'] = '--ACCESS SECRET--'

os.environ['DB_HOST'] = 'localhost'
os.environ['DB_USER'] = 'pghumor'
os.environ['DB_PASS'] = '--PASSWORD--'
os.environ['DB_NAME'] = 'corpus'
os.environ['DB_NAME_CHISTES_DOT_COM'] = 'chistesdotcom'

Poner la variable de entorno a donde se encuentre el entorno de Freeling y dejarla puesta siempre:

FREELINGSHARE=/usr/local/share/freeling
echo "export FREELINGSHARE=$FREELINGSHARE" >> ~/.bashrc

Ejecución

Levantar antes los servidores de Freeling (para poder calcular las características):

./freeling.sh start

Luego para correr:

clasificador/main.py

Para bajar los servidores de Freeling:

./freeling.sh stop

Ayuda

clasificador/main.py --help

Tests

./tests.sh

About

Detección de humor en tweets en idioma español

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 96.3%
  • HTML 2.2%
  • Other 1.5%