-
> Сергей М. (21.10.2008 19:28:16) [16]
Методом экспроприации
-
Сайт <> Файл
Так откуда взялся файл ?
-
Eraser © (21.10.08 16:39) [4] >в том виде, в котором информация предоставляется сейчас (как попало) >ничего распарсить не получится со 100% результатом качества, все равно >потом перепроверять человеку прийдется. Неправда. Именно на такую информацию - легко написать парсер который будет 90% правильно разбирать и оставшиеся 10% представлять в виде удобном для анализа. У меня такую работу студентка-дипломница делала без проблем. Хинт - разбивается на лексемы те на группы построчно. email-ы и телефоны парсятся однозначно и сразу - тут не о чем и говорить. Все адреса при парсинге элементарно проверяются пор справочнику - тоже исключаются неоднозначности. На типовые фразы составляется словарь. Это начало дальше немного сложнее но проблем нет. Потом оператор проверяет только неразобраное
-
> Так откуда взялся файл ?
Если данные на сайте выделить и скопировать в буфер, то их затем можно будет вставить в обычный текстовый файл. Файлы эти будут похожи на те, которые я привел в вопросе. Анатолий, заголовки полей, как я понял, в моём случае такие: Исходные данные | Название фирмы | Телефон | Адрес | ... А что будет исходными данными, можно пример?
-
> Kolan © (21.10.08 19:47) [23]
Ну да ладно.
Вставил и вставил.
А ты, мил человек, с технологиями и механизмами регулярных выражений хоть в коей-то мере знаком ?
-
Sergey Masloff, а как рабить на блоки? Я считаю, что это самое сложное. Как понять, что тут: Кварта-Трейд Подробная информация об организации
Город: Аксайский р-н, Аксай
Адрес: Промышленная ул. 5
Телефон: (86350) 49396
(86350) 48985
(86350) 56292 — факс
E-mail: Отправить e-mail
Транс-Абсолют Экспорт-Импорт, дилер автомобилей SCANIA Подробная информация об организации
Город: Аксайский р-н, Аксай
Адрес: Промышленная ул. 2
Телефон: (86350) 55155
(863) 2919333 — г.Ростов-на-Дону
(863) 2919222 — г.Ростов-на-Дону
(863) 2919111 — г.Ростов-на-Дону
(863) 2999000 — диспетчерская
E-mail: Отправить e-mail два блока реквизитов?
-
Сергей, в вопросе я пишу: «Некоторые данные (телефон, почта) можно легко найти с помощью рег. выражений...», видимо знаком :).
-
> Kolan © (21.10.08 19:55) [26]
А все остальное, мил человек, не регулярное.. и ищется с пом. того самого "ИИ", который тебе предстоит изобрести)
-
В принципе, Сергей Маслофф подсказал куда копать — лексемы. Осталось только отделить блоки данных, может таки в два прохода?
-
> [22] Sergey Masloff (21.10.08 19:39)
и, тем не менее, без проверки человеком не обойтись. довольно просто написать парсер, который сделет пусть 70-80% работы, но очень сложно написать парсер, который сделает 90-95% работы. цифры грубо привел, но думаю мысль понятна. чем отвлекать на несколько дней квалифицированного программиста, проще сделать базовый скрипт, а потом поручить работу девочке. конечно от объемов данных зависит.. если записей миллионы (даже сотни тысяч) и более, тогда я не прав, но смоневаюсь, что у автора такие объемы данных.
-
Eraser, смысл отвлекать программиста есть. Программист, то есть я, должен показать на новой работе, что он умеет программировать :) Пусть 70% сейчас я не понимаю как и 1% найти. Ну разложу я на лексемы, ну понахожу телефоны и все «простое», и что из этого? Что делать с этим добром? Как вычленить группы реквизитов? — Хз...
-
> может таки в два прохода?
Да хоть в двести !
Во сколько проходов, мил человек, ты определишь судьбу того, в "файле" которого так или иначе фигурируют "казнить" и "помиловать" ?
-
> [30] Kolan © (21.10.08 20:11)
из тех примеров, что ты привел нифига не понятно, как разделять на группы. надо просмотреть все записи и составить список признаков начала/окончания блока. потом в нужной последовательности пытаться разбивать текст по этим признакам.
-
> Kolan ©
Блок данных почти во всех случаях имеет адрес. Его можно использовать в качестве разделителей блоков(информация о конторе). + нужно еще сделать правки вверх или вниз. Например вверх на одну строку, поскольку в большинстве случаев
Пусть он будет в виде. a) Адрес: .... б) ....
Таким образом ты делаешь нетерминалом - реквизит. И пытаешься свернуть правую часть раньше левой части. То есть как только в потоке встречается поток представляющий новый нетерминал. Начинаешь его анализ. И в случае успеха, останавливаешь предыдущий(то есть реквизит останавливается на начале нового), в случае провала продолжаешь старый реквизит.
То есть действуешь по принципу почти LR анализатора. Пытаешься свернуть, то что справа. Но действуешь явной без грамматики(оно задана частично).
Например
Нашли нетерминал
1. Город: (терминал - это удачно, но не всегда так будет) 2. Аксайский 3. р-н, 4. Аксай
О!!!! новый нетерминал
5. Адрес: 6. Промышленная ул. 7. Телефон: (86350) 49396
С телефоном сложнее придется придумать несколько правил на него. И рассматривать самое длинное правило в грамматике. Аля прогностический оператор.
P.S. Я к сожалению не эксперт. Читаю в данный момент сам. Пока только написал ДКА построитель для рег. выражений. Уверен Ахо бы тебе помог.
-
> oxffff © (21.10.08 20:21) [33]
Уж сколько раз твердили миру - бардак не поддается автоматизации его разгребания)
-
> Сергей М. © (21.10.08 20:26) [34]
Как бы нам не хотелось, хотим мы того или нет, но мы всегда вынуждены бороться со сложностями. Слава богу что мир не идеален, для нас всегда найдется работа. ;)
-
> oxffff © (21.10.08 20:30) [35] > > Сергей М. © (21.10.08 20:26) [34] > мы ..вынуждены бороться со сложностями.
Кроме тебя вряд ли кого-то понуждают)
Давай уже не трынди)
-
Сергей М. © (21.10.08 20:26) [34] >Уж сколько раз твердили миру - бардак не поддается автоматизации его >разгребания) Ну так мир не в нашей власти (скорее наоборот) поэтому тверди не тверди а разгребать приходится ;-)
-
Sergey Masloff, нужен еще хинт. Положим, что блоки чётко разделены. Вот я разбил строки на лексемы для двух примеров. Кварта-Трейд
Подробная
информация
об
организации
Город:
Аксайский
р-н,
Аксай
Адрес:
Промышленная
ул.
5
Телефон:
(86350)
49396
(86350)
48985
(86350)
56292
—
факс
E-mail:
Отправить
e-mail ПихтинАвто
344090,
Ростов-на-Дону,
Малиновского
ул.,
13а/1
(Автосервис)Общий:
(863)
200-77-88
;Эвакуатор:
(863...
;Кузовной
цех:
(863...
;E-mail:
www.pihtinauto@aaanet.ru
Ростов-на-Дону,
Авторынок
Фортуна,
павильон
№46Общий:
(863...
;
Ростов-на-Дону,
Авторынок
Алмаз,
павильон
№129Общий:
(863...
;
Ростов-на-Дону,
Малиновского
ул.,
13в
(Автозапчасти)Общий:
(863...
;
Автозапчасти
на
европейские,
японские
и
корейские
автомобили,
автосервис,
электронная
измерительная
система
параметров
кузова,
чип-тюнинг,
автострахование,
независимая
оценка
ущерба
Web-сайт:
www.pihtinauto.rostov.ru Теперь что? Иду полексемно? И что делаю?
-
Kolan © Если в лоб (на тех данных что приведены) я бы попробовал выделять адреса (это можно делать с достаточно высокой степенью достоверности). Причем в адрес объединять возможно несколько подряд идущих строк перед которыми есть строка точно с не-адресом. Написать анализатор который такие блоки выделяет. Потом взять достаточно большой массив исходных данных и порезать его на куски беря например на одну строку "выше" начала адреса. И статичтически посмотреть сколько будет ошибок сразу. Ну и дальше по обстановке
|