Конференция "Прочее" » Парсинг текста и выделение реквизитов.
 
  • Kolan © (21.10.08 15:23) [0]
    Здравствуйте,
     Мне нужно сделать парсер, который мог бы в тексте находить реквизиты; нужен ваш совет. Сложность заключается в том, что текст может быть совсем любой.

    Пример №1
    Кварта-Трейд Подробная информация об организации
    Город:  Аксайский р-н, Аксай
    Адрес:  Промышленная ул. 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



    Пример №2
    ПихтинАвто
    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



    Пример №3
    Автобаза СКЖД  
    Город: Ростов-на-Дону
    Адрес: Шолохова пр. 5а  
    Телефон:  (863) 2595684


    Автоколонна №1558  
    Город: Ростов-на-Дону
    Адрес: Нансена ул. 103  
    Телефон:  (863) 2348455  — приемная
    (863) 2323335  — диспетчерская
    (863) 2321339  — диспетчерская
    (863) 2345938  — служба безопасности
    (863) 2345892


    АТП администрации РО  
    Город: Ростов-на-Дону
    Адрес: Текучева ул. 376  
    Телефон:  (863) 2535881  — диспетчер
    (863) 2533090  — диспетчер
    (863) 2276017  — Театральный, пр., 62а
    (863) 2530990  — директор
    (863) 2276117  — Пеатральный, пер., 62а-ПТО



    Основное требование — как можно большая автоматичность и универсальность, но можно ошибаться. Например, если в город попадет еще и строка «Подробная информация об организации», то это не страшно.

    Некоторые данные (телефон, почта) можно легко найти с помощью рег. выражений. Город и адрес можно поискать в КЛАДРе или, опять же, придумать рег. выражение. А вот как понять где название фирмы? И как сгруппировать найденные реквизиты, ведь не всегда (пример №1) они разделены разделителем?
    — Ничего не получается придумать.

    Хотелось бы услышать ваши соображения по поводу того, как можно подойти к решению задачи.
  • Eraser © (21.10.08 15:27) [1]
    > [0] Kolan ©   (21.10.08 15:23)

    общее решение задачи - ИИ.
  • Kolan © (21.10.08 16:25) [2]
    Предложения нужны конкретные, если ИИ, то как конкретно. Если условаия слишком общие, то как бы вы их ужесточили. То есть я хочу пононять как бы вы решали такую задачу, конкретно, что бы делали...
  • clickmaker © (21.10.08 16:30) [3]
    > А вот как понять где название фирмы?

    так оно там не первой строкой разве?

    > ведь не всегда (пример №1) они разделены разделителем?

    а там не перевод строки разделитель?
  • Eraser © (21.10.08 16:39) [4]
    > [2] Kolan ©   (21.10.08 16:25)

    путей несколько:
    1. заставить/попросить того, кто присылает этот текст следовать какому-либо четкому шаблону.
    2. разгребать все самому вручную, либо поручить это кому-либо.

    в том виде, в котором информация предоставляется сейчас (как попало) ничего распарсить не получится со 100% результатом качества, все равно потом перепроверять человеку прийдется.
  • TUser © (21.10.08 16:47) [5]
    100% гарантии никто не даст

    главная сложность - вычленить название компании из всего этого мусора
  • Anatoly Podgoretsky © (21.10.08 16:49) [6]

    > Kolan ©   (21.10.08 16:25) [2]

    Грид две/три колонки
    СheckMark    Значение    Тип (комбобокс)

    Что можешь автоматически опознать опознаешь, что нет то сам задаешь в комбобокс.

    Но похоже, что ты хочешь украсть чужую информацию, с веб сайтов.
  • Kolan © (21.10.08 16:53) [7]
    > так оно там не первой строкой разве?

    На первой, на первой строке блока, а как выделить блок?


    > а там не перевод строки разделитель?

    Да, он, только он же раздялет и все остальное...


    > 1. заставить/попросить того, кто присылает этот текст следовать
    > какому-либо четкому шаблону.

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


    > 2. разгребать все самому вручную, либо поручить это кому-
    > либо.

    Как разгребать? Что именно предлагается?

    Сто процентное качество не требуется, я об этом писал в [0].
  • clickmaker © (21.10.08 17:03) [8]
    > Но похоже, что ты хочешь украсть чужую информацию, с веб
    > сайтов.


    > Это совершенно невозможно, исходные данные копируются с
    > сайтов, с любых.


    :)
  • KilkennyCat © (21.10.08 17:04) [9]
    Парсер - это набор правил. Если ты можешь выявить что-либо в этом тексте, согласно этим правилам, то какие-проблемы их описать?

    О 100% качестве.
    Тут нельзя говорить 100 или 90 или 2 процента. Либо-либо. Либо парсит, либо не парсит. Ибо, если парсинг предполагает ошибки, то проверяющему человеку придется проверять все абсолютно.
  • Eraser © (21.10.08 17:04) [10]
    > [7] Kolan ©   (21.10.08 16:53)


    > Как разгребать? Что именно предлагается?

    разгребать спорные места.
    как-то контора, где я работал, делала сайт по отелям tur-hotel .ru (описание отеля, описание пляжа, фотки, отзывы об отеле и т.п.). т.е. была собрана база из примерно 30000 отелей, информация по-возможности структурированна в CSV файл, но тоже были спорные места. так вот разгребать эти спорные места поручили девочке секретарше ) справилась вполне нормально примерно за месяц (+/- неделя), при том, что занималась этим час-два в день. особой срочности не было.
  • Kolan © (21.10.08 17:53) [11]
    > ...что нет то сам задаешь в комбобокс.

    Понял идею. Боюсь будет много «непонятного».


    > Но похоже, что ты хочешь украсть...

    Украсть хочу не я, я хочу написать парсер :) Кстати, я точно не знаю для чего им будут пользоваться, может и не для воровства. Да и воровством это не назовёшь, данные в отрытом доступе, тайного хищения тут нет.


    > Парсер - это набор правил. Если ты можешь выявить что-либо
    > в этом тексте, согласно этим правилам, то какие-проблемы
    > их описать?

    Согласен. Описать проблем нет. Проблема придумать правила.

    Eraser, я понял, ты предлагаешь примерно то же, что и АП в [6].


    > главная сложность - вычленить название компании.

    Мне кажется, что если бы их вычленить, то можно былобы легко поразбивать на блоки, и дальше было бы легче. Как бы это сделать...
  • Anatoly Podgoretsky © (21.10.08 19:04) [12]
    Это не важно, что ты только объявление дал :-)
    Сомневаюсь, что держатели сайтов давали добро на собирание базы таким способом. На подобное должно быть письменное разрешение, кроме того у сайта выгоднее купить уже структированую информацию, чем ее воровать.
  • Kolan © (21.10.08 19:06) [13]
    Анатолий, эта тема, я думаю, выходит за пределы данного топика.
  • Anatoly Podgoretsky © (21.10.08 19:15) [14]
    > Kolan  (21.10.2008 19:06:13)  [13]

    Я еще думаю закрыть или нет.

    Задача решения не имеет, все что можно сделать так это удобное средство для указания аттрибутов и разделения из на строки
    Вообще то ничего писать не надо, может только предварительный парсинг, а инструмент обычный Эксель, потом с него в базу.
  • Kolan © (21.10.08 19:21) [15]
    Я понимаю, что в таком виде задача не имеет нормального решения, поэтому я и спрашиваю что бы вы (отвечающие) делали, как подходили бы к задаче. Вариант с удобным указанием аттрибутов — один из ответов. Может быть будут другие.
  • Сергей М. © (21.10.08 19:28) [16]

    > Kolan ©   (21.10.08 19:21) [15]


    Этот файл с "атрибутами-реквизитами" к тебе с какой Луны падает ?
  • Kolan © (21.10.08 19:29) [17]
    Я вот думал, может сделать парсер многопроходным? На первом проходе можно попробовать найти то, что найти легко — телефоны, емэйлы, адреса сайтов, города (по КЛАДР), и, возможно, улицы. А на втором проходе используя даннные найденые на первом выделять блоки реквизитов по, например, расстоянию в строках или символах между телефонами или еще чем-то.

    Есть идеи?
  • Kolan © (21.10.08 19:32) [18]
    Пользователь-Луна заходит на сайт (пример http://allorostov.ru), копирует данные, вставляет их в мемо.
  • Anatoly Podgoretsky © (21.10.08 19:34) [19]
    > Kolan  (21.10.2008 19:21:15)  [15]

    Мне многократно приходилось решать подобные задачи. Я обычно загонял в базу и там ручками редактировал, но делал предварительно два комплекта полей,  исходные данные и конечная структура. Конечное частично заполнялось автоматически, там где это возможно, где нет, то оставалось пустым. Далее оператор проходил по записям и при необходимости корректировал и/или копировал информацию из полей. Иногда делалось многократная автоматическая корректировка, когда после каждого прохода дописывалась программа или корректирующий скрипт. Потому что разделение делалось довольно глубое, например адреса и фамилии разбивались на составляющие, в итоге ручной работы оставалось немного. Адреса к тому же приводились к единому виду, что бы не было такого, как Московская область/Московская обл. Часто это делалось просто в Экселе, с помощью его формул и отсутствие нужды в программисте. После некоторой дроссировке эту работу делала свободная девушка.


    Исходные данные | Field1 | Field2 | FieldN |

 
Конференция "Прочее" » Парсинг текста и выделение реквизитов.
Есть новые Нет новых   [134444   +24][b:0][p:0.003]