Estoy escribiendo algo que toma un bloque de texto y lo divide en posibles consultas de bases de datos que podrían usarse para buscar bloques de texto similares. (Algo similar a la lista de "preguntas similares" que se genera mientras escribo esto) El proceso básico:Crear una matriz de combinaciones únicas a partir de una matriz de cadenas
- palabras Retire el tope de texto
- Quitar los caracteres especiales
- De texto restante crear una matriz de único " tallos"
- crear una matriz de combinaciones posibles del conjunto de filamentos (donde estoy atascado ... tipo de)
Esto es lo que tengo hasta ahora:
//baseList starts with an empty array
//candList starts with the array of unique stems
//target is where the arrays of unique combinations are stored
function createUniqueCombos(baseList,candList,target){
for(var i=0;i<candList.length;i++){
//copy the base List
var newList = baseList.slice(0);
//add the candidate list item to the base list copy
newList.push(candList[i]);
//add the new array to the target array
target.push(newList);
//re-call function using new array as baseList
//and remaining candidates as candList
var nextCandList = candList.slice(i + 1);
createUniqueCombos(newList,nextCandList,target);
}
}
Esto funciona, pero en bloques de texto de más de 25 palabras, bloquea mi navegador. Me doy cuenta de que matemáticamente podría haber una gran cantidad de combinaciones posibles. Lo que me gustaría saber es:
- ¿Hay alguna manera más eficiente de hacerlo?
- ¿Cómo podría definir una longitud de matriz de combinación mínima/máxima?
Esta es una primera pregunta fantástica. Bienvenido a StackOverflow! Es probable que su navegador se bloquee por la cantidad de memoria utilizada o que repita demasiado. – Bojangles
¿Realmente necesitas todas las combinaciones a la vez? ¿No puedes procesarlos instantáneamente a medida que los generas en lugar de acumular una gran variedad? También intente reescribir su algoritmo a iteración en lugar de recursión. –
Gracias, he sido un espectador durante bastante tiempo;) @ OlegV.Volkov No, no necesito todas las combinaciones Me gustaría poder definir una longitud mínima/máxima para las matrices de combinación devueltas. Gracias por la sugerencia de iteración. – HartyeTech