Поиск похожих документов - примитивный алгоритм

12
V
На сайте с 29.06.2005
Offline
157
5521

Здраствуйте уважаемые Гуру поиска, у меня к Вам вопрос относительно выбора алгоритмов.

Задача стоит так

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

Самое важное сейчас - определится с методами и алгоритмами, желательно не сильно сложными, что бы осилить.

На данный момент вижу картину так

1. Выделение из документа списка слов.

2. Удаление стоп слов.

3. (?) Приведение слов к основной форме (если найду словать или простые правила для русского или украинского).

--------------------

4а. Порезка текста на куски (предложения).

5а. Хеширование предложений.

6а. Поиск хешей по базе и внесение в базу.

------

4б. Кластеризация сожержания.

5б. Поиск по базе схожих кластеров для полученых (возможно здесь использовать базы синонимов).

6б. Индексация текста (слово = ID) и внесение в базу.

---------------------

7. Интерпретация результатов схожести частей документа.

Возможно сумирование результатов с учетом размеров документов.

Возможно я сильно ошибаюсь, поправте пожалуйста и посоветуйте алгоритмы, которые реально подойдут, одних только методов кластеризации больше десятка. Кстати, в большенства из них используется мартица схoжести документов (similarity matrix) - есть ли смысл копать в этом направлении.

Заранее спасибо за советы.

Sergey Petrenko
На сайте с 23.10.2000
Offline
482
#1

Рекомендую почитать http://company.yandex.ru/articles/antispam.xml - про определение дубликатов. Как я понимаю, вполне применимо, вопрос только в степени четкости.

V
На сайте с 29.06.2005
Offline
157
#2

Спасибо, изучил. Для начала то что надо.

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

И ище, есть ли методы для не просто тупого сравнение кусков текста, а попыток выделить "логику/смысл/направление" самого текста для последующего анализа. Например путем использования :

баз синонимов

толковых словарей

приведения словоформ

других лингвистических баз данных

математики, описывающей данные

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

Очень надеюсь на ответы и огромное спасибо за специализированный сайт.

spark
На сайте с 24.01.2001
Offline
130
#3

Посмотрите еще такой сайт http://shtampomer.narod.ru/

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

V
На сайте с 29.06.2005
Offline
157
#4

Программку посмотрел

Вердикт неутешителен: вроде как все доступно вплоть до исходников, но алгоритм и определение того, что автор программы считает "штампом" не описан и не понятен к сожалению.

А если в общем, то неплохая тулзовина для сбора общей статистики по тексту.

Спасибо.

E
На сайте с 23.08.2005
Offline
1
#5

Посмотри прожку SearchInform

D
На сайте с 21.11.2005
Offline
0
dfo
#6

"Распределение Ципфа выражает некие фундаментальные свойства замкнутых связных текстов (такими обычно являются тексты, написанные одним автором, в едином стиле и т.д.), поскольку именно для таких текстов распределение частот слов (если частоты выстроены в порядке их убывания) близко к нему [6]. Таким образом, выполнение этого закона может выступать как критерий системности текста"

интересно, разрабатывал ли кто-нибудь это предположение..

вроде как может сгодиться для построения кластеров (дубликатов, или, например, стилистических, тематических..)

R
На сайте с 29.04.2003
Offline
37
#7
dfo:
интересно, разрабатывал ли кто-нибудь это предположение..
вроде как может сгодиться для построения кластеров (дубликатов, или, например, стилистических, тематических..)

Не пойдет. Ципф-Мандельброт может сгодиться только как теоретическая основа. Вряд ли с его помощью можно отловить различных авторов. Да даже практически наверняка нельзя.

Шинглы достаточно просты а реализации. Можно также посмотреть SVM (Метод Опорных Векторов) http://svmlight.joachims.org/ (где то встречал статью, где описывается его применение к определению дубликатов, но думаю это не самый легкий вариант), а так же метод k-ближайших соседей (k-Nearest Neighbors, k-NN) (здесь например можно на русском посмотреть http://www.spc-consulting.ru/DMS/Machine%20Learning/MachineLearning/Overviews/KNearestNeighborsIntroductoryOverview%20.htm). Этот метод хорош тем, что при добавлении нового документа его не надо заново обучать на все выборке.

Есть еще куча всего. Но лучше все же воспользоваться шинглами - просто и эффективно. Только вот с выбором порога сходства замучаетесь. Но с другой стороны так во всех методах.

YK
На сайте с 14.03.2005
Offline
138
#8

Сложные и навароченные тулы для сематического (по смыслу) сравнения документов с возможностью задавать степень proximity (похожести) интересуют?

Но за деньги... зато в виде SDK. Или готового солюшена. Даже демка есть.

K
На сайте с 11.11.2005
Offline
12
#9
Yuri_K:
Сложные и навароченные тулы для сематического (по смыслу) сравнения документов с возможностью задавать степень proximity (похожести) интересуют?
Но за деньги... зато в виде SDK. Или готового солюшена. Даже демка есть.

Демку в студию

Если вы будете следовать инструкциям, то каждое блюдо будет получаться у вас таким же, как и у нас, даже если раньше вы никогда не занимались приготовлением пищи. Поваренная книга Мак-Колла и эпиграф Д. Кнута (http://www.turtle.ru/)
R
На сайте с 29.04.2003
Offline
37
#10
Yuri_K:
Сложные и навароченные тулы для сематического (по смыслу) сравнения документов с возможностью задавать степень proximity (похожести) интересуют?

А на основе каких алгоритмов, построен инструмент?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий