Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Господа здравствуйте!!! У меня имеется MS SQL Server 2008. Там свалка документов разного рода, разных форматов и на разных языках. Мне подкинули новую задачку: Максимум - розбить всё по рубрикам, минимум - нахождение похожих документов.Скажите есть какие нибудь встроенные средства в MS SQL Server 2008 для реализации этого или надо писать самому? Сам пишу на С#. Если не сложно подскажите с чего начать и где можно поискать алгоритмы. Спасибочки!!!
22 июн 09, 16:24    [7329478]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а что для вас рубрика?

для спящего время бодрствования равносильно сну
22 июн 09, 16:26    [7329492]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
На сколько я пытался понять задачу то под рубрикой подразумивалось что есть 100-300 дкументов поиск похожих на них и давал бы рубрики. Т.Е. 100-300 рубрик.
22 июн 09, 16:35    [7329576]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Я погуглил интернет и понял что не всё так просто как мне казалось при розговоре с начальством. Есть немного корпоративных разработок но всё без SDK. Под себя не перепишишь. ;-(
22 июн 09, 16:44    [7329647]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
хорошо, подойдем с другой стороны. поиск рубрик - поиск какихлибо слов. другими словами FTS.
ищите на форуме, уже не раз обсуждалось.

для спящего время бодрствования равносильно сну
22 июн 09, 16:45    [7329659]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2pavlikalex
знаете такую фразу? "люди гибнут за металл"? вот тут тоже. все ноу-хау.

для спящего время бодрствования равносильно сну
22 июн 09, 16:46    [7329669]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Алексей2003 Если не сложно можно расшифровочку FTS чтоб я знал что искать.
22 июн 09, 16:50    [7329691]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Full-text Search

для спящего время бодрствования равносильно сну
22 июн 09, 16:52    [7329711]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Полнотекстовый поиск включён и настроен. В этом плане всё нормально. Но интересует алгоритм или технология по определению схожести документов что-то типа:http://www.searchinform.com/site/ru/main/search-inform-full-text-similar-documents.htm, http://www.searchinform.com/site/ru/main/search-inform-products-search-inform-corporate.htm
22 июн 09, 16:56    [7329739]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Эй не бросайте меня....
22 июн 09, 17:06    [7329806]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
определяете список слов для рубрики. определяете морфологию этих слов. ищите в документах все слова. и по проценту совпадения присваиваете ту или иную рубрику.

для спящего время бодрствования равносильно сну
22 июн 09, 17:16    [7329874]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
pavlikalex
Господа здравствуйте!!! У меня имеется MS SQL Server 2008. Там свалка документов разного рода, разных форматов и на разных языках. Мне подкинули новую задачку: Максимум - розбить всё по рубрикам, минимум - нахождение похожих документов.Скажите есть какие нибудь встроенные средства в MS SQL Server 2008 для реализации этого или надо писать самому? Сам пишу на С#. Если не сложно подскажите с чего начать и где можно поискать алгоритмы. Спасибочки!!!
Ручками, ручками делайте рубрикатор, раз сразу об этом не озаботились.
Естественно ручками пользователей
22 июн 09, 17:20    [7329902]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Огромное спасибо за совет но это чуть не то. Нужно с по смыслу искать похожие документы.
22 июн 09, 17:21    [7329911]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Подскажите а где об этом почитать?
22 июн 09, 17:23    [7329922]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

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

для спящего время бодрствования равносильно сну
22 июн 09, 17:34    [7330024]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Алексей2003
ах, вам еще и словарь синонимов надо использовать при поиске слов. т.е. сопоставляете одни словам похожими другими (отдельная таблица).
да нигде я про это не читал. из головы взял алгоритм. вас интересует как это реализовать?
если вы серверу не скажете, что эти слова похожи, то этого никто за вас не сделает.
все что вы можете искать, это готовые словари похожих слов и вычленять оттуда необходимые слова. ну а дальше все, как описал выше...

для спящего время бодрствования равносильно сну


но заметьте, если это реализовыывать руками, то довольно енпростая задача.
Ведь есть словоформы.
И даже майкрософт хитро реализовал поиск синонимов :
формы слов не генерируются.
22 июн 09, 18:23    [7330244]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
pavlikalex
Господа здравствуйте!!! У меня имеется MS SQL Server 2008. Там свалка документов разного рода, разных форматов и на разных языках. Мне подкинули новую задачку: Максимум - розбить всё по рубрикам, минимум - нахождение похожих документов.Скажите есть какие нибудь встроенные средства в MS SQL Server 2008 для реализации этого или надо писать самому? Сам пишу на С#. Если не сложно подскажите с чего начать и где можно поискать алгоритмы. Спасибочки!!!

Насколько я понял, нужно определить степень похожести документов... Есть у меня функция, которая делает нечто похожее (в SQL Server 2000 точно работает, в 2008 скорее всего тоже). Выдаёт степень похожести в %. Автор функции рекомендует использовать @MaxLen=3 и считать похожими документы, у которых на выходе будет >80%. Скорость работы зависит от размеров сравниваемых документов.

CREATE FUNCTION fn_FuzzyCompareString(
@Stri1 varchar(250),
@Stri2 varchar(250),
@MaxLen int)
RETURNS dec(19,6)
AS
BEGIN

DECLARE @Str1 varchar(250), @Str2 varchar(250), @SCountVar int,
@SCountEq int, @LenStr int, @Res dec(19,6)
DECLARE @NumSymbStr2 int
DECLARE @Cnt1 int, @Cnt2 int
DECLARE @SubStr varchar(250)

SELECT
@LenStr=1,
@SCountVar=0 ,
@SCountEq=0,
@res=0

Set @Str1 = replace(LTRIM(RTRIM(upper(@Stri1))),'.',' ')
Set @Str2 = replace(LTRIM(RTRIM(upper(@Stri2))),'.',' ')

if ((@MaxLen <= 0) or (Len(@Str1)=0) or (Len(@Str2)=0))
Begin
Set @Res=0
End
else
begin
While (@LenStr<=@MaxLen)
BEGIN
Set @NumSymbStr2=1
Set @Cnt2=0

While ((@Cnt2+@LenStr)<=LEN(@Str2))
BEGIN

Set @SubStr = '%'+SUBSTRING(@Str2,@NumSymbStr2,@LenStr)+'%'
if (PATINDEX(@SubStr, @Str1)<>0)
begin
Set @SCountEq=@SCountEq+1
end

Set @SCountVar=@SCountVar+1
Set @NumSymbStr2=@NumSymbStr2+1
Set @Cnt2 = @Cnt2+1
END


Set @NumSymbStr2=1
Set @Cnt2=0

While ((@Cnt2+@LenStr)<=LEN(@Str1))
BEGIN

Set @SubStr = '%'+SUBSTRING(@Str1,@NumSymbStr2,@LenStr)+'%'
if (PATINDEX(@SubStr, @Str2)<>0)
begin
Set @SCountEq=@SCountEq+1
end

Set @SCountVar=@SCountVar+1
Set @NumSymbStr2=@NumSymbStr2+1
Set @Cnt2 = @Cnt2+1
END

Set @LenStr=@LEnStr+1
END

end
if @SCountVar=0
SET @Res=0
Else
BEGIN
SET @Res=Convert(Numeric (10,5),@SCountEq)/Convert(Numeric (10,5),@SCountVar)
END

RETURN @Res
END
22 июн 09, 18:55    [7330335]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Winnipuh
замечу только то, что основная задача найти или составить этот необходимый для данной задачи словарь. а уж остальное - дело техники.

для спящего время бодрствования равносильно сну
22 июн 09, 19:54    [7330498]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Спасибо огромное за то что откликнулись.
23 июн 09, 13:10    [7332691]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Господа на данный момент интересуют алгоритмы поиска похожих документов ипользуя все возможности полнотекстового поиска. Т.Е. есть отмеченный документ в БД и хочется найти похожие на него с разной степенью схожести. Документы лежат в блобе в столбце типа image и проиндексированы полнотекстовым поиском. Я только добрался до изучения FTS. Подскажите насколько эта задача решаема FTSом и С#. Есть ли у кого нибудь какие либо наработки? И С ЧЕГО ВООБЩЕ МНЕ НАЧИНАТЬ???
25 июн 09, 11:46    [7341874]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
Ну хоть намекните чё делать, а то я в шоке с этой задачи.
25 июн 09, 13:18    [7342560]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
quazare
Member

Откуда: Новосибирск
Сообщений: 480
pavlikalex,

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

можно по-другому - из базы базу...

П.С. интересно было бы посмотреть на ваш код С#.
25 июн 09, 13:40    [7342738]     Ответить | Цитировать Сообщить модератору
 Re: Поиск похожих документов  [new]
pavlikalex
Member

Откуда:
Сообщений: 24
quazare
Нет кода, нет ничего по этому заданию. Просто если кто-то сталкивался с такой задачей прошу совета с чего начать. А зачем базу куда-то выгружать? У меня там данных на 4.5 терабайта, ну есть ещё 5тер ну выгружать то зачем?
25 июн 09, 14:32    [7343194]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить