Анализ графа заметок Obsidian
Obsidian на Хабре посвящено немало статей и, главным образом, про то, как создать и вести в нем базу знаний или систему управления личными делами. При этом остается обделенной вниманием тема анализа накопленного графа заметок с точки зрения его структуры и динамики. А это дополнительный слой информации, в том числе не закладываемой явно в содержание самих заметок.
В качестве примера проведу в данной статье анализ своего графа заметок, собранного за прошедший год.
Основной инструментарий — python, Networkx, Numpy, Matplotilb. Исходный код проекта тут.
В моем случае Obsidian это больше система управления личными делами, чем база знаний. Хранилище содержит следующие папки:
-
Блокнот. Тут быстрые заметки (идеи, впечатления, инсайты, а также интересности за пределами размеченной области дел).
-
Календарь. Ежедневные заметки с плановыми задачами.
-
Проекты. Под проектом понимаю дело с конечными сроками, которое не реализовать за один шаг.
-
Встречи. Заметки по итогам встреч, после которых есть, что записать о чём подумать.
-
Люди. Активная часть записной книжки — те, с кем осмысленно взаимодействовал за рассматриваемый период.
-
Заметки. Обработанные заметки (атомизированные, с аккуратно проставленными ссылками и мыслями по их поводу).
-
Шаблоны. Шаблоны для ускорения создания вышеперечисленных заметок.
Каталоги не накладывают особых ограничений на связи между заметками, это скорее средство для удобной первичной группировки. Так в заметке из календаря может быть ссылка на задачу по проекту, для которой будет нужна встреча с людьми. А встреча может породить новый куст в «заметках» или новый проект. Поэтому в дальнейшем будем рассматривать и анализировать само множество заметок и связей между ними, образующих граф.

Структурные метрики графа.
За рассматриваемый 2024 год было создано 1759 узлов (заметок) и 2687 ребер (связей между ними). Граф довольно разряженный.
Средняя степень: 3
Максимальная степень: 290
Количество хабов (узлов со степенью > 19.8): 29
Видна сильная неравномерность распределения степеней.
Коэффициент кластеризации: 0.070.
Модулярность: 0.757
Лувенский алгоритм выделяет 58 сообществ.
Высокое значение модулярности (т.е. наличие чётко выраженных сообществ) при низком коэффициенте кластеризации говорит о том, что сообщества имеют «звездообразную» структуру с центральными хабами. Что, вобщем-то, видно и по визуализации графа.
Чем обусловлена такая структура? Самый активный каталог у меня — это проекты. В силу широты понимания проекта (сущность с двумя критериями — сроки и многошаговость) там есть все от ремонта ванной до разработки учебного курса. Сюда же, зачастую, пишу и заметки по дополнительным материалам и подзадачам, формируя кусты различной этажности. И хотя межпроектные ссылки присутствуют, но, как показывает данное упражнение, можно проводить более глубокую работу по интеграции проектных историй в единую, плотную базу знаний.
Хабы
Итак, структура графа больше иерархическая, чем плоская и ключевую роль в ней играют 29 хабов. В плане тематик они разбиваются на следующие группы:
6 хабов — проф. деятельность на основной работе,
2 хаба — свои коммерческие проекты,
5 хабов — хобби “песни-пляски”,
5 хабов — конкретные люди,
остальные (11) — обучения и повышения квалификации.
Вывод — люблю работать, учится и активно отдыхать. Люди, попавшие в хабы есть яркие представители каждой из этих сфер.
Хабы имеют значение и как “мосты” между сообществами. При этом число связей через “мосты” быстро убывает: только 5 хабов имеют более 15 связей (которые распределены неравномерно). Еще 12 хабов поддерживает от 10 до 4 связей (в основном ближе к 4). А оставшиеся 13 связывают небольшое число сообществ (2-3)
Опять же имеем централизованную организацию с доминирующим узлом и несколькими уровнями иерархии среди остальных хабов.
Эволюция сообществ
Сообщества в контексте базы заметок можно интерпретировать как тематические пространства, естественным образом сгруппированные по содержанию (в противовес изначальной раскладке по каталогам по формальным признакам).
Интерес представляет и состав и жизненный цикл такого рода групп.
-
Состав, потому что в таком «сообществе» могут оказаться разные виды деятельности/информации и это будет повод задуматься о причинах такого соседства и возможностях по расширению этих необычных на первый взгляд сочетаний (хотя может быть и так, что все окажется однородно и ожидаемо — это тоже показатель).
-
Жизненный цикл, поскольку это информация о реальной динамике интересов составителя графа и направлениях вложений времени. Тут напрашивается сравнение с заявленными себе или другим целями (их приоритетностью) и представлениями на предмет — сходятся ли ожидания и реальность.
Естественный отбор
Рассмотрим эволюцию состава сообществ в исследуемом графе с шагом в 1 месяц. Будем учитывать только сообщества из 5 узлов и больше. Используем Лувенский алгоритм выделения сообществ.
Результат в графической форме представлен ниже.
Обозначения на рисунке следующие. Сообщество будем считать «родившемся», если оно просуществовало 1 месяц, «умершим», если оно за месяц потеряло более 50% своего состава.
Потенциал роста — высоким, если
-
сообщество растет (тренд восходящий),
-
растет количество внешних связей,
-
стабильность размера
где
-средний размер сообщества за время жизни,
— стандартное отклонение
-
текущий размер превышает минимальный вдвое или больше
Противоположная ситуация (высокий риск исчезновения), если тренды по численности сообщества и внешним связям нисходящие, стабильность s<0.5, размер близок к принятому минимуму (5 узлов). Толщина линии пропорциональна размеру сообщества в данный момент.

Среднее количество сообществ в месяце (округление до целых) составляет 18 ± 2.
Обращает на себя внимание тенденция на снижение числа короткоживущих сообществ и стабилизацию их набора к концу года. Посмотрим на распределение сообществ по времени жизни.
Распределение по времени жизни

Среднее время жизни: 3.1 мес.
Стандартное отклонение: 2.4 мес.
Медиана: 2.0 мес.
На гистограмме наблюдаем три пика — в районе 1, 4 и 9 месяцев. Большая часть (52%) сообществ живет не долго (1-2 мес), сравнимое количество (41%) сообществ просуществует от 3 до 7 мес, и лишь 7% — проживут дольше 8 месяцев.
Актуальная тематика
На конец рассматриваемого периода есть 14 живых сообществ. Из них:
-
Два сообщества долгожителя (11 мес) отражают основную профессиональную тематику.
-
Четыре сообщества «среднего возраста» (5-7 мес) — увлечения.
-
Восьмерых представителей «молодежи» (1-4 мес) не получится классифицировать столь однозначно. По большей части это обучения, но есть примеси из увлечений и работы по своим проектам.
Промежуточный вывод. В среднем в фокусе моего внимания 18 (± 2) крупных тем/направлений. Из них 2 «длинных», 7 «средних», оставшаяся половина — воронка-конструктор.
Анализ активности
От динамики отдельных сообществ перейдем к динамике роста всего графа. Это информация служит отражением активности работ по написанию заметок, что, в свою очередь, полезно для понимания границ возможностей и особенностей текущей организации процесса — для дальнейшей его оптимизации.
Ниже приведен на график количества создаваемых узлов от времени. Шаг, как и прежде, — 1 месяц.

Характер графика пилообразный, с тремя своеобразными «зубьями» (резкий пик — медленный спад). Это в целом соответствует характеру моей работы в университете.
-
Первый «зуб» имеет максимум в январе (начало семестра, новые планы, контакты, проекты, обсуждения), затем снижение до марта (и чем дальше от начала, тем меньше «креатива» и заметок, а больше работы по намеченному плану).
-
Второй «зуб» имеет максимум в июне и незначительное снижение к августу. Июнь это сессия, июль и август — летняя практика и свои образовательные проекты.
-
Третий «зуб» бодро стартует с сентября вместе с новым семестром. Опять новые идеи, планы, мысли обсуждения и орг.моменты. К ноябрю снова «все и так понятно».
-
Декабрьский подъем выбивается из описанной картины — конец года все же требует повышенной активности.
Вывод: есть потенциал развития у середины-конца семестров. Имеет смысл почаще поднимать взгляд из рутины.
Дополним картину исторической динамикой среднего значения PageRank узлов графа и диапазона его изменения.

В феврале-мае, мае-августе и августе-ноябре (что с погрешностью в месяц совпадает с границами периодов, выделенных не предыдущей диаграмме) видим на графике следующий паттерн:
-
рост ширины диапазона PageRank при увеличении числа узлов — что говорит об усилении централизации в сети,
-
с последующим сужением диапазона и снижением среднего значения PageRank (при снижении темпа прироста узлов) — что говорит о увеличении связности и демократизации сети.
Вывод: стратегию заполнения базы знаний применяю такую — в начале собрать из новых сущностей иерархическую структуру, а потом насыщять ее горизонтальными связями.
Люди
Поскольку живем мы в обществе людей, интерес представляет, как они представлены в рассматриваемом графе и какова динамика взаимодействий с социальным окружением.
На графике ниже показаны изменение размера активного окружения и динамика новых связей в течение года. Датой появления человека в окружении будем считать дату создания заметки встречи, проекта или мероприятия, где впервые пообщались/поработали (заметки-моста между узлами в записной книжке: моим и визави).
Массовые рабочие мероприятия, такие как поточные лекции или учебные встречи тут не учтены, поскольку в них идет взаимодействие с группой, а не индивидуальное (и для них есть специальные корпоративные информационные системы).

В начале зимы все контакты технически помечены как новые (поскольку граф еще только наполняется). Затем, по мере накопления данных, доли новых и уже знакомых людей, с кем были взаимодействия в течение очередного месяца, стремятся к выравниванию. Т.е. установленные связи продолжают жить и добавляются новые.
Можно также отметить, что коммуникационная активность, также как и прочая, имеет подъемы и спады и, если смотреть сквозь призму университетской жизни, в первой половине семестров выше, чем во второй.
Выводы
Что имеем:
-
Структура графа на данный момент имеет преимущественно иерархическую «звездообразную» организацию с выраженными хабами. Это, с учетом динамики развития сети, отражает текущую стратегию работы с информацией:
-
вначале обустроить новые сущности в иерархическую структуру,
-
потом выстраивать горизонтальные связи между элементами.
-
-
Причем создавать новую остовную структуру мне интереснее, чем наводить лоск в старой. Это выражается и в высокой деле новых направлений приложения внимания. Половина тем, которыми я занимаюсь в течение месяца, через месяц-два будет пересобрана во что-то другое или завершена.
-
В усредненном месяце в фокусе моего внимания 18 крупных тем/направлений. Из них 2 «длинных» (живут около года), 7 «средних» (1-2 квартала), ну и воронка-конструктор из 9 короткоживущих.
-
Набор направлений стабилизируется к концу года.
-
График активности имеет пилообразный характер, коррелирующий с расписанием университета: пики в январе, июне и сентябре
-
Коммуникационная активность заметно выше в первой половине семестров (и зимой и осенью), а к их концу мой девиз «меньше слов, больше дела».
-
Наблюдается количественный баланс между созданием новых и включением старых социальных связей.
-
Самая равномерная работа — летом.
-
Что улучшить:
-
Увеличить межпроектную интеграцию для повышения связности графа.
-
Активнее работать в глубину тематических направлений.
-
Планировать периоды рефлексии в середине семестров.
-
Учитывать выявленную норму крупных тем в месяц при планировании.
Итог: Анализ графа заметок позволил выявить ключевые паттерны работы с информацией, связать их с жизненными циклами проектов/тем и учебными периодами, а также наметить пути для повышения эффективности системы управления делами (знаниями) в Obsidian.
Автор: shbma