Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг анкетных данных 
:(
    Опции темы
BoomeR
Дата 7.10.2010, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Приветствую!

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

ФИО : Пупкин Василий Иванович
Паспорт: 718923 4000 ТП № 48 20070101 
Адрес: СПб, ударников 23 17
 
Предоставленный паспорт: серия 4002 номер 718234 01.01.2008 ТП № 43 
Регистрация: Россия, Санкт-Петербург, пр. Ударников, д. 23, кв. 17
Имя: Василиса Ивановна Пупкина

Аббонент: Иван Пупкин Васильевич
Прописка: Ударников 23-17
паспорт№4052718123 01-01-2010 ТП № 48 

Разумеется, полей больше, но из примера видно, что они структурированы крайне слабо. Я вижу решение из двух шагов(возможно в корне не верное) :
1)Распарсить информацию на отдельные поля (Пупкин Василий Иванович,718923 4000 ТП № 48 20070101,СПб, ударников 23 17)
2)С помощью некоторого алгоритма категорировать данные(имя, паспорт, адрес). Тут первые крупные трудности : можно составить дерево решений, но элегантности и способности к модификации мало. Ещё одно решение, которое, как мне кажется, подходит: нейронные сети (перцептрон). Насколько возможно решить эту задачу на перцептроне и насколько это оправданно?
3) Уже категорированные данные опять парсить на более мелкие структуры и снова категорировать(город, улица, дом, корпус, квартира) теми же алгоритмами, что и на шаге два.

Такой подход к решению выглядит вполне стройно, но может(читай скорее всего  smile ) я что-то упускаю? Помогите советом...


Это сообщение отредактировал(а) BoomeR - 7.10.2010, 20:53
PM MAIL WWW ICQ Skype   Вверх
Pavia
Дата 7.10.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Руками и мозгом.  Дерево решений лучше всего рисовать на бумаге. Да понятно что лень и долго но другого выхода нет.
А помогут тебе регулярные выражения.
Данные надо приводить к единому виду.

3) Не сработает надо будет переписывать по любому.
PM MAIL   Вверх
nworm
Дата 7.10.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Наверное, так.

Цитата

1)Распарсить информацию на отдельные поля (Пупкин Василий Иванович,718923 4000 ТП № 48 20070101,СПб, ударников 23 17)


Проходит.

Распарсить - трудоёмкое и, следовательно, долгое по времени решение. Поисковый алгоритм,возможно, быстрее будет сделать, если вариантов анкеты очень много.
Если вариантов анкеты мало - надо распарсить, это улучшит качество результатов.

Цитата

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


Проходит, но нужно знать цели и по ним строить решение.

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

Мне лично нравятся нейронные сети, но можно и что-то другое.

Цитата

3) Уже категорированные данные опять парсить на более мелкие структуры и снова категорировать(город, улица, дом, корпус, квартира) теми же алгоритмами, что и на шаге два.


Проходит не очень чётко.
Тут есть проблема, адреса обычно человек пишет, так что город с улицей может быть переставлен запросто и т.д. и т.п.
Теми же алгоритмами, что и на шаге 2 не получится, нужна другая нейронная сеть минимум, и ошибаться она может часто. 
Не всякий человек отличит некоторые города от улиц, а дома от корпусов, не то что компьютер.
PM MAIL WWW   Вверх
BoomeR
Дата 8.10.2010, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, за ответы! Разумеется, на шаге три нейронная сеть будет отличаться от НС на шаге два, я имел ввиду общность скелета-алгоритма.


nworm,  а как быть с адресом? Мне поставлена задача обеспечить минимальную точность 66% - я думал нейронные сети это обеспечат, я не прав?
PM MAIL WWW ICQ Skype   Вверх
BoomeR
Дата 8.10.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nworm, ещё, сразу не обратил внимание, ручная проверка полностью исключена, т.к. невозможно просмотреть 6,5 млн+ записей  smile  Буду бороться за точность, в пределах допустимой погрешности...
PM MAIL WWW ICQ Skype   Вверх
nworm
Дата 8.10.2010, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

nworm,  а как быть с адресом? Мне поставлена задача обеспечить минимальную точность 66% - я думал нейронные сети это обеспечат, я не прав? 


Смотря как считать точность и какая именно задача.
А так нормально нейронные сети работают.
PM MAIL WWW   Вверх
BoomeR
Дата 8.10.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nworm, под точностью понимается, что 66% из всех данных будут корректно категорированы. Задача именно в разбивке на поля и присвоение категорий.
PM MAIL WWW ICQ Skype   Вверх
nworm
Дата 12.10.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

По категоризации.
Если каждой анкете надо присвоить список категорий.
Например, анкета строителя или анкета плотника, то всё зависит от количества нужной информации в анкетах. Если информации много, то процент должен быть достигнут. В моём примере должно быть много информации о профессиях.

PM MAIL WWW   Вверх
neutrino
Дата 13.10.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Может я неправ, но по примеру видно, что синтаксис такой:
<поле>:<значение>

Значит классифицировать надо по полю.
Можно ограничиться регулярными выражениями. Можно заюзать даже самый простой LL(1) парсер, правда большинство готовых парсер генераторов - LR(1).
Я бы делал так:

1) Лексер по регулярному выражению разбивает на:
- токен для поля (с начала строки до двоеточия)
- двоеточие
- значение (с двоеточия до конца строки)
2) парсер имеет следующие синтаксические правила:
файл --> записи | запись
записи --> записи запись
запись --> аттрибуты | атрибут
атрибуты --> атрибуты атрибут
атрибут --> <поле> <двоеточие> <значение>
3) семантика: 
- при свертывании последнего синтаксического правила нужно классифицировать все по полям (например с помощью хэш-таблицы)
- при свертывании третьего правила можно считать количество записей

Добавлено через 1 минуту и 26 секунд
Еще забыл, что записи разделены пустой строкой.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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