huge
73 заметки
терапия
Сейчас этот блог в основном про психотерапию.
как правильно
Слушайте меня, я вас научу правильно жить.
психология
Буржуазная лже-наука, пытающаяся выявить закономерности в людях.
практика
Случаи и выводы из психотерапевтической практики.
кино
Фильмы и сериалы.
книги
Это как кино, но только на бумаге.
nutshells
«В двух словах», обо всем.
дорогой дневник
Записи из жизни (скорее всего, не интересные).
беллетристика
Мои литературные произведения и идеи.
духовный рост
Когда физический рост кончается, начинается этот.
дивинация
Как предсказывать будущее.
половой вопрос
Про секс и сексуальность.
заяижопа
Творческий дуэт с моей женой.
магия
«Магическое — другое название психического».
Карл Юнг
игровой дизайн
Раньше я делал игры.
игры
Компьютерные игры.
язык
Слова там всякие.
людишки
Уменьшительно-ласкательно и с любовью.
культ личности
Про великих людей (то есть, в основном про меня).
hwyd
Уникальная Система Прививания Привычек.
буклет
я
идеи
блоги
spectator.ru
дети
wow
вебдев
музыка
контент
программирование
религия
дейтинг
диалоги
яндекс
кулинария
coub
fitness
символы
йога
шаманизм
tiny
ребенок

Тэги 2.0: сontribute or not!

17 лет назад в категории вебдев

В последнее время я работаю в Яндексе. Это такая интернет-компания, поэтому я время от времени думаю про всякие интернетовские вещи, типа вики, голосований или прочего.

Некоторые из этих мыслей не дают Яндексу неоспоримое конкурентное преимущество, поэтому не подпадают по NDA, но делают мир лучше, поэтому грех не поделиться. Особенно учитывая то, что на самом-то деле я не почетный член Yandex Labs и занимаюсь совсем другим.

Сегодня я долго и нудно думаю про тэги, ярлыки, категории, ключевые слова, — про эти штуки, которые пользователи добавляют к своим документам непонятно зачем и непонятно как.

Речь пойдет о тэгах на массовых сервисах.

Костя Коломеец придумал себе замечательный принцип — «сontribute or GTFO» и теперь носится с ним. Более емкую и понятную формулировку того же самого я видел у кого-то на сайте в виде disclaimer’а «Если ты нехороший человек, иди нахуй отсюда!».

Костя мечтатель, а принцип работает только в маленьких сплоченных группах («сектах»).

В реальности все не так. Все из вас наверняка видели онлайновые игрушки, типа «некое место, где все и каждый может составлять слова из букв». Этого зрелища хватает минут на пять, основные паттерны поведения понятны сразу. Даже если не брать случаи явного вандализма, коллективная работа и сontribute не выходит не только потому, что люди к ней не способны, но еще и потому, что способа договориться у них нет.

Тэги — наиболее уродское изобретение вебдваноля. Ровно по тем же причинам: предполагается, что люди «как масса» обладают неким интеллектом и способны действовать сообща.

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

Как легко догадаться, там должен быть изображен я. Но там почему-то изображен вовсе не я, а какой-то хуй в панамке.

(Смех в зале).

И если вдуматься, это не шутка.

/entry/3254

Язык многозначен, уровень владения им у всех разный, все думают по-разному, а кто-то вообще не думает; правил заполнения тэгов нет никаких.

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

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

На фотки.яндексе запрос «кошки минус коты» дает 88 тысяч фотографий, «коты минус кошки» — 18 тысяч. И пять тысяч «котят». Еще есть «cats» и «кошечки». Это всё одно и то же, но в Облаке Тэгов пользователю предлагают только «кошек». Процентов 30 теряется, но UGC — такая помойка, что все к подобному поведению привыкли.

Кто смог, тот всплыл, ага. При этом хорошо, что Яндекс ищет по тэгам с учетом форм слова, то есть «кошки» и «кошка» — это одно и то же. В других местах это совсем не так.

Но это детские примеры. Желающие могут угадать, какой тэг приписал автор своему посту «КАК ВЫТАСЧИТЬ КЛЕЩА».

Конечно же, «ПАРАЗИТЫ КЛЕЩ». Это один тэг.

Первые три мысли, которые возникают сразу:

1. Синонимы.
2. Поиск.
3. Конечно же, «паразиты / клещ».

Тэги против категорий.

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

Cовершенно очевидно, что игры должны быть и там и там, при этом это должны быть «одни и те же игры».

Продолжая мысль — те же «игры» могут быть и корнем (главной категорией) в одном случае, и подкатегорией — в другом. Очевидно, что нужна не древовидная структура, а скорей структура связей между категориями. Для умных — граф категорий с выделением корневых узлов. Очевидно, что категории должны отражать интересы пользователей, как тэги. Не на уровне «популярные категории выводятся жирным шрифтом», а на уровне «есть интерес — есть категория».

Что-то похожее сделано у меня на nudnik.ru: тэги+связи, важные тэги, аналог «корневой категории», выделяются руками.

Важный нюанс: эта система связывает уже существующие тэги, всеобъемлющую классификацию она создать не пытается.

Идеальная система тэгов на любом посещаемом сайте должна выглядеть так:

1. Пользователи вводят тэги в обычном порядке.

2. Модераторы берут существующие тэги и выстраивают между ними связи. Да-да, модераторы. Если вы считаете, что можно создать сайт с UGC без модераторов, то закройте эту страницу и всё забудьте.

При этом эта задача «модерации» тэгов гораздо более продуктивна, чем модерирование постов: новые тэги появляются не так часто, достаточно из связать один раз, и это будет работать надолго.

2.5. Одна из таких связей — несомненно, связь типа «синонимы». Достаточно один раз завязать всех «кошек» на одной слово — и всё, проблема с котами решена once and for all. При этом у синонимов должен быть один главный, вокруг которого растет гнездо. (Бесполезный факт: синонимы растут в гнездах).

Когда пользователь вводит неглавный синоним, этот синоним должен автоматически заменяться на главный. Да, это будет фрустировать пользователя, но окончательно решит проблему с двояким толкованием термина «киски».

3. После редактирования связей происходит автоматическая чистка тэгов в существующих «постах». Например, «cats, киски, кошки, животные» становятся просто «кошками». «Животные» убираются по понятным соображениям: «кошки / животные», то есть «кошки» входят в «животных», и при выборке по тэгу «животные» кошки будут показаны тоже.

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

После чистки же (в идеале) остаются только несвязанные между собой тэги, например, пост про ребенка и кошку будет иметь тэги, натурально, «ребенок» и «кошка».

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

Наиболее близка с идеалу вот эта реализация, только там это поле почему-то называется «Search Categories» и выбирать можно только одну категорию. Попробуйте ввести туда «cat».

5. Выборку по тэгам делаем так же, как выборку по древовидным категориям, то есть «в этом тэге и подтэгах».

Плюсы системы: модератору не надо заранее изобретать всеобъемлющие категории, всё делают пользователи сами. Модератору достаточно один раз связать и причесать уже готовые, введенные пользователями, тэги.

Тестирование: Я взял 10000+ популярных тэгов с fotki.yandex.ru и попробовал их классифицировать, используя мою систему c nudnik.ru.

Удалось разобрать 200 самых популярных тэгов, потом мне просто надоело. Самое главное, что мне не пришлось создавать ни одного нового тэга, пользователи действительно все сделали за меня, и все тэги уже имели привязанный к ним контент.

«Корневых» тэгов, из которых можно попасть в остальные, получилось всего 8 штук.

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

Итого: Для пользователей не меняется ничего (это важно), они все так же вводят тэги. Модераторы связывают тэги и указывают на ошибки («синонимы»). Эти ошибки больше не повторяются.

По выборке «животные» мы получаем всех животных, а не только тех, где пользователь соизволил указать «животные», а не конкретный их вид. Вместо страшного гиковского облака тэгов имеем более компактную и логически связанную псевдо-древоподобную навигацию.

Интерфейс.

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

Так что опишу словами.

Идеальный интерфейс для работы со словами — это... текстовый редактор. В нашем случае — поле ввода, типа textarea.

В несвязанном виде тэги имеют такой вид:

люди
я
дети
ню
природа
животные
домашние животные
кошки
кошечки
котенок
лошадь

Модератор берет и, натурально, работает с этим, как с текстовым файлом, используя простые правила, типа «знак /“ является разделителем» и простые понятные механизмы, типа cut/paste.

После редактирования человеком текст выглядит примерно так:

люди / я
люди / дети
люди / ню
природа / животные
животные / домашние животные / кошки
кошки / котенок
животные / лошадь
кошечки

После нажатия на кнопку «ок» получаем уже связанные цепочки, отсортированные по алфавиту:

кошечки
люди / дети
люди / ню
люди / я
природа / животные / домашние животные / кошки / котенок
природа / животные / лошадь

Осталось придумать синтаксис для синонимов. Тут всё просто, главное слово — кошки:

кошки = кошечки = киски

Никто не мешает выводить синонимы в конце текста, понимать комментарии и прочие служебные символы. На выходе (в форме ввода) получаем текст, вида:

## категории

!люди / дети
!люди / ню
!люди / я
природа / животные / домашние животные / кошки / котенок
природа / животные / лошадь

## синонимы

кошки = кошечки = киски

## еще не имеют связи

динозавры

Ну и мелочи — например, «!» в начале строки означает, что тэг действительно корневой (это вместо checkbox-а, ага), к тому же с сортировкой по алфавиту корневые тэги выводятся первыми. (Иногда надо связать несколько тэгов, но корневой тэг, который «достоин» попасть на морду сайта, например, выделить не получается).

Этот интерфейс в разы быстрей в работе, чем интерфейс с кнопочками, стрелочками и даже drag’n’drop-ами. Не говоря уже о поиске (Ctrl+F) и даже возможности банально впечатать нужное слово в нужном месте.

Стоимость разработки этого интерфейса стремится к нулю. Обработка данных тоже простая: режем на слова, сравниваем их с текущими тэгами, если есть «/» — проставляем связи.

0

Голосуй сердцем

17 лет назад в категории вебдев

Во всех голосованиях, типа +1/-1 должно быть на самом деле +N/-M, где N!=M (N не равно M).

Так как почти никто не понял моей гениальной гипотезы, поясню.

Но сначала — в чем смысл голосования вообще. Но это кто-то должен сказать все равно. Голосование — это выбор. Перед вами поставили пять президентов и под каждым повесили radiobutton. Выбери одного.

Понятно, что проголосовать одновременно за Жирика и за Зюгу нельза. А очень хочется.

Другое дело, когда у тебя есть много материала, и каждой твари можно проставить по паре оценку от 1 до 5. Конечная цель для голосования «на той стороне», то есть для сайта — всё тот же выбор, верней — отбор, отсеивание говна и составление более-менее адекватных топов.

Цель голосования для пользователя же совсем другая, ибо выбора нет. Пользователь может всем оцениваемым сущностям поставить 5 баллов. Полный аналог «я хочу, чтобы все были президентами одновременно». Понятно, что ценность этих голосов равна нулю, и в чистом виде такое почти не встречается, но возможность проголосовать так есть.

Ограниченного ресурса («выбери одного») нет, поэтому мотивов расходовать его экономно (или разумно) тоже нет. Но хоть какие-то мотивы нужны, поэтому и включаются эмоциональные механизмы, которые к тому же бинарны: «понравилось/не понравилось».

Разграничивать «понравилось, но не очень», то есть ставить «четверку» вместо «пятерки», смысла тоже нет: «вам что, жалко, что ли?». Нет, не жалко. Мы — добрые! А вот если нас, таких добрых, разозлить...

С точки зрения голосования, как выбора, дискретность шкалы имеет значение: чем больше шкала, тем выше точность. Наиболее подходящая шкала — стобалльная (при этом надо понимать, что голосование, типа 7.5 — это тоже стобалльная шкала, которая к тому же понятно для пользователя приводится в десятибалльной).

С точки зрения людей и особенно социально взаимодействия, наиболее удобна бинарная шкала: гавно/конфетка.

И 75-95% людей будут сводить любую шкалу к бинарной.

Gamespot.com - почти идеальное голосованиеОтсюда промежуточный вывод: как ты шкалу ни назовешь, ее все равно будут использовать ровно одним способом, как только поймут, что в ней «хорошо», а что – «плохо».

Дискретная шкала просто имеет чуть больше смысла для 10% адекватных людей, которые будут использовать ее «идеологически верно». Еще один побочный эффект: чем больше делений у шкалы, тем больше шансов, что «щедрый» человек поставит 9.7/10 вместо 5/5: «это не так обидно».

Людей же, которые «голосуют сердцем», не пронять ничем, даже индивидуальной подписью к каждой оценке. У них все равно будет свой взгляд, «они так видят».

Налицо конфликт между авторами сайта и посетителями.

Наглядный пример: на картинке представлен результат разброса голосов на imdb.com по фильму «Крестный отец», который занимает первое место в top-250.

Видно, что 6% людей поставили фильму 1 из 10, то есть считают «Крестного отца» невероятным феерическим говном, после просмотра которого у них выпали глаза, случился самопроизвольный фимоз головного мозга и развилась патологическая боязнь кинематографа.

Очевидно, что это не так, даже чисто математически: далее график проседает аж до «семерки», и куда делись те люди, которые оценили фильм в промежутке от 1 до 7 — не понятно. Согласно математическим ожиданиям, их должно быть в разы больше.

Средний балл при этом у лучшего фильма всех времен и народов всего 8,7.

Конфликт «разруливается» элементарно: «one man, one vote» — принцип для наивных дураков, которого придерживаться не нужно.

То голосование, которое мы имеем на входе — это просто некие сырые статистические данные, которые нужно оценивать именно так — как данные. При этом вычисление среднего балла — наиболее нелепая вещь, которую можно сделать с этими данными. Средний балл не работает сразу (один проголосовавший), не работает и потом, потому что процент идиотов — величина постоянная, а бирки на них, увы, не развешены.

На imdb используется weighted vote averages:

IMDb publishes weighted vote averages rather than raw data averages. Various filters are applied to the raw data in order to eliminate and reduce attempts at ’vote stuffing’ by individuals more interested in changing the current rating of a movie than giving their true opinion of it.

The exact methods we use will not be disclosed. This should ensure that the policy remains effective. The result is a more accurate vote average.

Простым языком это значит только одно: «не все голоса одинаково полезны».

Возвращаясь к «Во всех голосованиях, типа +1/-1 должно быть на самом деле +N/-M, где N!=M (N не равно M)» это значит только одно: «есть гипотеза, что люди опускают“ с большей охотой, чем поднимают“ (или наоборот), если эта гипотеза верна, то собранные статистические данные полезней считать не как тупую сумму, а с применением веса».

То есть, почти всё то же самое, что написано выше, но применительно к бинарной системе.

Проблема в том, что бинарную систему сложнее нормализировать. Совсем условно говоря, в стобалльной системе мы можем смело считать людей, поставивших «один», откровенными ретардами, в бинарной системе нам для этого просто недостаточно данных.

С другой стороны, «голосование», типа +1/-1 — практически идеальный инструмент для «опускания», поэтому использовать его нужно именно так: как массовое коллективное опускание. «Мне карму заминусовали». Еще один плюс такого голосования состоит в том, что влияние одного человека является понятной константой, и понятно, «как с этим бороться». В отличие от голосования по N-балльной шкале и подсчете среднего балла.

На skill.ru, кстати, я испробовал примерно четыре разных системы (с кучей вариаций), в конце концов пришел к формулам, согласно которой помимо всего прочего голоса некоторых людей в крайних случаях вообще не учитываются, причем на основе их всех предыдущих голосов. То, что вес каждого голоса учитывается индивидуально — тоже очевидно. Причем ручного «бана» там нет, все подчиняются одним и тем же математическим правилам. Теперь топы, по крайней мере, можно смотреть без содрагания.

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

Таким образом, идеальная система голосования:

1. Предлагает не бинарную шкалу, главным образом для себя, но еще и для маленького процента нормальных людей.
(Пользователи говорят, что им «привычна» пятибалльная, но они просто врут, ее просто проще привезти к бинарной. На «серьезных» проектах я бы делал 100 балльную и приводил всё к виду 7.5/10).
2. Не навязывает пользователям трактовку этой шкалы (!).
3. Не обязана и не должна учитывать каждый голос одинаково.
4. Имеет закрытые механизмы подсчета конечного рейтинга.

PS.

Самое главное, о чем забыл написать подробно — подумал, что это и так очевидно: для чего нужно голосование, и что оно меряет.

Голосование меряет только человеческий интерес. И всё. Те, кто думают, что голосованием можно измерять качество — в лучшем случае заблуждаются. Если будет анонимно голосовать одна и та же группа экспертов по всем работам, при этом никак с этими работами не связанная, — тогда может быть.

Голосование измеряет популярность.

В этом плане десять «четверок» гораздо ценней, чем одна «пятерка», да и вообще, количество оценок — тоже релевантный фактор.

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

То есть всякие артхаус и прочее geekery — это не показательный пример вообще. Другое дело, что на основе все того же голосования можно сделать фичу, типа «люди, которые поставили этому фильму пять“, так же поставили пять“ следующим фильмам», — тогда это будет работать даже на примере артхауса.

Принцип, кстати, всё тот же: пользователю на входе дается N-балльная шкала, всё остальное — просто работа с данными.

0
«Таро как инструмент самопознания», курс от создателя spectator.ru

This field intentionally left blank

Почитал топ-20 записей в поиске по блогам. Религия, нац.вопрос, нац.вопрос с серьезной стороны, нац.вопрос со смешной стороны, цены в СССР, собачатники и зеленые, феминистки, сотрудники милиции избили участников акции против милицейского беспредела. Всё это никогда не случалось раньше. (еще 705 слов)

Wiki 2.0

Wiki – довольно странный нишевый продукт. Довольно странный потому, что этим старьем все еще пользуются. А пользуются им – что тоже довольно странно – потому, что ничего лучшего до сих пор и нет. А ничего лучшего до сих пор нет, потому что продукт нишевый, и совместная работа над текстами не такая уж и популярная вещь. (еще 1144 слова)

WoW: полгода спустя

Посмотрел на досуге WoW, что там изменилось за полгода. Окончательно прижились так называемые «welfare epics» (и появился сам термин). Название, конечно, обидное, но у кажуалов появился окончательный и предельно понятный план развития персонажа: 10 игр на арене в неделю с любым исходом. (еще 611 слово)

Баксокарма

Некие (видимо, хорошие) люди попросили у меня придумать им «карму» на сайт (ссылку дам, как запустят). Ну, я придумал за 2 часа вечерком (идею просьба не тырить, пока не заплатили). Разрешение на публикацию, однако, есть (информация должна быть свободной, ага). (еще 612 слова)

Голубой метеорит

«Где-то в космосе летит Голубой метеорит», — снова начал декламировать Костя, в такт выводя карандашом четкие линии на бумаге. Вот привязалось же. Кто-то откопал стихи из старого советского мультика, наложил их на трейлер «Конца мира», последнего апокалипсического блокбастера про метеорит-убийцу, и выложил это в интернет. (еще 2889 слов)

WoW: итемизация

Blizzard — не новаторы. Они — очень талантливые и скурпулезные компиляторы. Жанр RTS был до них, но Westwood быстро отстал в конкурентной борьбе. Diablo — новаторство, но компания, которая его делала, была куплена и переименована в Blizzard North всего за полгода до выпуска игры. (еще 1006 слов)

Блоговар заставил меня сделать ЭТО!

Сейчас я вам расскажу смешную историю. Когда в WoW было введено PvP, поначалу система имела «соревновательный характер». Все сливки снимали только N первых. Кончилось все тем, что люди стали играть посменно. Потому что система была банально завязана на время, а в сутках всего 24 часа. (еще 687 слов)

12 плевков в спину блогосферы

Апач монетизировался (история вопроса). Это особенно радует потому, что Апач — не про монетизацию, не блогосфера™, и читать его все эти годы было приятно. Аудитория по размерам, кстати, у Апача не намного больше моей, так что и мне до монетизации недалеко, хехе. Ну а если серьезно, то ничего плохого в аппендиксе после каждого поста «этот пост спонсируется клубом любителей шариковых ручек» я не вижу. (еще 698 слов)

Гипертекст, веб и html

Гипертекст — идея хорошая. Прочитать про нее можно (и нужно) в моем дипломе. Но конкретно так называемый «веб» и html — предельно кривая ее реализация. Вот только некоторые «родовые травмы»: 1. Односторонние ссылки. Абсолютный и полный бред. Если я связываю документ А с документом Б, то велика вероятность, что документ Б тоже как-то связан с документом А. (еще 915 слов)

Как помочь жене

Специально по заявкам одной хорошей знакомой — «что должен делать муж, чтобы дать жене отдохнуть и выспаться?» Во-первых, стоит взять отпуск провести хотя бы первые две недели или месяц после рождения ребенка вместе. Тогда сразу отпадают вопросы, типа «почему я пришел с работы, а ужина нет?». (еще 701 слово)