¿Función que devuelve afinidad entre textos?
considero que tengo un
string1 = "hello hi goodmorning evening [...]"
y tengo algunas palabras clave menores
compare1 = "hello evening"
compare2 = "hello hi"
Necesito una función que devuelva la afinidad entre el texto y las palabras clave. Ejemplo:
function(string1,compare1); // returns: 4
function(string1,compare2); // returns: 5 (more relevant)
Tenga en cuenta que 5 y 4 son solo por ejemplo.
Podría decir: escriba una función que cuente las ocurrencias, pero para este ejemplo esto no funcionaría porque ambas obtuvieron 2 ocurrencias, pero compare1 es menos relevante porque "hola tarde" no se encuentra exactamente en la cadena1 (las 2 palabras hola y tarde son más distante que hola hola)
¿Hay algún algoritmo conocido para hacer esto?
ADD1:
algos como Editar distancia en este caso NO funcionarían. Porque string1 es un texto completo (como 300-400 palabras) y las cadenas de comparación tienen un máximo de 4-5 palabras.