Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

выделение наиболее частых последовательностей   Найти похожие ветки 

 
turbouser ©   (2014-03-28 00:30) [40]

Ип Ман - китаец такой был, мастер боевых искусств :)
http://ru.wikipedia.org/wiki/%D0%98%D0%BF_%D0%9C%D0%B0%D0%BD


 
clickmaker ©   (2014-03-28 08:47) [41]

> Ип Ман - китаец

значит, надо анализировать еще и регистр символов


 
[ВладОшин] ©   (2014-03-28 20:56) [42]


> Кщд   (27.03.14 21:36) [37]

обязательно, но потом
надо пока идею проверить 6)


 
[ВладОшин] ©   (2014-03-28 21:04) [43]


> обязательно, но потом

т.е. пока "так быстро бегаем, что не успеваем тачки грузить" (с) :)


 
[ВладОшин] ©   (2014-03-31 21:41) [44]

есть таблица, с уже распознанными именами
CREATE TABLE [dbo].[CorpPrivate](
[name] [varchar](999) NULL,
[iscorp] [varchar](999) NULL
) ON [PRIMARY]

--------
создадим таблицу-справочник

CREATE TABLE [dbo].[Spr_CorpPrivate](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[Word] [varchar](50) NOT NULL,
[Corp] [int] NOT NULL,
[Priv] [int] NOT NULL
) ON [PRIMARY]


и триггер, для облегчения заполнения справочника
ALTER TRIGGER [dbo].[insert_spr_corp_priv]
  ON  [dbo].[Spr_CorpPrivate]
  INSTEAD OF INSERT
AS
BEGIN
 SET NOCOUNT ON;
 INSERT INTO [dbo].[Spr_CorpPrivate]
      (Word, [Corp], [Priv])
      SELECT distinct I.[Word], 0, 0
      FROM inserted I
        left join [dbo].[Spr_CorpPrivate] T on T.Word = I.Word
   where T.Word is null;

 update T
 set t.corp = t.corp + Z.corp,
     t.priv = t.priv + Z.priv
 from [dbo].[Spr_CorpPrivate] T
      join (select i.word word, sum(i.corp) corp, sum(i.priv) priv
            from inserted i
      group by word )
                 Z on Z.word = T.Word;
 
 
END

-------------
процедура вставки в справочник. Тупо по словам вставляем в справочник


ALTER PROCEDURE [dbo].[add_to_spr_corp_priv]
@in_str varchar(1024),
@in_CP char(1)
AS
BEGIN
SET NOCOUNT ON;
declare @str varchar(1024);
declare @CP char(1);
--set @str = "ООО "МОЙ ДОМ"";
--set @CP = "Y";
set @str = @in_str;
set @CP = @in_CP;

set @str = replace(@str, ",", " , ");
set @str = replace(@str, ".", " . ");
set @str = replace(@str, "-", " - ");
set @str = replace(@str, """, " " ");
set @str = replace(@str, "  ", " ");

select @str = "select """ + replace(@str, " ", """ as word, 0 corp, 0 priv union all select """) + """,0,0 ";
-- print @str
declare @t table(id int identity, word varchar(100), corp int, priv int);
insert into @t
exec (@str);

if  @CP = "Y"
update @t set corp = 1
else
update @t set priv = 1;

insert into [dbo].[Spr_CorpPrivate] ([Word], [Corp], [Priv])
                              select word, corp, priv
         from @t where word <> "";
END

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

копим слова

declare @FIO varchar(4000), @c char(1);
declare CCC Cursor fast_forward for
  select Q.Name, Q.iscorp
  from [CorpPrivate] Q;

OPEN CCC;
FETCH NEXT FROM CCC INTO @FIO, @c;
WHILE @@FETCH_STATUS = 0
BEGIN
 exec add_to_spr_corp_priv  @FIO, @c;
 FETCH NEXT FROM CCC INTO @FIO, @c;
END;
CLOSE CCC; DEALLOCATE CCC;


-------------------------
имеем в справочнике:
Word Corp Priv

АРБИТРАЖНЫЙ 570 0
ВТОРОЙ 161 0
СУД 1005 0
ГАВРИЛИНА 3 45
ОЛЬГА 291 14024
и т.п.

дальше пока не написал :)
смысл - тестируемую разбиваем по словам и все слова ищем в таблице-справочнике соответствий, суммируя признаки.
Каких признаков больше - то и есть.


 
[ВладОшин] ©   (2014-03-31 21:45) [45]


> дальше пока не написал :)

написал :)
но нет, надо не так. Переписываю..


 
картман ©   (2014-03-31 22:03) [46]


> Каких признаков больше - то и есть.

да ладно, т.е. "ОАО Алексей Иванов" - частник?


 
[ВладОшин] ©   (2014-03-31 22:40) [47]

ну где же

SELECT sum([Corp]) - sum([Priv])
 FROM [dbo].[Spr_CorpPrivate]
 where word in (
 "ОАО",
 "Алексей",
 "Иванов"
 )

72 260!


 
[ВладОшин] ©   (2014-03-31 22:43) [48]

точнее так надо:

SELECT cast((sum([Corp]) - sum([Priv])) as float) / (sum([Corp]) + sum([Priv]))
 FROM [Coordinates].[dbo].[Spr_CorpPrivate]
 where word in (
 "ОАО",
 "Алексей",
 "Иванов"
 )


 
Styx   (2014-03-31 23:25) [49]


> Ип Ман - китаец такой был, мастер боевых искусств :)
>

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


 
clickmaker ©   (2014-03-31 23:46) [50]

Удалено модератором


 
[ВладОшин] ©   (2014-03-31 23:50) [51]

ь знак не может быть не в конце :)


 
картман ©   (2014-04-01 00:06) [52]

Удалено модератором


 
й   (2014-04-01 10:42) [53]

[ВладОшин] > ...суммируя признаки. Каких признаков больше - то и есть.

не уверен. я бы предложил попробовать считать среднеарифметическое от Corp/(Corp+Priv)
то есть если у вас в названии будет 2 слова с противоположным соотношением попаданий, но разными частотами употребления, типа
Слово1 10000 100
Слово2 10 1000
то получите (10000+10)/(100+1000) (у вас формула другая и зачем там вычитание я вообще не понял, но суть вроде та же) т.е. гораздо чаще встречающееся слово полностью "задавит" второе
в моём же варианте будет (10000/10100+10/1010)/2 = 0,5 (половинная вероятность попадания в Corp), т.е. противоположные соотношения полностью уравновесили друг друга, несмотря на разные частоты употребления слов

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


 
ВладОшин ©   (2014-04-01 11:08) [54]


> й   (01.04.14 10:42) [53]



>  зачем там вычитание я вообще не понял

все просто: если будет минус, то это ФизЛицо. Плюс - ЮрЛицо.
А величина - вероятность. Да, это не совсем вероятность, в строгом понимании.
Скажем так, это некая количественная оценка, близкая к вероятности.

>> т.е. гораздо чаще встречающееся слово полностью "задавит" второе
да. Это и преследуется.


 
ВладОшин ©   (2014-04-01 11:26) [55]

print [dbo].[IsCorpProbality]("СОЛИКАМСКИЙ ИГОРЬ СЕРГЕЕВИЧ")
-0.919797

но:
print [dbo].[IsCorpProbality]("ИП СОЛИКАМСКИЙ ИГОРЬ СЕРГЕЕВИЧ")
-0.0447461

т.о. я бы не очень доверял abs(оценке) < 0.3 или 0.4

итого
Руководство говорит: Дайте 1000 ФЛ. Или сажаем оператора часа на 2
или
Пишем: select top 1000 .. where .. and IsCorpProbality () < -0.4

или апдейтим таблу по abs(оценке) > 0.3 в зависимости от знака
остальное операторы глазами доотметят. Если надо  всех разобрать.

Но обычно не надо :)
Есть список, тысяч на 50
Достаточно по 10-20 тысяч выбрать, что бы предел нашего "производства" перекрыть


 
й   (2014-04-01 12:43) [56]

ок, главное - эмпирически проверить оптимальность
и тогда уж select top 1000 .. order by IsCorpProbality DESC


 
ВладОшин ©   (2014-04-02 10:17) [57]

это все хорошо, но все равно это все не то...

>> выделение наиболее частых последовательностей
1. СоликамскЗерно, СтравропольЗерно, КазахстанЗерно,
т.е. ххххЗерно
2. ПензаЗерно

как бы сделать так, что бы имея 1 как ЮЛ, определить что 2 тоже ЮЛ?
разумеется, в общем случае


 
turbouser ©   (2014-04-02 10:21) [58]


> [ВладОшин] ©   (31.03.14 23:50) [51]
>
> ь знак не может быть не в конце :)

А как же Лесь, Василь и т.п.?


 
turbouser ©   (2014-04-02 10:27) [59]


> turbouser ©   (02.04.14 10:21) [58]
>
>
> > [ВладОшин] ©   (31.03.14 23:50) [51]
> >
> > ь знак не может быть не в конце :)


Сорри :)
Чукча писатель..


 
ВладОшин ©   (2014-04-02 10:29) [60]

м-да..
товарищи :
Дума А.В.
Мед А.П.
Работа А.М.
Сосна С.П.

с близкой к 100% вероятности - ЮЛ  :)
"X.Y." - тоже как-то надо учитывать..


 
ВладОшин ©   (2014-04-02 10:30) [61]


> turbouser ©   (02.04.14 10:27) [59]

ни че. не каждый не поймет :)


 
ВладОшин ©   (2014-04-02 10:31) [62]


> turbouser ©   (02.04.14 10:27) [59]

к тому же,  я не прав: Лоськин


 
Mystic ©   (2014-10-31 21:05) [63]

Байесовские сети, Бернулли, наверное, чуть лучше. Копать можно в сторону учета сочетаний, ...



Страницы: 1 2 вся ветка

Текущий архив: 2015.09.10;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.058 c
2-1394026817
Дмитрий
2014-03-05 17:40
2015.09.10
Общий тип для манипуляции несовместимыми типами с общими свойств.


15-1419599048
Maksim_76
2014-12-26 16:04
2015.09.10
LG Караоке- Диск проблема конвертации


15-1415007687
Trylok
2014-11-03 12:41
2015.09.10
Перевод специальности диплома на англ. язык


2-1393570213
Михаил
2014-02-28 10:50
2015.09.10
вставка текста в MS Word через OleContainer


15-1413405004
Юрий
2014-10-16 00:30
2015.09.10
С днем рождения ! 16 октября 2014 четверг