[ Foro de Javascript ]

Buscar palabras y frases diferentes entre dos textos

09-Nov-2017 11:50
Invitado (Norak)
1 Respuestas

Necesito encontrar palabras diferentes y pequeñas frases de longitud de hasta 5 palabras (o podría ser personalizable) de un texto dentro de otro. Las diferencias quiero guardarlas en un array, de tal forma que solo se guarden las palabras o frases sin repetir (se comprueba antes si ya existe). De momento he conseguido que me busque las palabras diferentes, pero no sé cómo hacer que ahora siga buscando frases de 2 palabras (consecutivas), en la siguiente iteración de 3 palabras, 4... y así sucesivamente.

var texto = "Aquí va el el primer texto a analizar e incluso con palabras repetidas repetidas";
   var texto2 = "Aquí va el segundo texto a analizar analizar e incluso con algunas palabras repetidas";

   var palabras = texto.split(" ");
   var palabras2 = texto2.split(" ");

   var diferentes = [];

   for (var i=0; i<palabras.length; i++) {

     if (texto2.includes(palabras[i]) == false) {

        if (diferentes.includes(palabras[i]) == false) { //si no existe en el array de diferencias
           diferentes.push(palabras[i]);
        }
     }
   }

   for (var i=0; i<palabras2.length; i++) {

     if (texto.includes(palabras2[i]) == false) {

        if (diferentes.includes(palabras2[i]) == false) { //si no existe en el array de diferencias
           diferentes.push(palabras2[i]);
        }
     }
   }

   for (var j=0; j<diferentes.length; j++) {
      console.log("Elemento "+ j + " diferente en ambos textos = "+diferentes[j])
   }

¿Cómo puedo hacer que cada vez me vaya cogiendo una palabra más del texto1 y analizando si existe en el texto2, buscando siempre todas las frases posibles (pero las palabras deben ser consecutivas)?


14-Nov-2017 13:00
Nacho Cabanes (+83)

Para conjuntos de dos palabras deberías hacer un "for" que vaya desde la primera posición hasta la penúltima. Para cada posición "i", tomarás la palabra de la posición "i" y la de la posición "i+1", las concatenarás con un espacio entre medias, y así tienes una nueva cadena, que probarías a ver si aparece en la otra cadena o no.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)