powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
12 сообщений из 12, страница 1 из 1
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840448
osi777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГОСПОДА ЗНАТОКИ ПОДСКАЖИТЕ:
есть такая необходимость сделать следующее
есть поле типа varchar2(100) (oracle) где через пробел находится фамилия, имя, отчество типа:
ИВАНОВ ИВАН ИВАНОВИЧ
Необходимо всю эту лабуду разнести отдельно фамилия, отдельно имя и отчество по полям типа varchar2(25 или 35)
это уже не принципиально,
думается делать алгоритм типа: буквы до 1 пробела - фамилия, после - имя, а после 2 пробела-отчество.
Однако же таблица большая там около 200 тыс. записей, боюсь типа "попасть" строку где по каким-то причинам будет не 2 а 3 пробела
(кривизна рук операторов) или же отчетво или имя с приставкой типа ОГЛЫ и т.п., т.е. в строке уже не 2 а 3 пробела.
Мож кто выскажет соображение как это победить.
Думал над тем, шобы до 1 пробела фамилия, после - имя, а после 2 пробела - отчество - хотя это не есть истина???
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840463
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если говорить о гражданах нашей страны, то фамилия у нас может быть либо одиночная либо двойная через дефис, соответственно алгоритм "до первого пробела" уместен.

А вот с именем и отчеством есть нерешимая засада. Отчество в некоторых случаях может отсутствовать, а имя может состоять из нескольких слов.
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840488
Фотография Infernal V. Raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может и пропарсить только те записи у которых стандартный набор пробелов(читай 2) и дефисов нет, а оставшиеся вручную. 200тыс. не очень много, в ручной набор уйдет где-то сотни три, при условии что городок все-таки русский.
---
aka VIR
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840511
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда-то решал подобную задачу на фоксе... ф.и.о. таким же образом на куски разрезал, а так же паспортные данные на три части серия, номер, а так же кем и когда выдан... могу скинуть кусок кода...

Группы пробелов кстати заменял по алгоритму на один, в цикле пока есть хотя бы два стоящих рядом пробела заменял их на один...
Очень красиво получилось, начальник остался доволен, хотя и говорил сперва "Забей на парсинг" :)
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840519
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladBoyr
Само собой. У нас есть еще один веселый момент - для иностранцев, само собой, требования мягче, но тем не менее нужно проверять отсутствие смеси русских и нерусских букв.
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840750
osi777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to VladBoyr
на мыло прошу кусок кода интересно глянуть osi777@nm.ru
контенгент граждан там самый различный и русские и с 3 пробелами и иностранцы.
буду думать...
ещё такой вариант вижу: 1 проход 2 пробела;
2 проход 3 пробела и т.д. но тут надо думать куда в имя или отчество два слова пихать.
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33840954
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
osi777to VladBoyr
на мыло прошу кусок кода интересно глянуть osi777@nm.ru
контенгент граждан там самый различный и русские и с 3 пробелами и иностранцы.
буду думать...
ещё такой вариант вижу: 1 проход 2 пробела;
2 проход 3 пробела и т.д. но тут надо думать куда в имя или отчество два слова пихать.
Можно предварительно подготовить таблицу - все пустоты (два и более пробелов) свести к одному пробелу (replace в SQL Server), пробелы слева-справа убрать (Ltrim, Rtrim в SQL Server).
При дальнейшем парсинге принять правило, что:
до первого пробела - фамилия ,
после последнего пробела до конца - отчество ,
все что между ними - имя .
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33841011
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы регулярное выражение не использовать, вместо того, чтобы с реплейсами упражняться?
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33841043
Фотография Аленочка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если имя может быть двойное - то разбор нужно делать с конца, до 1 пробела - фамилия, до второго - отчество, после - имя, если строка состоит всего из одного пробела и двух слов, то с большой вероятностью можно говорить о том, что это ИМЯ + ФАМИЛИЯ. А защиту от неправильных действий оператора (например забыли ввести имя, отчество или фамилию) нужно предусмотреть в программном продукте...

Аленочка тм
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33841140
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
osi777ГОСПОДА ЗНАТОКИ ПОДСКАЖИТЕ:
есть такая необходимость сделать следующее
есть поле типа varchar2(100) (oracle) где через пробел находится фамилия, имя, отчество типа:
ИВАНОВ ИВАН ИВАНОВИЧ
Необходимо всю эту лабуду разнести отдельно фамилия, отдельно имя и отчество по полям типа varchar2(25 или 35)
это уже не принципиально,
думается делать алгоритм типа: буквы до 1 пробела - фамилия, после - имя, а после 2 пробела-отчество.
Однако же таблица большая там около 200 тыс. записей, боюсь типа "попасть" строку где по каким-то причинам будет не 2 а 3 пробела
(кривизна рук операторов) или же отчетво или имя с приставкой типа ОГЛЫ и т.п., т.е. в строке уже не 2 а 3 пробела.
Мож кто выскажет соображение как это победить.
Думал над тем, шобы до 1 пробела фамилия, после - имя, а после 2 пробела - отчество - хотя это не есть истина???

присылай таблу - разнесем
mx@enters.eu
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33841443
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме лексического разбора можно подключить орфографию. Т.е. создать словари фамилий, имён и отчеств. Или даже просто имён, потому как имя стоит между фамилией и отчеством. В этот же словарь можно добавить исключения из правил, разные составные имена или вообще ФИО требующие специальной обработки с признаками.
После выделения имени ищем его в словаре, если нашли, то это имя, если нет, разбираемся вручную, добавляем имя в словарь и т.п..
...
Рейтинг: 0 / 0
ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
    #33841533
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 osi777
Какой алгоритм бы вы не выбрали главное:
1 Старые данные сохранить, чтобы
2 У человека была возможность их проверить, поэтому

посему совеетую оформит результат в виде таблицы "было-стало", особо отметив подозрительные места.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / ХОЧУ УЕХАТЬ НА ЧУЖОМ ВЕЛОСИПЕДЕ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]