2012-04-02 18 views
5

Considere un cuadro de texto arbitrario que registra la respuesta a la pregunta, ¿qué desea hacer antes de morir?Algoritmo para comparar la similitud de ideas (como cadenas)

Utilizando una colección de cadenas de respuesta (longitud máxima 240), me gustaría ordenarlas de algún modo y agruparlas y contarlas por idea (que puede ser similitud de cadenas como se describe en this question).

  1. ¿Hay alguna otra forma mejor de hacer algo como esto?
  2. ¿Es esto diferente que similitud de cadena?
  3. ¿Es esta la pregunta correcta?

La idea aquí es que la gente escribe en un cuadro de texto una y otra vez, y me para proporcionar un número que describe, en términos generales, que 802 personas escribieron aproximadamente lo mismo

+0

802 personas? quieres un solo numero? o una partición? o una partición que se superpone? – ninjagecko

+0

@ninjagecko esa es una gran pregunta. ¿Elegirías particiones en un solo número? si es así, ¿por qué? – Kristian

+1

bien conserva más información, pero dependería de lo que realmente intentas hacer. – ninjagecko

Respuesta

8

Se es mucho más difícil que la similitud de las cuerdas. Esto es lo que hay que hacer como mínimo:

  • realizar algunas tareas de formateo/limpieza de texto como la eliminación de caracteres signos de puntuación y las "palabras vacías" comunes
  • Construir un corpus (conjunto de palabras con sus estadísticas de uso) de los términos que ocurren respuestas.
  • Calcula un peso para cada término.
  • Construya un vector de documento de cada respuesta (cada término corresponde a una dimensión en un espacio euclidiano de dimensión muy alta)
  • Ejecute un algoritmo de agrupación en vectores de documentos.

Leer un buen libro de procesamiento de lenguaje natural estadística, o buscar en Google de buenas introducciones/tutoriales (términos probables: PNL estadística, categorización de texto, agrupación) Usted probablemente puede encontrar algunas bibliotecas (weka o nltk viene a la mente) dependiendo del idioma de su elección, pero debe comprender los conceptos para usar la biblioteca de todos modos.

2

El Latent Semantic Analysis (LSA) podría interesarte. Aquí está a nice introduction.

análisis semántico latente (LSA) es una técnica en el procesamiento del lenguaje natural, en particular en la semántica vectoriales, de analizar las relaciones entre un conjunto de documentos y los términos que contienen mediante la producción de un conjunto de conceptos relacionados con los documentos y condiciones. [...]

+2

LSA es una técnica para reducir las dimensiones fusionando términos similares con alguna magia matemática seria. Creo que le queda un largo camino por recorrer (primero construir vectores de documentos correctamente y luego agruparlos) antes incluso de considerar aplicar LSA en el medio. –

1

Lo que desea es un problema muy abierto en NLP. La respuesta de @ Ali describe la idea a un alto nivel, pero la parte "Construir un vector de documento para cada respuesta" es la más difícil. Hay algunas formas obvias de construir un vector de documento a partir de los vectores de las palabras que contiene. La suma, la multiplicación y el promedio son rápidos, pero afectivamente ignoran la sintaxis. Man bites dog y Dog bites man tendrán la misma representación, pero claramente no tienen el mismo significado.Google compositional distributional semantics - hasta donde yo sé, hay personas en las Universidades de Texas, Trento, Oxford, Sussex y en Google que trabajan en el área.

Cuestiones relacionadas