Мысли об использовании тегов

Prelude

Недавно я разгребал накопленную за два года кучу небольших видеозаписей, снятых на цифровой фотоаппарат. Nikon 5400 записывает видео в QuickTime-формат (.mov), данные в нём занимают достаточно много места. Пережал всё с ffmpeg-овским кодеком (в оригинале камера использует достаточно громоздкий M-JPEG) с приемлемым качеством, стало занимать меньше места.

Но проблема не в этом.

Я раньше просто распихивал видео и фотографии по папкам как по категориям — достаточно простой и очевидный подход, наверное, многие так делают. Но сейчас уже стало понятно, что такая сортировка — недостаточно гибкая при уже сколь угодно значимых размерах коллекции фоток и видео. В простой иерархической структуре директорий с распиханными по ним фотографиями бывает сложно найти какую-то определённую фотографию. А что, если в каждой папке по несколько сотен (или тысяч) фоток?

Метки vs. категории?

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

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

Теггинг избавляет нас от субъективной процедуры выбора одной-единственной черты содержимого. Субъективной — потому что я выберу в книге в качестве главного в книге «Война и Мир» авторский взгляд на историю, а моя мама — тему служения Отечеству. И не всегда с ходу можно единственным понятием охарактеризовать содержимое. Когда мы используем метки, не нужно также держать структуру (возможно сложную) категорий в голове и засорять и без того измученный обилием информации мозг.

Использование меток сильно упрощает поиск и фильтрацию информации, особенно, если в реализации поддерживается возможность выбора нескольких тегов для фильтрации и совмещение фильтра по тегам с другими, более традиционными (по дате/заголовку/размеру информации и т. д.).

Подход с использованием тегов, конечно, не является единственно верным. В ряде случаев, когда количество структурируемых объектов обозримо мало, использование распределения по обычным категориям без пересечений более эффективно, нежели нагромождение кучи меток.

Успехи подхода

Примеров море, и ИМХО следующие особенно показательны.

  • Блоги. В подавляющем большинстве движков можно делать метки для записей. У меня тоже можно.

  • Del.icio.us — я не представляю, как в огромной куче закладок, которые люди хранят на del.icio.us, можно разобраться без тегов. Кроме того, раньше я боялся хранить больше сотни закладок на сайты, потому что знал, что в такой куче будет сложно разобраться; сейчас я юзаю плагин для Firefox от del.icio.us и не знаю проблем с ориентированием в своих закладках.

  • Flickr — то же самое. По миллиону новых фоток в день. Разобраться в этом при помощи одного поиска по описаниям и названиям фоток без повсеместного использования тегов было бы невозможно.

  • Last.fm — ещё одна туша. Благодаря тегам на Last.fm можно искать музыку не только по привычным параметрам жанра или исполнителя. Теги хорошо применимы к музыке (я имею в виду не ID3-теги, которые в каждой mp3-шке есть, а именно метки для классификации данных), так как музыку, как и всякое искусство, невозможно строго и чётко классифицировать. В итоге получается более гибкая картина жанровой принадлежности разных исполнителей, которая формируется в результате использования юзерами Last.fm тегов.

  • Теги применимы и на новостных сайтах, конечно. Например, на достаточно полноводном Dzone.com используются теги для классификации новостей.

А что если применить подход с использованием меток в качестве идеи для организации форума? Например, вместо категорий использовать большое облако тегов на главной странице. Это было бы интересно.

Проблемы подхода

Tag hell. Человеческая фантазия беспредельна, и количество возникающих ассоциаций к объекту при достаточном количестве времени стремится к большому числу. Уйдя от категорий, можно утонуть в огромном количестве тегов.

Ещё часто бывают траблы такого толка: сосуществуют несколько тегов, одинаковых по смыслу, но разных по написанию (ну скажем, «птица» и «птицы»), в итоге теряется консистентность классификации контента.

При использовании тегов может снова возникнуть проблема выбора — какое оптимальное количество тегов для каждого объекта выбрать? Какую конкретную ассоциацию из нескольких очень близких выбрать? Тот же пример: на фотографии — птичка (которая с крылами). Как пометить? «Птица» или «птицы»? Или помечать фотку, где одна птица, как «птица», а где несколько — как «птицы»? И так для каждого тега держать единственное и множественное число? Начнётся мешанина и путаница. Я достаточно часто сталкиваюсь с этим, когда ставлю теги фоткам на Flickr. Время от времени приходится делать небольшую ревизию тегов — удалять дупы, сравнивать критерии меток.

Теги вне Сети

Изображения

Вернусь к фоткам. Теги для классификации фоток рулят. Всё хранить на Flickr.com — смешно :) Растаскивать по папкам — неэффективно. Вот я стал искать софтину, которая помогла бы использовать теги в организации фотоколлекции. Да и видео тоже.

Реализовать помечание фотографий можно двумя способами: хранить данные о тегах отдельно от изображения или же внедрять их в файлы.

Хранение тегов в самом изображении лучше, поскольку информация в этом случае не теряется при переносе изображений. Для хранения метаданных в изображениях есть следующие стандарты:

  • EXIF. Внедряется в изображения различных форматов; в полях EXIF хранится информация о параметрах съёмки (вспышка, баланс белого, светочувствительность, выдержка и т. п.); поддерживается почти всеми сегодняшними фотоаппаратами и ПО для обработки изображений; принтеры используют данные EXIF для лучшей печати. Кстати, в EXIF также хранится уменьшенная копия изображения (её можно оттуда вырезать и выиграть несчастную дюжину килобайт).

  • IPTC — стандарт для внедрения метаданных (не только в изображения); главное — по этому стандарту в изображения можно внедрять теги, место съёмки, описание. Flickr считывает из закачиваемых изображений теги в формате IPTC.

  • XMP — очень вкусное, имхо, творение Adobe. Расширяемый стандарт по внедрению различных метаданных в изображения. Открытый. Полностью поддерживается в продуктах Adobe, в прочем ПО поддержка не повсеместна.

Использование единых стандартов внедрения метаданных при разработке ПО — очевидно положительная практика.

Теперь то, ради чего я всё начал :) Для Linux есть такие программы, поддерживающие IPTC:

  • digiKam — записывает теги в IPTC.keywords. Помимо этого умеет ещё кучу всего. Возможно лучший менеджер фотографий для Linux (да и вообще для ПК). Минус — это “K” :) Тянет кеды. Сам не пробовал.

  • jbrout — более легковесное приложение, Python, гуй на PyGTK. Работает с данными EXIF, IPTC. По моим наблюдениям, сырая прога: нежно относится к повреждённым изображениям и отсутствию прав; разработчик не жалует try … except, похоже :/ По результатам использования — много багов и нестабильного поведения. В целом направление разработки позитивное, чел на нашёл подходящей тулзы и написал свою :) Программа достаточно легковесна, поддерживает плагины.

  • F-spot — достаточно мощная прога для управления фотоколлекцией. К сожалению, это чудо техники написано на Mono, кроме того, имеются сильные привязки к GNOME =( Кроме того, как раз работа с тегами в F-spot достаточно громоздка, хотя и позволяет каждому тегу назначить свою иконку.

  • mapivi тоже работает с IPTC, EXIF. Писано на Perl/Tk, и потому может отпугнуть интерфейсом. Меня отпугнула, например.

  • Picasa от Google тоже оперирует с IPTC-данными; закрытая, использует костыли в виде библиотек WINE, оттого медленно работает да ещё и как-то странно поддерживает русские буквы (во всяком случае, в Юникоде).

  • Exiv2 представляет собой библиотеку на C++ и утилиту командной строки к ней для доступа к тегам EXIF и IPTC в файлах JPEG, TIFF и RAW. Многие программы для организации фотографий (для *nix и Windows) используют Exiv2.

Для Windows в Сети есть неплохая подборка программ с поддержкой IPTC.

В общем, результаты исканий хреновые : Толком ничего идеально подходящего не нашёл. Буду либо тянуть f-spot/digikam, либо дорабатывать jbrout, либо писать свой легковесный велосипедик.

Видео

Здесь всё грустно. Широко поддерживаемых индустриальных форматов метаданных, куда можно было бы внедрить теги, нет; существует большое количество разных видеоконтейнеров. На Microformats.org можно почитать заметки и возможные решения на тему существующих и проектируемых стандартов метаданных для видео и аудио — и тех, которые предназначены для семантической разметки медиаконтента в сети, и тех, которые внедряются в сами файлы.

Формат OGGсвободный контейнер для аудио- (кодеки Vorbis, FLAC) и видеоданных (видеокодек Theora), тоже поддерживает внедрение различных текстовых заголовков в файлы; его повсеместное внедрение было бы отличным достижением прогрессивного человечества.

Интересен проект Dublin Core по созданию единого универсального стандарта метаданных для любых ресурсов: текста, изображений, звука и видео тоже. Повсеместное внедрение подобного открытого стандарта сильно упростило бы жизнь человечеству.

Но в целом ничего более-менее устойчивого и поддерживаемого разными форматами нет.

Прочее

На самом деле, было бы просто замечательно, если б существовало грамотно спроектированное модульное приложение, которое обеспечило бы как организацию данных при помощи меток, так и доступ к метаданным файлов самого разного содержимого!

Почему бы не использовать теги для классификации не только видеотеки и фотоальбомов, но и для документов, музыки и делать это прозрачно в одном приложении согласно одному стандарту, с возможностью взаимодействия с аналогичными сервисами в Сети (с тем же Last.fm)? Мне кажется, это было бы здорово.

Надеюсь, текст выше покажется кому-то интересным; я, правда, отошёл от темы тегов к использованию метаданных вообще. На самом деле, проблема организации и классификации информационных ресурсов человечества очень ёмкая и интересная. А то сейчас с этим, к сожалению, на самом деле жопа.

git