5 votos

¿Cómo calcular la frecuencia de los términos y encontrar clusters en un conjunto de datos compuesto por cadenas?

Actualmente estoy buscando algunas técnicas de recuperación de información.

Tengo una tabla de base de datos SQL que contiene cadenas. Tiene 1000 registros, cada uno de los cuales es una frase aleatoria que elegí de sitios web al azar. Necesito obtener la frecuencia del término y representar cada cadena en un vector. También necesito agrupar los registros, por ejemplo, utilizando k-means.

¿Alguien sabe cuál es la mejor manera de hacerlo? ¿Hay alguna herramienta que pueda utilizar? Soy nuevo en esto y busco un punto de partida.

2voto

karatchov Puntos 230

El estado de la técnica consiste en utilizar el hashing semántico de Hinton y Salakhutdinov . Si echas un vistazo al documento, hay algunos gráficos 2D realmente impresionantes de varios conjuntos de datos de referencia.

Sin embargo, es un algoritmo bastante avanzado. Se entrena una pila de máquinas de Boltzmann restringidas con divergencia contrastiva. Al final, su representación de un documento será un vector de bits. Esto se puede utilizar para hacer búsquedas basadas en la distancia hamming.

Se requieren muchos conocimientos de aprendizaje automático para implementar esto con éxito, y por lo que yo sé no hay nada fuera de la caja. Si quieres hacer esto y no tienes conocimientos previos en redes neuronales y demás, te costará bastante esfuerzo.

1voto

James Sutherland Puntos 2033

Por su comentario, probablemente no quiera agrupar, sino clasificar (presumiblemente, spam y no spam). Para ello debería familiarizarse con un conjunto de herramientas de aprendizaje automático. Sin embargo, el negocio tf-idf puede ser útil para el preprocesamiento.

Si estás contento con Java, entonces Mazo y LingPipe son muy fáciles de usar. Todos estos conjuntos de herramientas harán las cosas de construcción de la matriz de documentos de términos, pero representarán los datos muy dispersos que resultan mucho más eficientemente y también le permitirán aplicar una variedad de modelos de clasificación. También he tenido buena suerte con BMLR pero para ello es necesario que construyas tú mismo los datos de entrada, aunque no es especialmente complicado.

Si desea permanecer en el modo de agrupación, la mayoría de las bases de datos tienen un módulo de búsqueda de texto completo que le permite identificar registros similares según tf-idf o métodos relacionados. Tratar directamente con esa función de similitud podría ser más útil para la posterior agrupación. Mejor aún, podría utilizar simplemente Lucene que está disponible en varios idiomas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X