Функция, которая возвращает сходство между текстами?

считайте, что у меня есть

string1 = "hello hi goodmorning evening [...]"

и у меня есть несколько второстепенных ключевых слов

compare1 = "hello evening"
compare2 = "hello hi"

Мне нужна функция, которая возвращает привязку между текстом и ключевыми словами. Пример:

function(string1,compare1);  // returns: 4
function(string1,compare2);  // returns: 5 (more relevant)

Обратите внимание, что 5 и 4. Это просто пример.

Вы могли бы сказать - напишите функцию, которая подсчитывает вхождения - но для этого примера это не сработает, потому что оба имеют 2 вхождения, но compare1 менее актуален, потому что " hello Evening "точно не встречается в строке 1 (два слова hello и Evening более отдалены, чем hello hi)

существует ли какой-нибудь известный алгоритм для этого?

ADD1:

алгоритмы вроде Edit Distance в этом случае НЕ будут работать. Поскольку строка1 - это полный текст (например, 300-400 слов), а сравниваемые строки - максимум 4-5 слов.

10
задан dynamic 24 January 2011 в 23:39
поделиться