mi tema es la similitud y la agrupación de (un grupo de) texto (s). En pocas palabras: quiero agrupar los textos recopilados y deben aparecer en grupos significativos al final. Para hacer esto, mi enfoque hasta ahora es el siguiente, mi problema está en la agrupación. El software actual está escrito en php.Agrupación efectiva de una matriz de similitud
1) Similitud: Trato cada documento como una "bolsa de palabras" y convierto palabras en vectores. Yo uso
- filtrado (sólo palabras "reales")
- tokenización (oraciones divididos en palabras)
- derivados (reducir palabras a su forma de base; despalilladora de Porter)
- poda (corte de las palabras con demasiado alto & baja frecuencia)
como métodos para la reducción de la dimensionalidad. . Después de eso, estoy usando similitud del coseno (como se sugiere/ha descrito en varios sitios en la web and here
El resultado es, pues, una matriz de similitud de esta manera:
A B C D E
A 0 30 51 75 80
B X 0 21 55 70
C X X 0 25 10
D X X X 0 15
E X X X X 0
A ... E son mis textos y el número es la similitud en porcentaje; cuanto más alto, más similares son los textos. Debido a que sim (A, B) == sim (B, A) solo se llena la mitad de la matriz. Entonces, la similitud del Texto A con el Texto D es 71%
Quiero generar a priori un número desconocido (!) De clústeres fuera de esta matriz. Los clústeres deberían representar elementos similares (hasta cierta parada) p criterio) juntos.
que intentaron una implementación básica a mí mismo, que era básicamente como esto (el 60% como umbral de similitud fija)
foreach article
get similar entries where sim > 60
foreach similar entry
check if one of the entries already has a cluster number
if no: assign new cluster number to all similar entries
if yes: use that number
Se trabajó (de alguna manera), pero no era bueno en absoluto y los resultados eran a menudo cúmulos de monstruos. Por lo tanto, quiero volver a hacer esto y ya he echado un vistazo a todo tipo de algoritmos de clúster, pero todavía no estoy seguro de cuál funcionará mejor. Creo que debería ser un algoritmo aglomerativo, porque cada par de textos se puede ver como un clúster al principio. Pero aún así las preguntas son qué es el criterio stopp y si el algoritmo debe dividir y/o fusionar los clústeres existentes.
Disculpe si algunas de las cosas parecen básicas, pero soy relativamente nuevo en este campo. Gracias por la ayuda.
¿Recibió alguna buena respuesta? Ni siquiera está claro para mí cuántas dimensiones debería funcionar la agrupación en ... – Jim