![]() |
|
|
![]()
|
|
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Приветствую!
Упёрся в задачу, на первый взгляд элементарную, но со своими особенностями. Есть огромная БД содержащая анкетные данные в виде(несколько вариантов):
Разумеется, полей больше, но из примера видно, что они структурированы крайне слабо. Я вижу решение из двух шагов(возможно в корне не верное) : 1)Распарсить информацию на отдельные поля (Пупкин Василий Иванович,718923 4000 ТП № 48 20070101,СПб, ударников 23 17) 2)С помощью некоторого алгоритма категорировать данные(имя, паспорт, адрес). Тут первые крупные трудности : можно составить дерево решений, но элегантности и способности к модификации мало. Ещё одно решение, которое, как мне кажется, подходит: нейронные сети (перцептрон). Насколько возможно решить эту задачу на перцептроне и насколько это оправданно? 3) Уже категорированные данные опять парсить на более мелкие структуры и снова категорировать(город, улица, дом, корпус, квартира) теми же алгоритмами, что и на шаге два. Такой подход к решению выглядит вполне стройно, но может(читай скорее всего Это сообщение отредактировал(а) BoomeR - 7.10.2010, 20:53 |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Руками и мозгом. Дерево решений лучше всего рисовать на бумаге. Да понятно что лень и долго но другого выхода нет.
А помогут тебе регулярные выражения. Данные надо приводить к единому виду. 3) Не сработает надо будет переписывать по любому. |
|||
|
||||
| nworm |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Наверное, так.
Проходит. Распарсить - трудоёмкое и, следовательно, долгое по времени решение. Поисковый алгоритм,возможно, быстрее будет сделать, если вариантов анкеты очень много. Если вариантов анкеты мало - надо распарсить, это улучшит качество результатов.
Проходит, но нужно знать цели и по ним строить решение. Тут надо знать цели категорирования, хотя бы примерно. Иначе можно что-то не то сделать. По целям можно откатегорировать. В самом крайнем случае, потом прочитать всё за роботом и подправить. Там каждой анкете будет соответствовать список категорий или вообще одна категория и нужно будет просто давить "акцептед" или не давить и исправлять список, что при нормальном алгоритме будет редко. В любом случае, робот-категоратор - это хорошо, хотя бы поможет человеку принимать решения. Мне лично нравятся нейронные сети, но можно и что-то другое.
Проходит не очень чётко. Тут есть проблема, адреса обычно человек пишет, так что город с улицей может быть переставлен запросто и т.д. и т.п. Теми же алгоритмами, что и на шаге 2 не получится, нужна другая нейронная сеть минимум, и ошибаться она может часто. Не всякий человек отличит некоторые города от улиц, а дома от корпусов, не то что компьютер. |
||||||
|
|||||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Спасибо, за ответы! Разумеется, на шаге три нейронная сеть будет отличаться от НС на шаге два, я имел ввиду общность скелета-алгоритма.
nworm, а как быть с адресом? Мне поставлена задача обеспечить минимальную точность 66% - я думал нейронные сети это обеспечат, я не прав? |
|||
|
||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
nworm, ещё, сразу не обратил внимание, ручная проверка полностью исключена, т.к. невозможно просмотреть 6,5 млн+ записей
|
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Смотря как считать точность и какая именно задача. А так нормально нейронные сети работают. |
|||
|
||||
| BoomeR |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 24.12.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
nworm, под точностью понимается, что 66% из всех данных будут корректно категорированы. Задача именно в разбивке на поля и присвоение категорий.
|
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Разбивка на поля, если парсер будет разбивать, должна дать нужный процент. Единственный прикол, который может здесь возникнуть - много видов анкет, тогда парсер трудоёмко будет писать.
По категоризации. Если каждой анкете надо присвоить список категорий. Например, анкета строителя или анкета плотника, то всё зависит от количества нужной информации в анкетах. Если информации много, то процент должен быть достигнут. В моём примере должно быть много информации о профессиях. |
|||
|
||||
| neutrino |
|
|||
![]() Gothic soul ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3041 Регистрация: 25.3.2002 Где: Верхняя Галилея, Кармиэль Репутация: нет Всего: 62 |
Может я неправ, но по примеру видно, что синтаксис такой:
<поле>:<значение> Значит классифицировать надо по полю. Можно ограничиться регулярными выражениями. Можно заюзать даже самый простой LL(1) парсер, правда большинство готовых парсер генераторов - LR(1). Я бы делал так: 1) Лексер по регулярному выражению разбивает на: - токен для поля (с начала строки до двоеточия) - двоеточие - значение (с двоеточия до конца строки) 2) парсер имеет следующие синтаксические правила: файл --> записи | запись записи --> записи запись запись --> аттрибуты | атрибут атрибуты --> атрибуты атрибут атрибут --> <поле> <двоеточие> <значение> 3) семантика: - при свертывании последнего синтаксического правила нужно классифицировать все по полям (например с помощью хэш-таблицы) - при свертывании третьего правила можно считать количество записей Добавлено через 1 минуту и 26 секунд Еще забыл, что записи разделены пустой строкой. -------------------- The truth comes from within ... Покойся с миром, Vit |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |