2010-11-23 13 views
6

Estoy tratando de entrenar un clasificador Naive Bayes con palabras positivas/negativas que extraen de un sentimiento. ejemplo:1 millón de oraciones para guardar en DB - eliminación de palabras en inglés no relevantes

Me encanta esta película :))

No me gusta cuando llueve :(

La idea es que extraigo frases positivas o negativas, sobre la base de los emoctions utilizados, pero con el fin de entrenar a un clasificador y persistirlo en la base de datos

El problema es que tengo más de 1 millón de oraciones así que si lo entreno palabra por palabra, la base de datos se lanzará. Quiero eliminar todas las palabras no relevantes ejemplo 'I', 'this', 'when', 'it', de modo que el número de veces que tengo que hacer una consulta en la base de datos es menor.

favor me ayude a resolver este problema para mí sugerir mejores maneras de hacerlo

Gracias

+0

yo supongo que sus palabras "no relevantes" incluyendo 'I', 'este', 'cuándo', 'eso' debería aparecer con mucha frecuencia, tanto en positivo y oraciones negativas. Tal vez esto puede ayudar a diseñar un algoritmo para descalificar automáticamente algunas palabras, ya sea sobre la marcha o como un pre-pase. – aschepler

+1

+1 para la frase "la base de datos se lanzará" – Stompchicken

+0

¿Tiene que ser una base de datos?¿Qué tal un motor de búsqueda de texto completo? O una estructura de datos simple? http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Full-Text-Search-Engine-versus-DBMS –

Respuesta

8

Hay dos enfoques comunes:

  1. compilar una stop list.
  2. POS tag las oraciones y tirar aquellas partes del discurso que creas que no son interesantes.

En ambos casos, determinar qué palabras/etiquetas POS son relevantes se puede hacer utilizando una medida como PMI.

Tenga en cuenta que las listas de paradas estándar de la recuperación de información pueden funcionar o no en el análisis de sentimientos. Hace poco leí un artículo (sin referencia, lo siento) donde se decía que! y?, comúnmente eliminados en los motores de búsqueda, son pistas valiosas para el análisis de sentimientos. (Así mayo 'I', especialmente cuando usted también tiene una categoría neutra..)

Editar: también se puede tirar a la basura de forma segura todo lo que ocurre sólo una vez en el conjunto de entrenamiento (llamado hapax legomena). Las palabras que aparecen una vez tienen poco valor de información para su clasificador, pero pueden ocupar mucho espacio.

+1

+1 para los diferentes requisitos del análisis de sentimiento. –

+1

+1, es difícil averiguar qué palabras eliminar antes de entrenar un algoritmo y ver qué palabras son menos significativas. – Skarab

0

Para reducir la cantidad de datos recuperados de la base de datos, puede crear en su base de datos de un diccionario - una tabla que asigna palabras a los números * ** - y de recuperar sólo un vector de número para el entrenamiento y una oración completa para manual que marca un sentimiento.

| * No se me ocurre ninguna publicación científica, pero tal vez baste con usar solo stems or lemmas en lugar de palabras. Reduciría el tamaño del diccionario.

| ** Si esta operación mata su base de datos, puede crear un diccionario en una aplicación local -que utiliza un motor de indexación de texto (por ejemplo, apache lucene) - y almacenar solo el resultado en su base de datos.

+0

p. También incluiría la longitud de una oración como característica. – Skarab

Cuestiones relacionadas