Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить схожесть текстов? 
:(
    Опции темы
Wowa
Дата 15.11.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Как определить схожесть текстов? Например, есть много записей в базе и при добавлении новой записи надо проверить, нет ли уже точно таких или схожих более, чем на 80%.
PM WWW   Вверх
maxim1000
Дата 15.11.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



а что за тексты?
и в каком смысле схожесть? (по смыслу, по набору используемых слов)

без этого вряд ли получится что-либо предложить...


--------------------
qqq
PM WWW   Вверх
Wowa
Дата 15.11.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(maxim1000 @  15.11.2006,  11:58 Найти цитируемый пост)
а что за тексты?

статьи на разные тематики


Цитата(maxim1000 @  15.11.2006,  11:58 Найти цитируемый пост)
и в каком смысле схожесть? (по смыслу, по набору используемых слов)

По смыслу. Набор используемых слов обычно будет почти одинаков.
PM WWW   Вверх
maxim1000
Дата 15.11.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



по смыслу сложно...
от copy-paste разных кусочков ещё можно пробовать защититься
а от от переписывания своими словами (не просто синонимами, а нормальным пересказом) - сомнительно
(хотя я этой областью особо не интересовался, может, что-то и придумали)


--------------------
qqq
PM WWW   Вверх
SoWa
Дата 16.11.2006, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Придумал сегодня в трамвае.
Метод таков, что без определенного словарика не обойтись.
Разбираем все предложения в исходном тексте и в том, который сравниваем, по членам предложения(подлежащее, сказуемое, дополнение, обстоятельство, и др.). Составляем связную базу каждых членов(база подлежащих, сказуемых, где Бсказ(i)<->Бподл(i)).
Затем гоним перебором сравнение по базам подлежащих, сказуемых, др. Причем, при сравнении могут работать логические структуры И, ИЛИ, НЕ.
Например
Код

ЕСЛИ (Бподл(i) И Бсказ(i))=(Бподл(j) И Бсказ(j)) ТО...

Или можно какой-нибудь изоморфизм баз найти.

PS
Это только поверхностное представление решения проблеммы. К сожалению, на реализацию нету времени. Первый курс, как никак.
СУВ, SoWa.

Это сообщение отредактировал(а) SoWa - 16.11.2006, 20:43


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Wowa
Дата 17.11.2006, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Разбирать по словам конечно же наверно придется. Мало того, это просто необходимо ИМХО, чтобы обеспечить более быстрый поиск по базе.
А текстов на самом деле будет не два, а много тысяч, часть из которых одинаковые или схожие будут.

Вопрос в том, как это все записывать в таблицу. 
Или в таком виде:
Код

Слово|ИД текста
Слово|ИД текста
Слово|ИД текста
...


Или в таком: 
Код

Слово|ИД текстов через запятую.


Как вы думаете лучше?
PM WWW   Вверх
Medved
Дата 18.11.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



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

Пока вижу такие выходы.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Wowa
Дата 18.11.2006, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Medved @  17.11.2006,  23:36 Найти цитируемый пост)
Можно брать статистику слов. Ну к примеру если в статье встречается одинаковое кол-во одинаковых слов, тогда они похожи. Но тогда нужно сохранять кол-то слов в каждой статье. Что-то типа индекса делать. 

Да-да, именно так имхо лучше всего.
PM WWW   Вверх
SoWa
Дата 19.11.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Код

Сова идет кушать Медведа.
----
Медвед идет кушать Сову.

Похожи? smile
ИМХО совершенно разный смысл. А вот разбор по членам предложения прокатит.

PS
Брутфорс никогда не рулил в подобных делах

Это сообщение отредактировал(а) SoWa - 19.11.2006, 19:42


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Medved
Дата 19.11.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: нет
Всего: 154



Цитата(SoWa @  19.11.2006,  22:41 Найти цитируемый пост)
Похожи? smile
ИМХО совершенно разный смысл. А вот разбор по членам предложения прокатит.

эти два текста похожи на 50%


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
esperant0
Дата 19.11.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(SoWa @ 19.11.2006,  19:41)
 

PS
Брутфорс никогда не рулил в подобных делах

Не верно.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
Exception
Дата 19.11.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: нет
Всего: 186



Цитата(Medved @  19.11.2006,  22:38 Найти цитируемый пост)
Цитата(SoWa @  19.11.2006,  22:41 Найти цитируемый пост)
Похожи? smile
ИМХО совершенно разный смысл. А вот разбор по членам предложения прокатит.

эти два текста похожи на 50% 


ИМХО, даже на 90%. Потому что и там, и там говорится об одних и тех же вещах.
PM   Вверх
SoWa
Дата 20.11.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



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


Exception, А попробуй компу объясни. Нам понятно, что кто-то идет кушать кого-то. Вот и строим логическую структуру. Так схожесть будет определяться не только синтаксически, но и логически.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
tab
Дата 21.11.2006, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 7.10.2006
Где: RF, Dolgopa

Репутация: нет
Всего: нет



 Есть замечательная програмка - "Антиплагиат". Я не уверен, что в сети есть подробное описание приципа работы - но что-то там точно должно быть- как минимум идеалогия. Цель она преследует по сути ту же. А подход очень интересен;)

А вообще говоря вопрос не совсем корректен - 80% - это смотря как сравнивать. Разные критерии качества можно ввести;) 
PM MAIL   Вверх
Fin
Дата 21.11.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Есть способ для быстрого определения 100 процентной схожести. Для каждого текста считаются контрольные суммы, например по методу CRC32. И затем по базе уже производить поиск всех текстов с равной контрольной суммой и равной длиной. И уже над этими записями делать дополнительную проверку.

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


--------------------
Пролетал мимо.
PM MAIL   Вверх
SoWa
Дата 21.11.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



За контрольные суммы не согласен  smile 

А вот далее у тебя написано мое мнение строгим языком.

Это сообщение отредактировал(а) SoWa - 21.11.2006, 11:35


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
esperant0
Дата 21.11.2006, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 714
Регистрация: 20.5.2005

Репутация: 4
Всего: 14



Цитата(Fin @ 21.11.2006,  09:57)
Есть способ для быстрого определения 100 процентной схожести. Для каждого текста считаются контрольные суммы, например по методу CRC32. И затем по базе уже производить поиск всех текстов с равной контрольной суммой и равной длиной. И уже над этими записями делать дополнительную проверку.

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

первый раз слышу про контрольную сумму процента схожести.


--------------------
 
 Student->Teacher Assistant ->Research assistant->Microsoft Software Development Engineer 

Пользователь получил наказание за то, что проигнорировал замечание которое было написано модератором  а затем стерто и которое он - пользователь не мог видеть. 
PM MAIL   Вверх
SoWa
Дата 21.11.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Fin
Ага, а еще не будем забывать, что CRC для различных входных данных разная. И как сравнивать будем?
С тем же успехом MD5 захешируем и будем довольны, а?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Fin
Дата 21.11.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



SoWa и esperant0 иногда думать надо, прежде чем осуждать. Контрольная сумма это  Хэш функция, по которой можно определить 100 процентно схожие тексты. Да бывают коллизии. Но уже не нужно просматривать полностью всю базу, а только те тексты, у которых совпали Хэш. Чтобы не было расхождений Хэшов, например из-за лишнего пробела. Можно текст приводить к единому стилю. Например 1 пробел между словами , все буквы заглавные, никаких переносов строк. Для этого приведенного текста считается Хэш. Но в базе можно хранить текст уже в произвольном виде. 



--------------------
Пролетал мимо.
PM MAIL   Вверх
SoWa
Дата 21.11.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Но смотри, хеш двух таких текстов ведь будет разным:
Код

СОВА КУШАЕТ МЕДВЕД
---
МЕДВЕД КУШАЕТ СОВА

А смысл разный: Сова кушает блюдо под названием "МЕДВЕД"
А Медвед кушает блюдо под названием "СОВА"
По количественной оцеке- текты одинаковы.
По смысловой- разные.
По хешу- черти-что вообще.

PS Мы не осуждаем, мы опровергаем smile

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

Это сообщение отредактировал(а) SoWa - 21.11.2006, 14:46


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
maxim1000
Дата 21.11.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

а если по смыслу...

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


--------------------
qqq
PM WWW   Вверх
SoWa
Дата 21.11.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Я был бы благодарен, если бы ты объяснил, что такое аппроксимация. Я бы подумал над твоим предложением.
Звучит дельно smile


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
maxim1000
Дата 21.11.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(SoWa @  21.11.2006,  13:48 Найти цитируемый пост)
аппроксимация

приближение
в данном случае я имел в виду, что эта статистика может нести полезную информацию о связях между понятиями и (если уж совсем оптимистами быть) всё это будет представлено в практически прямой форме: пара слов и степень связанности между ними

Это сообщение отредактировал(а) maxim1000 - 21.11.2006, 15:26


--------------------
qqq
PM WWW   Вверх
SoWa
Дата 21.11.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



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


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
maxim1000
Дата 21.11.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



хороший вариант был бы выделить тройку <понятие1> <тип связи> <понятие2>


--------------------
qqq
PM WWW   Вверх
SoWa
Дата 21.11.2006, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Но опять без словарика никак. Чтобы определять, существительное это, глагол, или еще что.
Вообще можно заняться. Что я и сделаю. Скоро статью выложу.

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


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
maxim1000
Дата 21.11.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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

то, что я предложил, - не метод решения задачи
это всего лишь какие-то характеристики, которые можно померять, и которые могут подсказать, в какую сторону двигаться

Добавлено @ 19:53 
что касается дополняемого словарика, возникнут проблемы с автоматическим отнесением нового слова к какой-либо части речи

Добавлено @ 19:54 
так что я бы сначала сделал "по-тупому" для всех слов без разбора (включая союзы smile), а потом бы уже смотрел, в какую сторону двигаться, на основании экспериментальных данных


--------------------
qqq
PM WWW   Вверх
SoWa
Дата 21.11.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Хм. Как без словарика можно определить такую структуру?
Цитата(maxim1000 @  21.11.2006,  16:38 Найти цитируемый пост)
<понятие1> <тип связи> <понятие2>

Не понимаю.

Цитата(maxim1000 @  21.11.2006,  19:51 Найти цитируемый пост)
что касается дополняемого словарика, возникнут проблемы с автоматическим отнесением нового слова к какой-либо части речи

Это легко. Слово встретил незнакомое- выдаст запрос- это что: существительное, глагол, наречие, др...
О! Кстати, можно попробовать научить прогу различать существительные и глаголы. Тогда как определить структуру- понятно.


Цитата(maxim1000 @  21.11.2006,  19:51 Найти цитируемый пост)
так что я бы сначала сделал "по-тупому" для всех слов без разбора (включая союзы ), а потом бы уже смотрел, в какую сторону двигаться, на основании экспериментальных данных

Т.е. составлял бы структуры аппроксимации попарных и более "арных" слов и сравнивал?
Для начала и это прокатит. Но уж совсем не оптимизировано.

Во! Придумал. Берем такие структуры. Хешируем. Составляем текст из них. Гоним сравнение таких текстов брутфорсом. Так можно реализовать твое последнее предложение. А можно еще разок выделить структуры smile Но это я уже только мечтаю. Реализация- понятна. Вот только как работать будет- не знаю smile

Это сообщение отредактировал(а) SoWa - 21.11.2006, 20:07


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
podval
Дата 21.11.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Превед велосипедистам! smile

Где научный подход?


Wowa
Почитай здесь: http://www.smolensk.ru/user/sgma/MMORPH/N-...eev/andreev.htm

У тебя подход, судя по задаче, должен быть похожим. Если, конечно, речь идет о текстах произвольного вида (т.е. пока не затрагиваются вопросы БД, где вид записей строго оговорен). Отталкиваемся от задачи классификации!
PM WWW ICQ   Вверх
sergejzr
Дата 21.11.2006, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Я бы упростил схему по стандартному методу, который уже много раз использовал в различных задачах. (Как уже писал в теме про антимат smile )

1) Нормализация текста
2) Сравнение

Теперь надо "развернуть" этото алгоритм по нашей задаче.
1а) Стеммер, в нижний регистр, елиминация всего, кроме слов, выкидываем предлоги итд.
1б)тезаури (маппинг синонимов);
1в) Создание общего вектора
2) Подсчёт дистанции Hamming'a

Этого должно хватить в 90% случаев. Я сам удивился, когда курсач писал и похожим методом практически точно классифицировал около 500 документов (кстати идея лично моя smile )

Пример:
т1: Мама мыла раму.
т2: Маша мыла пол.
т3: Мама купила мыло.
т4: Папа чистил паркет.

1а)
мам мыл рам
маш мыл пол
мам куп мыл
пап чист паркет

1б)
паркет - пол
мыл - чист
род - мам,пап //родители

1в) //1, если слово присутствует в тексте, 0, если нет

      род мыл рам маш пол куп

т1: 1      1      1      0     0     0  //Мама мыла раму.
т2: 0      1      0      0     1     0  //Маша мыла пол.
т3: 1      1      0      0     0     1  //Мама купила мыло.
т4: 1      1      0      0     1     0  //Папа чистил паркет.

2) //Дистанция - количество позиций, где вектора не совпадают
Дистанция(т1,т2)=3
Дистанция(т1,т3)=2
Дистанция(т1,т4)=2
Дистанция(т2,т3)=3
Дистанция(т2,т4)=1
Дистанция(т3,т4)=2

Чем больше дистанция, тем больше тексты отличаются. 
Этим алгоритмом можно и два текста сравнивать. Если сравниваешь много - то получается почти алгоритм, предложенный подвалом.
Как видим, даже при таком небольшом количестве слов, определяет неплохо.
И, как видим, большая ответственность приходится на тезаури. Но тут ведь многое от контекста зависит. ("Ягуар" - машина, или "Ягуар" - животное)

Цитата(podval @  21.11.2006,  19:05 Найти цитируемый пост)
У тебя подход, судя по задаче, должен быть похожим.

ИМХО не совсем похож.. Кластеризация и классификация текстов это слишком круто здесь. smile Хотя статья интересная.
Но тут текстов не так много и функции дискриминации попроще smile





--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
maxim1000
Дата 21.11.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата(SoWa @  21.11.2006,  19:04 Найти цитируемый пост)
Хм. Как без словарика можно определить такую структуру?

не, то я говорил как раз в продолжение мысли о словарике

Цитата(SoWa @  21.11.2006,  19:04 Найти цитируемый пост)
Это легко. Слово встретил незнакомое- выдаст запрос- это что: существительное, глагол, наречие, др...

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

Цитата(SoWa @  21.11.2006,  19:04 Найти цитируемый пост)
Для начала и это прокатит. Но уж совсем не оптимизировано.

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

Цитата(podval @  21.11.2006,  19:05 Найти цитируемый пост)
Превед велосипедистам!

smile
хобби такое вот - велосипедизм
во всех областях специалистом не станешь, а мозги разминки требуют smile


--------------------
qqq
PM WWW   Вверх
podval
Дата 22.11.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Цитата(sergejzr @  21.11.2006,  20:53 Найти цитируемый пост)
Цитата(podval @  21.11.2006,  19:05 )
У тебя подход, судя по задаче, должен быть похожим.


ИМХО не совсем похож.. Кластеризация и классификация текстов это слишком круто здесь.  Хотя статья интересная.
Но тут текстов не так много и функции дискриминации попроще 


Серж, ты именно здачу классификации и решил. 
Кстати, зачот smile
PM WWW ICQ   Вверх
sergejzr
Дата 22.11.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(podval @  22.11.2006,  09:20 Найти цитируемый пост)
Серж, ты именно здачу классификации и решил. 

Почти smile там были авторы - центроиды по которым собственно тексты и классифицировались. А тут почти тоже самое, только центроидов для сравнения нет.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Levenson
Дата 28.11.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Релевантность (англ. relevant) — степень соответствия запроса и найденного, уместность результата.
Основным методом для оценки релевантности является TF-IDF–метод, который используется в большинстве поисковых систем.
Вот ссылочка: http://ru.wikipedia.org/wiki/TF-IDF 

PM MAIL   Вверх
sergejzr
Дата 28.11.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Levenson, ну это релевантность документа к слову. Честно, ума не приложу, как её применить для сравнения документов. разве только каждое слово сравнивать. И потом, схема расчитана на относительную релевантность. Т.е зависит от самих документов в группе и их количества.
К примеру два текста, не совпадающие на одно слово, будут считаться похожими, если в группе всего три документа и третий ещё больше отличается от тех двух.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SID_M
Дата 6.12.2006, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Цитата(sergejzr @  28.11.2006,  21:55 Найти цитируемый пост)
 Честно, ума не приложу, как её применить для сравнения документов

Ты отчасти прав... сравнивать каждое слово, только по-умному.

Я бы сделал так: 
1) написал бы морфологический анализатор на словарной базе (словари уже готовы и бесплатны) для того чтобы по любому слову определять его начальную форму. Для начала рассматривал бы только существительные.

2) для каждого документа системы составил бы карту частоты встречаемости, используя подход "TF-IDF". Как показала практика в тексте достаточно большого размера слов, которые являются существительными не так уж и много.

3)далее я уже сравнивал бы такие карты для различных текстов

Кстати, в чем проблема?
Цитата(sergejzr @  28.11.2006,  21:55 Найти цитируемый пост)
 два текста, не совпадающие на одно слово, будут считаться похожими, если в группе всего три документа и третий ещё больше отличается от тех двух

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

--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
sergejzr
Дата 6.12.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(SID_M @  6.12.2006,  19:05 Найти цитируемый пост)
Они и так будут считаться похожими. Мож я не понял, чего ты хочешь сказать...

Нет, я конечно же совсем не то и не так хотел сказать  smile  smile  smile  smile Спасибо за то, что заметил smile Это предложение наверное осталось случайно. можно его не считать.

Имелось ввиду, что идея IDF в том, что если слово в документе встречается часто, а во всей группе - редко, то релевантность документа (по отношению к этому слову) будет расчитана как высокая. Таким образом она будет скакать в зависимости от количества документов.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SID_M
Дата 7.12.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Систему IDF я понял. Просто я предлагаю использовать только TF. А IDF оставить в покое. Т.е. анализировать схожесть текста только на основании словарей. Думаю, что такой подход имеет место быть.

Еще одно предложение: Считать сочетания понятий в предложениях и составлять такие же словари для них. Не секрет, что сочетания слов в тексте точнее характеризует этот текст нежели просто вхождение слов.
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
sergejzr
Дата 7.12.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(SID_M @  7.12.2006,  17:11 Найти цитируемый пост)
Не секрет, что сочетания слов в тексте точнее характеризует этот текст нежели просто вхождение слов. 

TF тоже относителен количеству слов в документе. Нет. ИМХО похожесть так не определишь..

Цитата(SID_M @  7.12.2006,  17:11 Найти цитируемый пост)
Не секрет, что сочетания слов в тексте точнее характеризует этот текст нежели просто вхождение слов. 

Это да, но такой анализатор на 10000 текстах будет буксовать... Хотя можно конечно многое сделать.
Я делал такую систему (как уже писал), но у меня были сочетания определены заранее. (Брал примеры и по ним сравнивал). Дело интересное, но опять же свои нюансы. Надо знать "о чём" документы.

Добавлено @ 18:26 
TF(А,Б) - сколько раз слово ""А находится в документе "Б".


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SID_M
Дата 7.12.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Цитата(sergejzr @  7.12.2006,  18:25 Найти цитируемый пост)
такой анализатор на 10000 текстах будет буксовать

1) Зависит от текстов
2) А никто легкой жизни и не обещал  smile 

Можно конечно сложность алгоритма посчитать, толтко лень как-то...  smile 
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
Artemios
Дата 9.12.2006, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 405
Регистрация: 14.8.2006
Где: Саратов, Россия

Репутация: 1
Всего: 50



Может быть пригодится:
http://company.yandex.ru/articles/spamooborona.html
http://company.yandex.ru/articles/article10.html

Добавлено @ 00:46 
P.S. Ссылки всплыли здесь:
http://forum.vingrad.ru/topic-125971.html
человек решает аналогичную задачу.


--------------------
fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ]
PM MAIL   Вверх
kulibinka
Дата 9.12.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Ага, я решил аналогичную задачу методом шинглов.
Теперь бьюсь над повышением ее быстродействия.

Кстати, возник вопрос:

Цитата

Я бы упростил схему по стандартному методу, который уже много раз использовал в различных задачах. (Как уже писал в теме про антимат smile )

1) Нормализация текста
2) Сравнение

Теперь надо "развернуть" этото алгоритм по нашей задаче.
1а) Стеммер, в нижний регистр, елиминация всего, кроме слов, выкидываем предлоги итд.
1б)тезаури (маппинг синонимов);
1в) Создание общего вектора
2) Подсчёт дистанции Hamming'a


Не подскажете где можно получить словари синонимов русского языка?
PM MAIL   Вверх
sergejzr
Дата 9.12.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(kulibinka @  9.12.2006,  11:50 Найти цитируемый пост)
Не подскажете где можно получить словари синонимов русского языка? 

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
kulibinka
Дата 10.12.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

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


А что такое "стандарнтый словарь"?

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

Но зачем это еще раз делать, если в стандартных словарях типа http://www.trishin.ru/slovar.html это уже давно сделано и подчищено?

Вот и хочется получить результат аналогичный http://www.trishin.ru/slovar.html, но не в виде программы, а в сыром (текстовом) виде для удобства встраивания в свои программы.

Это сообщение отредактировал(а) kulibinka - 10.12.2006, 13:00
PM MAIL   Вверх
sergejzr
Дата 10.12.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(kulibinka @  10.12.2006,  10:40 Найти цитируемый пост)
Но зачем это еще раз делать, если в стандартных словарях типа http://www.trishin.ru/slovar.html это уже давно сделано и подчищено?

Я давал пример слова "ягуар". Это может быть машина, а может быть животное. Зависит от типа текста и ещё кучи вещей. 
Цитата(kulibinka @  10.12.2006,  10:40 Найти цитируемый пост)
Я конечно понимаю как перелопатив горы текста правильным скриптом можно самому создать подобие словаря синонимов.

Нет, всё же скриптом не получится.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
kulibinka
Дата 10.12.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

Нет, всё же скриптом не получится


Категорично сказано smile

Общие словари синонимов ("стандартные") именно скриптами и делаются, только потом вылизываются.

Цитата

Я давал пример слова "ягуар". Это может быть машина, а может быть животное. Зависит от типа текста и ещё кучи вещей. 

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

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

Детали реализации можно посмотреть тут http://acl.ldc.upenn.edu/C/C02/C02-1007.pdf
Причем заметьте - это довольно старые результаты. А люди на месте не стоят - они все думают и думают...
PM MAIL   Вверх
_Y_
Дата 10.12.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



ИМХО, имеется попытка изобрести велосипед. Но велосипед особенный, который еще никому до ума довести не удалось. Сколь знаю (сидел на паре семинаров на эту тему, но сам не специалист), сравнение текстов пока что делается не на уровне разработок, а на уровне научных исследований. Если не ошибаюсь, желающим недо копать по ключевым словам Text digging и Neural networks. Скорее всего такая область как Semantics тоже сюда относится.

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

С начала:
  • Создать пустой список ключевых слов с синонимами. Он будет пополняться по ходу дела.
  • Задать какое-то критическое количество ключевых слов n для поиска. Величина n 
    подбирается методом тыка и, возможно, разнится в зависимости от того, что за тексты лежат в базе.
При вводе новой записи в базу:
1 Искать в БД идентичныую запись. Если найдена goto 9
2 Искать в новой записи слова из списка ключей. Находит, скажем x слов.
3 Если находится x >= n  ключевых слов, goto 6
4 Показать диалог что мол только x слов найдено и просьба задать дополнительные ключевые слова или синонимы слов имеющихся в списке.
5 Если слова заданы - загнать их в список, если нет - это уже на усмотрение программиста (или пользователя) - либо искать по имеющимся, либо goto 8
6 Искать в БД записи с теми же ключевыми словами. Если x > n ищутся все сочетания из n
7 Каждая найденная запись показывается в диалоге вместе со старой. Спрашивается: искать дальще или остановить ввод новой записи как дублирующей имеющуюся (это будет goto 9). Возможен и третий вариант - объединить записи и отредактировать результат (но это уже по вкусу)
8 Запись загоняется в БД
9 Дело сделано - бежим за пивом

Это сообщение отредактировал(а) _Y_ - 11.12.2006, 13:52


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
SID_M
Дата 11.12.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Цитата(kulibinka @  9.12.2006,  12:50 Найти цитируемый пост)
Не подскажете где можно получить словари синонимов русского языка?


Можно выдрать тезаурус MS Word. Где-то в нете даже встречал статью по этой теме.
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
SoWa
Дата 11.12.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



www.slovarik.ru
Много словарей.
_Y_, не велосипедист. Предлагалось всеми без исключения. Просьба читать тему с начала.
В конце концов, решение найдено. Хватит обсуждать решенный вопрос. Все нюансы были описаны, а если чего то нет, то есть в инете.

Это сообщение отредактировал(а) SoWa - 11.12.2006, 14:57


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
kulibinka
Дата 11.12.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

www.slovarik.ru
Много словарей.


Я не успел - к сожалению не открывается, а кеш гугля говорит "Site has been suspended"
PM MAIL   Вверх
kulibinka
Дата 11.12.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

Можно выдрать тезаурус MS Word. Где-то в нете даже встречал статью по этой теме


А хотя бы приблизительно ориентиры статьи не помните? А то погуглил пол часа да так и не нашел...
PM MAIL   Вверх
SID_M
Дата 12.12.2006, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 11.2.2005
Где: Россия, г. Москва

Репутация: нет
Всего: нет



Цитата(kulibinka @  11.12.2006,  16:27 Найти цитируемый пост)
А хотя бы приблизительно ориентиры статьи не помните?


Посмотри здесь: http://www.rvb.ru/soft/catalogue/catalogue.html
Там, возможно, не совсем то, что ты ищешь, но много интересного на эту тему.
--------------------
Если тебе не дано летать, то хотя бы ползай с гордо поднятой головой.
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1911 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.