Способы организации заметок: папки и теги
Продолжим тему ведения заметок. Давайте теперь поговорим про организацию заметок с помощью тегов и папок: зачем нужно и то, и другое, или, может быть, достаточно чего-то одного.
Сразу обозначим проблемы, которые мы пытаемся решить, упорядочивая заметки тем или иным образом. Первая проблема — это поиск конкретной записи. Вы помните, что вы ее когда-то писали, но не помните, куда ее поместили. Во многом эта проблема решается глобальным поиском по тексту заметок, если вы вспомните, какие ключевые слова в ней содержались. Вторая проблема — поиск сразу нескольких похожих заметок на одну тему, например, если вам надо написать о чем-то статью, и вы помните, что на эту тему вы уже когда-то делали несколько заметок, и вам нужно их найти.
Как известно, в программах для ведения заметок конкурируют или существуют одновременно два подхода для наведения порядка в базе записей — это папки и теги (они же метки). Начнем с папок. Чтобы быстро найти какую-то заметку в будущем, нужно поместить ее туда, где логичнее всего ее будет потом искать. Но довольно быстро пользователь сталкивается с ситуацией, когда заметку можно поместить в разные папки. Например, вы прочитали книжку про Python и хотите про нее написать заметку. Где вы ее должны создать? В папке «Книги»? «Python»? «Программирование»? Или может быть вы захотите создать вложенную папку «Книги» внутри папки «Python»? А может быть наоборот, создать папку «Python» в папке «Книги»? В таких ситуациях вы должны для себя выработать какую-то общую стратегию, которой будете придерживаться какое-то время, а потом вы все равно захотите все пересортировать. И каждый раз при поиске конкретной заметки вам придется вспоминать, куда вы ее положили.
Когда я только начинал делать OutWiker, у меня даже была идея сделать что-то вроде ссылок, когда в папке создается ссылка на другую заметку, и кажется, что заметка расположена сразу в нескольких папках. Но дальше задумки эту идею я не развивал.
По идее эту проблему должны решать теги. К одной записи можно добавлять произвольное количество тегов, и при аккуратной их расстановке мы через какое-то разумное время нужную заметку найдем. И вот тут возникает вопрос, каким образом присваивать теги заметкам? Как и со всем, что связано с заметковедением, при использовании тегов вы должны сами для себя придумать какие-то правила. Обычно теги не должны быть слишком общие или слишком частные. В этот момент стоит задуматься, по каким ключевым словам (опять мы с этим термином столкнулись) вы будете искать эту заметку в далеком будущем.
Например, если мы пишем заметку про реализацию сборки мусора в Python, то вряд ли вы будете искать ее по тегу «программирование», этот тег был бы слишком общий, и, если вы действительно будете использовать этот тег, при выборе его в поиске вам программа выдаст слишком много заметок. Другая крайность — тег, названный по имени функции, о реализации которой вы пишете, например, «gc.set_threshold». Конечно, есть вероятность, что через год вы вспомните, что у вас была заметка именно про эту функцию, и вы даже может быть будете помнить, как она называется, и тогда кликнув на такой тег, вы точно найдете вашу заметку, поскольку она будет единственная, помеченная этим тегом. Но скорее всего такая ситуация будет редкая, а количество тегов при таком подходе будет разрастаться неимоверно, и искать сам тег будет уже более утомительно. Придется придерживаться какого-то промежуточного подхода. Про себя скажу, что я скорее тяготею ко второй крайности, у меня есть теги с одной записью, но когда я создавал эти теги, то надеялся, что в будущем я буду еще что-то писать на эту тему.
Важное преимущество тегов перед папками заключается в том, что теги могут связывать между собой заметки из разных областей. Например, тегом «эволюция» могут быть помечены заметки как по биологии, так и про генетические алгоритмы или метод дифференциальной эволюции.
Многие теги имеют тенденцию со временем распухать и становиться слишком общими. Например, если вы только изучаете программирование, то вполне естественно создать тег, например, «базы данных», а может быть даже и «программирование», если вы только погружаетесь в эту область. Со временем вы продолжаете делать заметки при изучении, например, баз данных MySQL, PostgreSQL, MongoDB и т.д., и продолжаете аккуратно помечать новые заметки не только тегами с именами этих баз данных, но и добавлять к ним теги «базы данных». Потом у вас появятся новые заметки с описанием особенностей каждой из перечисленных баз данных, заметки про язык SQL будут помечены тем же тегом «базы данных», а еще заметки про математические формулировки слияний таблиц и т.д. В итоге тег «базы данных» начинает распухать и вы начинаете понимать, что он стал слишком обобщенный. Если программа заметок умеет отображать облако тегов, в котором размер шрифта тега пропорционален количеству записей с этим тегом, то такие теги становятся слишком заметными, с самыми крупными размерами шрифта. Но искать записи по такому тега становится тяжело — по нему будет отображаться слишком много разнородных записей.
Причем заметьте, что я не говорю, что изначально не надо было делать такой тег, если на первых порах он помогал находить нужные записи, то и замечательно. Просто с развитием вашей базы заметок вы вряд ли станете искать информацию о том, как создавать пользователя в базе данных MongoDB по тегу «базы данных», или заметку об асинхронности в Python по тегу «программирование». Это значит, что настало время такие теги усушить.
Для этого можно пройтись по заметкам и удалить у них слишком общие теги. Например, у всех заметок про MySQL, PostgreSQL, MongoDB удалить тег «базы данных», а тем более «программирование». В OutWiker для этой цели, например, есть возможность удалить выбранную метку у всех заметок выбранной ветки дерева заметок. В принципе, тег может стать настолько обобщенным, что проще удалить сам тег целиком во всех заметках, если этот тег перестал выполнять свою задачу — поиск нужных заметок.
Правда, при массовом удалении тега может сложиться неприятная ситуация, когда какие-то заметки, обычно очень старые, были помечены только удаляемым тегом, и тогда после снятия с них этого последнего тега, они окажутся никаким образом не помеченными, и тогда их можно будет найти только каким-то другим способом. Не зря в методологии Zettelkasten требуется в явном виде проставлять ссылки на похожие или связанные заметки.
В некоторых, не очень многочисленных, программах для заметок теги имеют древовидную иерархию. Например, мы можем указать, что тег «MongoDB» является дочерним по отношению к тегу «базы данных», а тег «базы данных» — дочерним по отношению к тегу «программирование». Тогда при пометке заметки тегом «MongoDB» мы автоматически помечаем эту заметку и тегом «базы данных», и тегом «программирование». Я не сторонник такого подхода, потому что тогда возникает та же проблема, что и с папками — к какому родителю отнести тот или иной тег. С помощью тегов мы наоборот пытаемся избавиться от такой проблемы.
После всего описанного должен возникнуть вопрос, а нужны ли папки, если есть теги? Не дублируют ли эти две сущности друг друга? Зачем нам одновременно упорядочивать заметки и по тегам, и по папкам? Более того, можно сделать так, чтобы дерево заметок строилось таким образом, чтобы в качестве папок выступали теги. Тогда, если теги тоже древовидные, то это неотличимо от папок, да еще одна и та же заметка может находиться в разных участках дерева — под разными тегами. Честно говоря, я не помню софта, где это было сделано именно таким образом, но я не удивлюсь, если такое представление где-то уже реализовано.
Допустим, такого древовидно-тегового режима у нас нет. Тогда чем удобны папки? В первую очередь тем, что при выборе заметки, в дереве заметок сразу видны ее соседи по папке, часто они нужны одновременно. Иногда при работе с разными заметками близкими по теме, мы переключаемся между заметками, расположенными в одной папке, эти заметки у нас всегда отображаются рядом. Это упрощает переключение между заметками, искать каждый раз соседнюю заметку по тегу — дело утомительное. Но это мы не говорим про случай, когда мы можем одновременно открыть несколько заметок (в одном окне или во вкладках), а то мы погрязнем во всех этих комбинациях средств навигации по заметкам. Таким образом, папки нам помогают найти похожие заметки, когда мы уже нашли какую-то заметку по нашей теме. По своему опыту могу сказать, что пытаться искать нужную заметку, надеясь исключительно на свою память, в какую именно папку я поместил ту или иную заметку — трудная задача при большом ветвистом дереве. Первоначально я заметки всегда ищу по тегам, а дальше уже осматриваюсь, есть ли около найденной заметки что-то еще полезное.
И завершающий вопрос. Нужны ли теги, если у нас есть полнотекстовый поиск по всем заметкам? Вопросы скорости поиска отбросим, поиск можно сделать быстрым за счет индексации. Можно еще подключить ИИ, но с ним надо аккуратнее по нескольким причинам: безопасность, стоимость и его вероятностная природа. Если первые две причины решаются установкой какой-либо модели на своем сервере, то от вероятности никуда не деться — ИИ может что-нибудь «не заметить» при поиске.
Но допустим, мы ищем с помощью обычного полнотекстового поиска, а это более трудоемкая операция. У вас появляется слишком много вариантов, какое слово искать (еще не всякая програма поиска умеет распознавать разные формы одного и того же слова). Если вы хотите найти конкретную заметку, и вы знаете, что там было написано, то поиск для этого замечательно подойдет. Но если вам надо найти что-то по теме и вокруг нее, то поиск — слишком топорный вариант. Одинаковыми тегами вы можете помечать заметки, которые при поиске по какому-то слову могут не показаться одновременно, и какую-то из этих заметок вы можете пропустить.
Вот поэтому я считаю, что в программе для заметок должно быть несколько способов поиска заметок, каждый из которых лучше всего работает для своей задачи при поиске:
- Теги хороши для поиска заметок по теме и обнаружения связей между заметками.
- Папки удобны, когда вы уже нашли заметку и можете увидеть, какие заметки расположены рядом.
- Полнотекстовый поиск отлично помогает искать конкретную заметку.
Есть еще один способ навигации — это представление заметок в виде связанного графа, где связи обозначают ссылки между заметками. Сам я таким представлением не пользовался, ничего про него не скажу. Но такой способ требует аккуратной расстановки ссылок между заметками, что очень хорошо ложится на методологию Zettelkasten.
Какие у нас есть еще инструменты для навигации и поиска? Что я забыл упомянуть?
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.




Leave a comment