Как объединить два Древа в одно?

Перед тем, как задать вопрос, ознакомьтесь с ответами на часто задаваемые вопросы и со Справкой. Пожелания пишем на reformal.ru

Модераторы: Genery, Elena Polyanskikh

Ответить
Сообщение
Автор
PeterMinin
Сообщения: 15
Зарегистрирован: 17 янв 2014 01:22

Re: Как объединить два Древа в одно?

#16 Сообщение PeterMinin » 24 апр 2014 16:36

Ну с точки зрения нас, пользователей, в имеющейся ситуации - да, похоже, ручной работы не избежать... Я что-то воспринял с точки зрения развития программы, но если с ним всё так туго... Грустно. Будем искать компромиссы, спасибо за DrevoReport.

opalex
Сообщения: 622
Зарегистрирован: 05 янв 2010 15:31
Откуда: Алматы
Контактная информация:

Re: Как объединить два Древа в одно?

#17 Сообщение opalex » 24 апр 2014 21:07

За DR спасибо Олегу Мельнику :)
Приглашаю в гости на opalex.info

Аватара пользователя
Руслан Грибков
Сообщения: 333
Зарегистрирован: 01 май 2005 23:28
Откуда: Нижегородская обл. Городец

Re: Как объединить два Древа в одно?

#18 Сообщение Руслан Грибков » 25 апр 2014 06:57

opalex писал(а): ...можно и "по старинке", без всякой кибернетики работу все-таки сделать.
В этом то и загвоздка - за месяц переберу всех 3,5 тыс. персон вручную, но база у родственников ведь опять в это время изменяется. Надо всё таки нашим программистам найти каким признаком (в моём понимании - "вес" в байтах) вылавливать редактированные персоны хотя бы. На данный момент вижу пока один способ: нужно объединить базу 1 с базой 2, затем открыть базу 2 на ноутбуке и сравнивать в "таблице", открывая информацию о персоне и каждую вкладку.
Ищу: по Нижегородской обл. - Грибковых, . По г. Козьмодемьянску - Грибковых, Соколовых, Никоновых.
по Украине - Янчишены, Сумашевские, Заблоцкие, Чегурко, Петруша.
по Хабаровску - Клюевых, по Москве - Бажковых, Владимирская обл. - Гоцуц.

opalex
Сообщения: 622
Зарегистрирован: 05 янв 2010 15:31
Откуда: Алматы
Контактная информация:

Re: Как объединить два Древа в одно?

#19 Сообщение opalex » 25 апр 2014 10:28

Не часто встретишь такую ситуацию, как у вас, когда несколько родных правят родословную. Честно говоря, я вообще первый раз о таком слышу. Обычно мы, исследователи родословных, находимся в глухой изоляции. Вежливо выслушать, посмотреть, что получилось - да, такое может быть. Но чтобы активно работали - не встречал. Вам повезло.
Может быть вам следует перевести задачу в иную плоскость? Создать общую базу в интернете, которую будут править несколько человек, и синхронизировать её с базами на локальных компьютерах. Мне кажется, что это более решаемо, чем задача об объединении готовых деревьев.
В качестве онлайн-основы базы можно использовать, например, webtrees: http://opalex.info/index.php/programms/85-webtrees
Затраты есть, но небольшие - домен (100 руб/год), хостинг ($5-$10 в месяц). Программа webtrees бесплатна. Как все выглядит - можно посмотреть, например, здесь: http://opalex.info/index.php/genotrees
Но для вас, в принципе, это не важно. Вам важно организовать совместную работу над базой, а оформление каждый будет делать у себя на компе.
Приглашаю в гости на opalex.info

PeterMinin
Сообщения: 15
Зарегистрирован: 17 янв 2014 01:22

Re: Как объединить два Древа в одно?

#20 Сообщение PeterMinin » 25 апр 2014 10:53

Вот и мне тоже повезло, встретились в одном древе 2 исследователя. Так что проблема актуальнее, чем вам кажется.

opalex
Сообщения: 622
Зарегистрирован: 05 янв 2010 15:31
Откуда: Алматы
Контактная информация:

Re: Как объединить два Древа в одно?

#21 Сообщение opalex » 25 апр 2014 16:42

PeterMinin писал(а):Вот и мне тоже повезло, встретились в одном древе 2 исследователя. Так что проблема актуальнее, чем вам кажется.
Я про актуальность ни слова не сказал. :)
Да это и не важно, актуальна тема или нет. Важно другое - в обозримом будущем (несколько лет как минимум) задачу слияния персон никто не решит. Кто-то не хочет, кто-то не может.
Поэтому нужно искать другой путь. Я предлагаю такой (тем, у кого две или больше пересекающихся баз, лично мне это не нужно):
1) слить 2 базы в одну - ДЖ это позволяет сделать быстро;
2) сделать отчет в DrevoReport (DR) о потенциальных двойниках (есть там такой инструмент);
3) кому-то одному поработать со списком, устранив всех двойников, либо п.5
4) экспорт в gedcom и загрузка в webtrees (перед этим создать сайт)
5) распределить обязанности, кто какую часть дерева будет править
6) далее редактировать базу только в онлайн (считать её главной)(в webtrees с базой может одновременно работать хоть сто человек, лишь бы у них были права на это), а на локальный комп данные переносить, если нужно, через gedcom;
Все это можно сделать уже сейчас. Никого и ничего не нужно ждать. Правда придется поработать руками, но куда же без этого. А 3,5 тысячи человек в древе - это не так много. Не все же двойники будут :)
Можно еще последнюю (в смысле, самую новую) опцию DR задействовать - там появилась возможность выгрузки (экспорта) всех полей таблицы персон, включая комментарии к рождению и смерти (скоро добавятся и комменты к бракам) - сделать экспорт из первой и второй базы и сравнить две таблицы в excel на идентичность данных.
Приглашаю в гости на opalex.info

PeterMinin
Сообщения: 15
Зарегистрирован: 17 янв 2014 01:22

Re: Как объединить два Древа в одно?

#22 Сообщение PeterMinin » 25 апр 2014 17:12

Спасибо за наводки :) Экспорт, по-моему, будет особенно полезен, потому что можно будет увидеть отличающиеся поля. А перенести базу в онлайн - это и само по себе интересная идея, как минимум чтобы все могли смотреть, и всегда последнюю версию.

Аватара пользователя
o22
Сообщения: 713
Зарегистрирован: 12 дек 2010 00:13
Контактная информация:

Re: Как объединить два Древа в одно?

#23 Сообщение o22 » 26 апр 2014 00:59

Выскажу и свое мнение, так как занимался этой проблемой лично. Задача весьма нетривиальная и не решаема " на полном автомате". Поэтому руками придется делать однозначно.
Объединение, фактически, состоит из 2 задач
1. Найти двойников - в этом деле действительно может помочь DrevoReprt, а именно его отчет "Поиск дубликатов", хотя как показал опыт, идеальных алгоритмов здесь нет и быть не может.
2. Объединить 2 персоны в одну - задачка тоже не автоматизируема в полном объеме.

Объясню почему:
Структура генеалогических данных в целом и ДЖ в частности такова, что есть персона - некая унитарная единица, у которой могут быть заполнены какие-то значения полей (а могут быть и не заполнены), и к ней привязано какое-то количество событий.
Событие - это рождение, крещение, свадьба (может быть и не одна), рождение каждого ребенка, крещение чужих детей (кумовство), поручительство на чужих свадьбах (свидетели), разводы (могут быть, могут не быть), я уже не говорю о всяких переездах, награждениях, реабилитациях и т.д. Ну и смерть, хоть и грустное, но тоже событие.
У каждого события может быть куча участников и каждая персона может иметь роли в разных событиях, например, в одном браке персона может быть женихом, в другом - свидетелем.
Теперь представьте, есть 2 персоны, мы их определили как дубликаты и хотим объединить и значения их полей и события и роли и места и все остальное.

В одной персоне имя записано, как Ксения, в другой - Оксана. В одной фамилия от мужа, в другой - девичья. У одной персоны 3 детей, у другой 4. Имена и/или даты рождений детей отличаются (кто-то из составителей мог не знать полной информации).
Дата рождения одной персоны записана просто как год, а у другой - как точная дата или как "Между" или даты у обоих записаны точные, но отличаются на пару лет. У одной персоны муж записан как Вася, у другой, как Петя. У одной персоны больше событий (кто-то предлагал определять персону по объему данных), но у другой у этих событий есть даты, примечания, место, где событие произошло, больше участников (кто-то пишет крестных, кто-то нет)
И т.д. и т.п.
Вы доверите автомату разобраться в этой "Санта-Барбаре"? Я-бы не рискнул, даже если-бы я этот автомат делал для себя лично.

Поэтому, как это ни прискорбно, делать придется все-таки ручками.
Сайт программ GedcomReport, DrevoReport http://go.inf.ua
Исследования: Васильковський, Киевский, Звенигородский уезды Киевской губернии
Нежинский уезд Черниговской губернии

PeterMinin
Сообщения: 15
Зарегистрирован: 17 янв 2014 01:22

Re: Как объединить два Древа в одно?

#24 Сообщение PeterMinin » 26 апр 2014 02:48

Конечно, о полной автоматизации речи не идёт, правильное имя или дату при двух равноправных вариантах программа выбрать не может. Поля с отличающимися значениями нужно просто вывести и дать выбрать правильный вариант, ну или заменить третьим. Различающиеся связи (в одном случае есть 4-й сын, в другом нет, и т.п.) тоже автоматом разрешать нельзя, просто предоставить на выбор. Но в чём автоматика может помочь - так это в самом объединении деревьев, выявлении общих частей и автоматической склейке, наложении деревьев одно на другое (в каких-то случаях предлагать несколько вариантов наложения), так чтобы человеку осталось только разобраться, как именно должно быть слиты воедино копии каждой персоны, вместо того чтобы проходить долгий монотонный и подверженный ошибкам путь: поочерёдно открывать копии (которые, благодаря Олегу, мы хотя бы можем увидеть), глазами искать отличия, переносить всю информацию в одну из копий, перевешивать связи с людьми (через удаление и добавление каждого родителя, супруга и ребёнка) и событиями (опять же удаление-добавление) и удалять вторую копию. В общем, убрать ручную работу, конечно, нельзя, но можно уменьшить её количество и "накладные расходы", связанные с прокликиванием пути через несколько диалогов для каждой операции (если брать нынешний вид Древа).

Надо заметить, что на самом деле возможна и ещё большая степень автоматизации. Если бы была известна базовая версия, из которой были получены объединяемые варианты, можно было бы автоматом разрешать ситуации, где изменения относительно базовой версии есть только в одном из вариантов. Это принцип из систем контроля версий типа Git, и соответственно для его реализации нужна эта самая система контроля версий, то есть сохранение истории всех изменений. Сейчас это, наверно, недостаточно востребовано, чтобы накручивать такие сложности (хотя контроль версий даже без совместной работы бывает полезен), но в будущем, возможно, что-нибудь типа webtrees и реализует такой механизм.

Ну а пока это всё, к сожалению, теория.

Аватара пользователя
hippocamus
Сообщения: 1044
Зарегистрирован: 09 дек 2009 16:28
Откуда: Рыбинск, Ярославская обл.
Контактная информация:

Re: Как объединить два Древа в одно?

#25 Сообщение hippocamus » 26 апр 2014 13:53

opalex писал(а):Затраты есть, но небольшие - домен (100 руб/год), хостинг ($5-$10 в месяц). Программа webtrees бесплатна. Как все выглядит - можно посмотреть, например, здесь: http://opalex.info/index.php/genotrees
Вот как раз домен и хостинг можно и бесплатно получить. Советую hostinger.ru
PeterMinin писал(а):Вот и мне тоже повезло, встретились в одном древе 2 исследователя. Так что проблема актуальнее, чем вам кажется.
Ещё как актуально. У меня в дереве кроме меня ещё 4 исследователя. Правда, они малоактивны, и я им дал больше инфы, чем они мне - но всё же...
А проблема внешних сервисов в том, что импорт-экспорт в Древо происходит с потерей или реорганизацией данных, что весьма неудобно и неприятно. Поэтому я только импортирую в облако, а все правки веду в Древе. И родственникам его же рекомендую.
Скачать Информер (для Древа Жизни 4.х). Установить.
Заменить экзешник на вот этот: https://yadi.sk/d/v49r7N46tdixe
Запустить от администратора. Указать путь к базе. Отключить автообновление.
Будет последняя версия 2.43. Рабочая )

Аватара пользователя
hippocamus
Сообщения: 1044
Зарегистрирован: 09 дек 2009 16:28
Откуда: Рыбинск, Ярославская обл.
Контактная информация:

Re: Как объединить два Древа в одно?

#26 Сообщение hippocamus » 26 апр 2014 13:57

opalex писал(а):1) слить 2 базы в одну - ДЖ это позволяет сделать быстро;
2) сделать отчет в DrevoReport (DR) о потенциальных двойниках (есть там такой инструмент);
Если две базы производные от одной - никаких двойников не получится! Останется 1 человек из первой базы (к которой присоединяем), вне зависимости от того, были ли во второй базе правки.
А если мы уже обменивались информацией - понятное дело, что скорее всего база будет в результате одной общей. Дальнейшие правки трудно отслеживать.
Скачать Информер (для Древа Жизни 4.х). Установить.
Заменить экзешник на вот этот: https://yadi.sk/d/v49r7N46tdixe
Запустить от администратора. Указать путь к базе. Отключить автообновление.
Будет последняя версия 2.43. Рабочая )

Аватара пользователя
Руслан Грибков
Сообщения: 333
Зарегистрирован: 01 май 2005 23:28
Откуда: Нижегородская обл. Городец

Re: Как объединить два Древа в одно?

#27 Сообщение Руслан Грибков » 27 апр 2014 13:23

посмотрел webtrees, грандиозно, но уже привык к виду ДЖ,т.е. надо переучиваться. Чего не хочется. Буду ждать от Genery онлайн объединения.
Ищу: по Нижегородской обл. - Грибковых, . По г. Козьмодемьянску - Грибковых, Соколовых, Никоновых.
по Украине - Янчишены, Сумашевские, Заблоцкие, Чегурко, Петруша.
по Хабаровску - Клюевых, по Москве - Бажковых, Владимирская обл. - Гоцуц.

Аватара пользователя
o22
Сообщения: 713
Зарегистрирован: 12 дек 2010 00:13
Контактная информация:

Re: Как объединить два Древа в одно?

#28 Сообщение o22 » 28 апр 2014 01:13

PeterMinin писал(а):Но в чём автоматика может помочь - так это в самом объединении деревьев, выявлении общих частей и автоматической склейке, наложении деревьев одно на другое (в каких-то случаях предлагать несколько вариантов наложения), так чтобы человеку осталось только разобраться, как именно должно быть слиты воедино копии каждой персоны, вместо того чтобы проходить долгий монотонный и подверженный ошибкам путь: поочерёдно открывать копии (которые, благодаря Олегу, мы хотя бы можем увидеть), глазами искать отличия, переносить всю информацию в одну из копий, перевешивать связи с людьми (через удаление и добавление каждого родителя, супруга и ребёнка) и событиями (опять же удаление-добавление) и удалять вторую копию. В общем, убрать ручную работу, конечно, нельзя, но можно уменьшить её количество и "накладные расходы", связанные с прокликиванием пути через несколько диалогов для каждой операции (если брать нынешний вид Древа).
Нет, все опять в кучу.
Перевешивать поля придется все-равно вручную. Например, у одной из персон-дубликатов интересные примечания, у другой персоны-дубликата - точные даты рождения.
Как здесь без ручной работы? А если ее сделали, то остается только удалить персону, с которой перенесли все данные.

Другой вариант - в Вашей базе информации о персоне мало, а вы получаете от коллеги дубликат с кучей информации и связей. Как его менять? Если просто вашего "бедного родственника" поменять на "богатого" вашего коллеги, то что делать со связями (событиями) этих двух вариантов? Объединять все на одном - есть риск получения новых дубликатов, выбирать вручную - опять возвращаемся к нашим баранам :(
Сайт программ GedcomReport, DrevoReport http://go.inf.ua
Исследования: Васильковський, Киевский, Звенигородский уезды Киевской губернии
Нежинский уезд Черниговской губернии

PeterMinin
Сообщения: 15
Зарегистрирован: 17 янв 2014 01:22

Re: Как объединить два Древа в одно?

#29 Сообщение PeterMinin » 28 апр 2014 03:19

o22 писал(а):Перевешивать поля придется все-равно вручную. Например, у одной из персон-дубликатов интересные примечания, у другой персоны-дубликата - точные даты рождения.
Как здесь без ручной работы?
Я и говорю: как именно должны быть слиты копии, остаётся на решение человека, и под этим я подразумевал как раз выбор, какие поля из какой копии брать, или же руками объединять их в третий вариант (например, разные примечания, и с обеих сторон полезные). У webtrees есть такая штука, только там как раз отсутствует возможность написать свой третий вариант: http://wiki.webtrees.net/w/images-en/Merge1.jpg.
o22 писал(а):Объединять все на одном - есть риск получения новых дубликатов
Я говорю именно об этом варианте и для борьбы с новыми дубликатами предлагаю анализировать сразу деревья, а не отдельных персон.
Короче, вот в общих чертах как я это представляю, на простом случае: https://app.box.com/s/cynd9ewxpph3bnirwvbk. С более сложными случаями после этого, надеюсь, получится разобраться на словах.
Сразу скажу, что при неоднозначностях соответствия сущностей (людей или событий), конечно, надо предлагать все варианты объединённых деревьев, а не допускать что-то с вероятностью ошибки. Как работать в случае полной Санта-Барбары, когда люди могут, скажем, перемещаться от одних родителей к другим, состоять в браке с родственниками и т.д., надо думать отдельно, но, например, проблемы с несоответствием большого количества полей у большого количества персон, как мне кажется, вполне решаются тем методом, о котором я говорю.

opalex
Сообщения: 622
Зарегистрирован: 05 янв 2010 15:31
Откуда: Алматы
Контактная информация:

Re: Как объединить два Древа в одно?

#30 Сообщение opalex » 28 апр 2014 16:45

Я уже много раз объединял ветки, и часто случаи были довольно сложными. Так что теперь это мне не страшно.
На мой взгляд, основная проблема не в том, чтобы объединить деревья, совместив каких то персон. Самое сложное - это понять, а нужно ли это делать?
Далеко не всегда это ясно с первого взгляда. Например, у меня была ситуация, когда в разных документах одного и того же человека называли то как Григорий Осипович, то как Григорий Филиппович: http://opalex.info/index.php/lyudi/80-i ... 4-vetkasov
К тому же жены и дети у них были разные! Совсем непросто было догадаться, что речь идет об одном человеке. И это не единственный пример.
Приглашаю в гости на opalex.info

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 5 гостей