nittis

Рейтинг
3
Регистрация
17.02.2009
Мартовский Заяц:
... а у меня набор стоп-слов стандартный из ACE. Да и не должен набор влиять. Если на количество статей при изменении шингла не влияет, то и на количество статей при измнении процента совпадения влиять не должно.

С разными наборами процент схожести у одних и тех же статей все таки будет разным. В часности, чем больше стоп слов мы удаляем, тем меньше множество шинглов, и тем больше вклад каждого совпадения в процент схожести.

Если же реь шла о серии экспериментов с одним и тем же набором, тогда список стор слов, естественно не важен.

x_art:
Формула достаточно сложна для описания здесь. Но я сравнивал результаты с другими аналогами - расхождения минимальные. Может быть у нас набор стоп-слов разный? Это может существенно влиять на результат.

Набор стоп слов тот же самый.

Удивительно, что у Вас получилась сложная формула.

Я считаю отношение количества совпавших шинглов к количеству шинглов на меньшей статье и умножаю полученное на 100%

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

Мартовский Заяц, чуть раньше я задавал здесь вопрос о функции сравнения, но ответа к большому сожалению не получил.

Мой алгоритм сравнения давал несколько другие (чуть меньшие) цифры при тех же самых стоп словах и длине шингла. Было бы очень инетерсно узнать верную формулу для подсчета.

Ради интереса погонял свой алгоритм и экспоненцеальный рост обнаружил - буду спать спокойно.

Программа очень понравилась, спасибо автору за удобный инструмент.

Похоже, что программа неверно определяет степень схожести. Например, если сравнить строку "слово1 слово2 слово3 слово4 слово5 слово6" со строкой "слово1 слово2 слово3 слово4 слово5 другоеслово", то программа выдает 100% схожести при длине шингла 5.

В данном случае у нас по два шингла для каждой строки один из которых совпадает, а другой нет. Следовательно процент схожести текстов равен 50%

Добавим в конец каждой строки одно и тоже слово и программа выдаст процент схожести 50% хотя у нас не совпадает 2 шингла из трех то есть 33%

Для строк "1 2 3 4 5 6 11 12 13 14 15 16" и "1 2 3 4 5 7 11 12 13 14 15 17" получаем 29% вместо 25%

Подскажите, как должен вычисляться процент схожести по методу шинглов?

В статьях нашел два способа.

res = diff * 2 / (sh1 + sh2) * 100

и

res = diff / (merge) * 100

где sh1 и sh2 - размер множеств с шинглами для первой и второй статьи

diff - количество совпавших шинглов в статьях

merge - количество уникальных шинглов в статьях

сам я использую такую формулу

res = diff / min(sh1, sh2) * 100

но даже она дает результат больший чем получается в программе при том же наборе стоп слов.

Какова же верная формула?