2013-03-25 2 views
4

У меня есть два текстовых файла, которые я бы хотел сравнить. Что я сделал:2 всего текста сходство с использованием levenshtein distance

  1. Я разделил их оба на предложения.
  2. Я измерил расстояние levenshtein между каждым из предложений из одного файла с каждым из предложений из второго файла.

Я хотел бы вычислить среднее сходство между этими двумя текстовыми файлами, однако у меня есть проблемы, чтобы доставить какое-либо значимое значение - очевидно, средних арифметический (сумму всех расстояний [нормированный] делится на числе сравнений) является плохая идея.

Как интерпретировать такие результаты?

Редактировать: Значения расстояний нормализуются.

+1

Вы можете нормализовать расстояния, d (A, B)/max (длина (A), длина (B)) ', а затем сообщить среднее арифметическое. –

+0

@larsmans, расстояния уже нормализованы. – user2207055

+1

Тогда почему это плохая идея? –

ответ

10

Расстояние от levenshtein имеет максимальное значение, то есть макс. длина обеих входных строк. Это не может ухудшиться. Таким образом, нормализованный индекс подобия (0 = плохое, 1 = совпадение) для двух строк a и b может быть рассчитан как 1- расстояние (a, b)/max (a.length, b.length).

Возьмите одно предложение из файла A. Вы сказали, что сравниваете это с каждым предложением файла B. Я думаю, вы ищете предложение из B, которое имеет наименьшее расстояние (то есть самый высокий индекс подобия).

Просто вычислите среднее значение всех этих минимальных индексов подобия. Это должно дать вам приблизительную оценку сходства двух текстов.

Но что заставляет вас думать, что два похожих текста могут привести к перестановке их предложений? Мое личное мнение состоит в том, что вы также должны вводить списки стоп-слов, синонимы и все такое.

Тем не менее: пожалуйста, также проверьте соответствие триграмм, которое может быть другим хорошим подходом к тому, что вы ищете.

+0

Он также имеет минимальное значение, которое часто отличается от 0 и является абс (a.length - b.length). Таким образом, правильная нормализация будет (расстояние (a, b) -minval)/(maxval-minval) – blues

+0

Вы уверены? Проверьте «x» и «Быстрое нахмуренное поле». Ваше определение дает 0 (d = 19, minval = 18). Они для строк определенно не равны. – alzaimar

Смежные вопросы