Старый функционал на новый лад Пара слов о перефразировании

Как проверить схожесть текстов?

Вчера пытался релизовать проверку похожести текстов с помощью метода десятисловных шинглов. Для этого текст нормализуется: все символы приводятся к нижнему регистру, спецсимволы преобразуются в пробелы, а лишние пробелы удаляются. Затем текст разбивается на шинглы длиной по 10 слов. Шинглы идут внахлест, так что первое слово второго шингла является вторым словом первого шингла, а второе соответственно третьим. Количество шинглов, как вы понимаете, на 1 меньше, чем количество слов в тексте. После этого для каждого из шинглов подсчитывается контрольная сумма (CRC32). Для шинглов одинакового размера сходство двух текстов определяется как отношение числа одинаковых для обеих текстов шинглов к общему количеству различных шинглов. Но, судя по всему, я делаю что-то не так, так что изменение лишь одного слова из 67 дает результат в 85%, что, конечно же, не так.

Не знаю, стоит ли продолжать работу над функцией проверки схожести текстов, так как на самом деле никто не знает, что именно делают ПС во время проверки документов на схожесть. Возможно, что я просто закажу DLL-ку у того, кто уже реализовал этот механизм в своих программах. Например, можно обратиться к Hkey - его программы хороши. Но, опять же, я не уверен, что данный механизм хоть капельку будет отображать то, что на самом деле делают ПС. Но, с другой стороны, наличие такого функционала будет еще одним плюсом к моей программе.

Кстати, если у вас уже есть такая библиотека, не могли бы вы поделиться ею со мной за одну (или нексолько?) лицензий на программу? Возможна оплата деньгами. Подумайте.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий