Tras mirar alrededor de este sitio para problemas similares, encontré esto: http://math.nist.gov/javanumerics/jama/ y esto: http://sujitpal.blogspot.com/2008/09/ir-math-with-java-similarity-measures.htmlcoseno similitud de vectores, con <O (n^2) la complejidad
Sin embargo, parece que estos se ejecutan en O (n^2). He estado haciendo algunos clústeres de documentos y me di cuenta de que este nivel de complejidad no era factible cuando se trataba incluso de conjuntos de documentos pequeños. Dado que, para el producto escalar, solo necesitamos los términos vectoriales contenidos en ambos vectores, debería ser posible poner los vectores en un árbol y así calcular el producto escalar con n log n complejidad, donde n es el número más bajo de términos únicos en 1 de los 2 documentos.
¿Echo de menos algo? ¿Hay una biblioteca de Java que hace esto?
gracias
No va a haber mucha suerte esperando que la gente lea ambas páginas. Quizás puedas explicar tu problema más claramente: ¿por qué estás multiplicando vectores (y qué quieres decir con O (n^2)? Comprender el producto de puntos de dos vectores n-dimensionales es trivialmente O (n), dudo mucho de que cualquier el paquete de vectores podría estropearlo gravemente) –
Está calculando el producto de puntos por cada * par * de documentos. Eso lo hace cuadrativamente complejo. – Rekin
BlueRaja - Danny Pflughoeft, este problema consiste en multiplicar vectores muy grandes pero muy dispersos; y n no es la dimensión sino el recuento de elementos distintos de cero. –