Actualmente estoy tratando de clasificar Tweets usando el clasificador Naive Bayes en NLTK. Estoy clasificando tweets relacionados con símbolos de acciones en particular, usando el prefijo '$' (por ejemplo: $ AAPL). He estado basando mi secuencia de comandos de Python en esta publicación de blog: Twitter Sentiment Analysis using Python and NLTK. Hasta ahora, he estado obteniendo resultados razonablemente buenos. Sin embargo, creo que hay mucho, mucho margen de mejora.Tweet Classifier Feature-Selection NLTK
En mi método de selección de palabras, decidí implementar el algoritmo tf-idf para seleccionar las palabras más informativas. Sin embargo, después de haber hecho esto, sentí que los resultados no fueron tan impresionantes.
Implementé la técnica en el siguiente blog: Text Classification Sentiment Analysis Eliminate Low Information Features. Los resultados fueron muy similares a los obtenidos con el algoritmo tf-idf, lo que me llevó a inspeccionar más detenidamente la lista de "características más informativas" de mi clasificador. Entonces fue cuando me di cuenta de que tenía un problema mayor:
Los tweets y el lenguaje real no usan la misma gramática y redacción. En un texto normal, muchos artículos y verbos se pueden seleccionar usando tf-idf o palabras vacías. Sin embargo, en un corpus de tweets, algunas palabras extremadamente desinformativas, como 'the', 'y', 'is', etc., ocurren tanto como las palabras que son cruciales para categorizar el texto correctamente. No puedo eliminar todas las palabras que tienen menos de 3 letras, porque algunas características no informativas son más grandes que eso, y algunas informativas son más pequeñas.
Si pudiera, me gustaría no tener que usar palabras vacías, debido a la necesidad de actualizar frecuentemente la lista. Sin embargo, si esa es mi única opción, creo que tendré que ir con eso.
Entonces, para resumir mi pregunta, ¿alguien sabe cómo realmente obtener las palabras más informativas en la fuente específica que es un Tweet?
EDIT: Estoy tratando de clasificar en tres grupos: positivo, negativo y neutral. Además, me preguntaba, para TF-IDF, ¿debería limitarme las palabras con los puntajes bajos, o también algunas con los puntajes más altos? En cada caso, ¿qué porcentaje del vocabulario de la fuente de texto excluiría del proceso de selección de características?
¿Cuán grande es tu corpus de tweets? ¿Qué tipo de puntajes estás recibiendo en este momento? Además, ¿ha considerado usar un clasificador diferente al de Naive Bayes y/o usar otras características aparte de las palabras (por ejemplo, autor)? –
No he considerado el uso de otras características: los autores serían demasiado diversos. Mi corpus, por el momento, es solo del orden de un par de cientos de tweets. En cuanto a los puntajes, dependiendo del tamaño de mi corpus de prueba (cada vez más grande), van de 0 a 0.3, diría yo. – elliottbolzan
por puntuación, me refiero a precisión/F1/lo que sea que esté midiendo. Y puede obtener mejores resultados si tiene un corpus más grande: p. idf will puede ser mucho más preciso. –