Как стать автором
Обновить

Комментарии 65

А подробней?
Читаешь топик - клацаешь захабрить/отхабрить. Только кнопочки эти влияют не на то, будет ли этот топик показан хабракоммьюнити на главной странице, как сейчас, а на то, будут ли лично Вам в будущем показываться аналогичные топики. "Аналогичность" вычисляется математически, по методу Байеса (движком сайта).

Никаких "личностных" оценок типа "популярности топика" или "кармы автора" при этом нет. Точнее, их можно параллельно использовать, можно не использовать - исключительно как механизм одобрения и поощрения, а не фильтрации.
вычисляется математически, по методу Байеса (движком сайта).

а это как?
Честно скажу, поленился ссылку сделать в топике - решил что все или и так знают, или гуглом воспользуюся. Виноват, каюсь: Теорема Байеса.
спасибо
У байесовской классификации (а эта технология относится к "мягким вычислениям") есть существенный недостаток: она, как и перцептрон осуществляет линейное разделение всего множества входных событий на "плохие" и "хорошие". При этом несущественная, с точки зрения пользователя, модификация "плохих" событий делает байесовский фильтр непригодным. По сути, этот фильтр эффективен для фильтрации сообщений со сходным словарем.
Но есть другие, более перспективные технологии, например фильтры на основе нечетких множеств. Они в отличие от байесовских - нелинейны и могут учитывать схожесть (с точки зрения контекста их применения) слов и предложений из них составленных. То есть они, практически, фильтруют смысл топика.
с ума сойти. я далек от этого, но насколько я вижу, еще немного и будет сделан кардинальный шаг в сторону генерации одной единицы контента(статьи) с использованием различных источников информации? верно? такая клиентоориентированность на 100%?
На мой взгляд, для описанной задачи байесовская классификация как раз хорошо подойдет - словарь характерных слов тут весьма ограничен :) Кстати, она пригодна не только для того, чтобы разделять на плохой/хороший, но и для классификации по нескольким категориям.
Насчет классификации по нескольким критериям, полностью согласен, но при этом сохраняются свойства линейности классификатора. Насчет словаря - трудно сказать определенно - возможно в простейших случаях, типа "японял", это и верно, но для более сложных случаев фильтрации эффективность байесовского классификатора мне кажется сомнительной.
Вы предлагаете отсекать "плохой", неинтересный контент. Минус тут очевидный - тяжело сообщить компьютеру что же вам конкретно не понравилось. Самый простой пример - интересно читать то, что не знаешь и в круге интересов. Но читать про тот же google gears одно и то же десятый раз скучно и не интересно, хочется свежих данных. Но компьютер не знает что вы уже знаете про gears, а что нет и не может оценить полезность, т.к. по баесу статьи будут одинаковы.

Можно пойти с другой стороны, предлагать искать хороший, который похож на встретившийся. Критерии похожести могут быть разными - по содержанию, по тегам, еще того же автора, ... Вот здесь как раз всякие "неточные логики" и Баесы можно применять.
кстати, да, очень интересно прочитать в первый раз про iPhone, интересно прочитать про него во второй раз, но когда читаешь про него в пятнадцатый раз, уже не интересно. имхо, такую фильтрацию настроить будет очень сложно, так как часто я успеваю прочитать о новинке на ixbt.com или lenta.ru, и только потом статья появляется на хабре. предлагаемый поверьманом механизм нужно встраивать в rss-reader, что, впрочем, уже реализовано в google.news :) там на одну новость приходится по десятку статей в разных изданиях, но мудрый гугл показывает одну новость, как одну новость, а не как десяток статей.
Т.е. приходим к выводу что база должна знать про все сайты, которые вы читаете(т.е. хранится как можно ближе к вам), но и одновременно быть доступна веб-сервисам типа Хабра для фильтрования. Лучше всего это делать в виде отдельного сервиса с внешним API, хранилищем баз и клиентским софтом для анализа посещаемых страниц.
Google Search API?
Не, гуглу я такую информацию не отдам. Он и так про меня уже слишком много знает.
Вы даже не представляете, как обидно читать идею самостоятельного сервиса, которой живешь уже пару месяцев и всячески развиваешь в голове, но на реализацию которой нет ни времени, ни дружеской/партнерской поддержки, ни средств.. Ножом по сердцу. =(
не бойтесь, я вашу идею не отберу :)
можете реализовывать себе спокойно, у меня тут работы и так невпроворот.
пойду-ка я домой, а то уже ночь..
Не боюсь - более того, присоединился бы с удовольствием к команде разработчиков, коль взялся бы кто-нибудь за дело )
Во всяком случае, приятно ощущать себя не полным дураком и осознавать, что идея актуальна.
мне кажется, что тогда о кешировании можно будет забыть...
ИМХО, задача близкая к фильтрации спама и все методы те же тут приминимы. Сети Байеса, если Вы их имеете в виду, видимо, только частный случай.
В отличие от спама, врядли авторы хабра будут писать статьи используя приёмы спамеров, чтобы прорваться сквозь фильтры. :)
Все же это не мешает использовать методы фильтрации спама. Ведь там тоже определяется близость писем по содержанию, определение характерных признаков и т.п.
Я, вероятно, не достаточно понятно изложил свою мысль.

Я хотел сказать, что как раз благодаря тому, что топики:

  • содержат осмысленные статьи, причём обычно значительно большего объёма чем email (т.е. предоставляют больше данных для анализа)
  • обычно посвящены одной теме
  • не содержат никаких приёмов для обмана фильтров
    их можно будет автоматически фильтровать значительно эффективнее!
главное - у них есть тэги, которых у писем нет. )
Вообще-то (если я правильно понял) речь шла не о Байесовских сетях, а о Байесовском наивном классификаторе. Обычно в задачах классификации/фильтрации используется именно он, так как запрограммировать автоматическое построение сети довольно сложно.
Я бы не стал этого делать. Люди не всегда довольны тем как человеческий разум модерирует контент, а Вы хотите эту функцию доверить машине.
Я вас понимаю, но есть нюансы:
  1. человеческий разум обычно модерирует контент для группы людей, у которых интересы и предпочтения не могут быть одинаковыми, отсюда и недовольство... а в моём варианте фильтрация идёт согласно индивидуальным предпочтениям
  2. люди доверяют машине фильтровать свой email, что гораздо опаснее... но что делать, если не фильтровать то они будут завалены спамом
  3. вам никто не мешает контролировать что именно машина отфильтровала заглядывая иногда в папку "отхабренное" и переучивать фильтр нажимая "захабрить"
И я Вас понимаю, но на сколько мне известно, машина умеет классифицировать на тематики, и не умеет делить на хорошее и плохое. Это следует иметь ввиду. Для Вашей идеи, может оказаться равнозначным прикрутить классификатор к какому-нибудь OpenSource аггрегатору. В таком виде идея вполне осуществима.
машина умеет классифицировать на тематики, и не умеет делить на хорошее и плохое


Конечно, машина этого не умеет - но идея-то в том, что делить будет человек! Человек показывает машине, что лично для него является хорошим, а что - плохим. Машина учится и дальше классифицирует сама. И кстати, это совсем не модерация, ничуть - это лишь продвинутая логика составления персональной ленты.
Кстати, любопытно, я далёк от мысли что я первый до этой идеи додумался... следовательно где-то это уже может быть реализовано. Кто-нить знает примеры (удачные или неудачные) внедрения такого подхода?
По моим данным, таких сервисов еще нет.
хороша идея. а не страшно ее так просто выкладывать?
А что мне за это грозит? :)
потеря идеи
Не, Вы не поняли. Лично _мне_ чем это грозит? Если идея окажется хорошей, да ещё и не реализованной, и кто-нить её реализует - я на халяву получу площадку где можно будет эффективно фильтровать контент.

На самом деле, я, конечно, понял о чём Вы говорите. На этот счёт у меня есть любимая цитата, встретил на каком-то форуме: "А за использование понятия 'недополученная выгода' я бы убивал!".
цитата классная. я понял) но всему мешает "бы":))
Согласен, но я для начала стал делиться этой идеей с близкими реаловыми знакомыми с целью получить стороннюю оценку и, быть может, единомышленников )
А смысл пользователям писать топики тогда?
Как с социальной составляющей?
Сейчас они пишут что-то, растут в глазах общественности, видят результат.
А тут вообще не понятно, увидит кто-нибудь то что ты напишешь или нет, потому что все уже могли забанить эту тему :) Хотя, не все. Может в этом и интерес...
А новым пользователям тогда скидывать все что можно?
Так.... Я запутался, одни вопросы. По-моему, кому-то еще придется эту идею додумать :)
Да, социальную значимость тут тоже кое-как можно и нужно прикручивать для успешного существования социальной сети.
Идея отличная. Но есть проблема с обучением - байесовский классификатор лучше всего учится, когда ему подсовываешь те примеры, на которых он ошибся. С "плохими" темами все ясно - увидел плохой пост в ленте, кликнул "минус" - больше такого не увидишь. А как быть с "хорошими"? Как пользователь подсунет ему тот хороший пост, который не попал в ленту, а должен был бы? То есть, где пользователь будет искать такие хорошие посты?
"Прямой эфир" ,)
Сервер не загнется всем Байеза расчитывать?
Я даже про персонализированные RSS ленты еще не слышал(чтобы хотя бы по пользователю можно было отсекать, удобно для разных community), а вы уже таких наворотов захотели.
А вообще такая идея легко реализуется в виде локального RSS-прокси, все собираюсь для себя такой написать, да никак собраться не могу.
На самом деле я думаю персонализированный RSS не так тяжело сделать - даем пользователю страницу, в которой он расставляет галочки напротив тем, которые ему интересны. На основе галочек ему выдается ссылка на RSS. Достаточно сгенерировать необходимое число RSS лент, которые включают в себя все возможные варианты выбора. Естественно работать такая система будет при ограниченном количестве вариантов расстановки галочек.
ну это не персонализированный как вы понимаете, просто стало больше лент. Если у вас 10 галочек, то вариантов уже 2 в десятой, т.е. 1024 ленты.

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

Число лент, конечно, вырастает очень сильно и таким образом подходит только для ограниченной персонализации.
А по поводу числа лент - не вручную же их генерируют.
просто если галочек будет 100, то места на сервере под все RSS-ленты не хватит.
Так не надо просчитывать все комбинации - надо считать только те, которые запрашивают :)
ну так либо у нас статика, которая быстро работает
либо динамика, которая удобна, но тормозит
можно еще добавить кеширование на динамику, тогда получится ваш вариант, но при большом разбросе галочек будет все арвн отормозить.
Я бы не был так категоричен :) В больших (нагруженных) проектах граница между статикой и динамикой обычно весьма размыта: при формировании динамики почти всегда используется кэширование, а сформированная динамика часто пишется в файл, чтобы в дальнейшем отдавать этот результат как статику.

Различных комбинаций данных может быть потенциально бесконечное количество, но вот количество пользователей, в данный момент работающих с сервисом - всегда конечно. Поэтому вполне реально всем им угодить, рассчитав именно то, что нужно им.
Да, только потребуется алгоритм посложнее текущих. А вот его всем стартапам вломы реализовывать, поэтому и имеем только торчащие наружу RSS одинаковые для всех. Надо садиться и делать opensource библиотеку для всей этой кухни и пинать разработчиков сервисов ее использовать, тогда наступит вселенское счастье :)
На многих хостингах работают спам-фильтры, использующие байесовский классификатор. По моему, для большинства пользователей поток почты (включая спам, конечно) по объему больше, чем поток читаемых им rss. Так что особой проблемы с вычислениями не вижу.
у того спам фильтра одна баесовская база, в нашем случае их много и они часто меняются
Да, но это к вопросу об объеме данных, который поднят ниже. А на производительность вычислений не влияет, так как она пропорциональна количеству поступающих сообщений (еще конечно здесь будет время на подгрузку базы нужного пользователя - но это мелочи).
Проверка спам/неспам будет по времени занимать столько же.
Основной overhead будет на подгрузке, пересчете и загрузке обратно базы конкретного пользователя. Причем делать это параллельно для кучи народа.
Если соберетесь для себя написать, гляньте на то, что я для себя написал (ссылка в профиле), может пригодится :). "персонализированные RSS", "локального RSS-прокси" - можно и так сказать :)
Немного почитал описание. Как я понял у вас предполагается что я буду постоянно добавлять через веб-форму понравившийся контент и оценивать его? Тогда это большая ошибка, все просто вломы этим заниматься. Я уже давно пытаюсь придумать способ, позволяющий оценивать контент прям при его чтении без перехода куда-то, да еще чтобы не нужно было нажимать каждый раз кнопку - "хочу оценить этот кусок". Нужен псевдо-ИИ, который просто анализируя поведение пользователя делает выводы. Как пример - скопировал пользователь кусок текста в clipboard - подняли оценку. Быстро пролистал - понизили. Долго читал - подняли. И т.д.
То, о чем вы говорите, интересно, - но я сомневаюсь в применимости такого ИИ ко всем людям, - я думаю стоит учитывать только явные действия пользователя, которые, разумеется, должны быть удобными.
У меня предполагается то, что пользователь, однажды настроив "под себя" процесс сбора новостей, будет забирать интересные себе (это единственный у меня способ оценки) одним-двумя кликами. Вот тут, например, я читаю новости с этого ресурса, например, и вы просто не видите кнопочек "забрать" и "выделить" и "забрать выделенное".
"Вот тут" было ссылкой, ну да ладно :). Короче, в той системе я читаю новости хабрахабра, как и все остальные.
1)Как было сказано выше – потребуется держать для каждого пользователя свою баесовскую базу – размеры общей базы будут соответственно огромными.
2) На сколько Баес вообще будет хорош для таких решений? При работе со спамом предполагается то все спам-письма похожи друг на друга – то есть содержать пересекающиеся множество терминов – на сколько это будет работать для статей? То есть автоматически отбрасывать все статьи про web дизайн и рекомендовать все статьи про php программирование баес фильтр сможет. А вот отличить «хорошую» статью про web дизайн от «плохой» нет.
3) Так как Вы, в описании алгоритма работы, не отказываетесь от голосования за контент как такового – может было бы правильно применять алгоритмы рекомендации контента, основанные на оценках пользователей?
Хорошие вопросы поставлены.

1. Да, внедрять такой сервис массово - это значит хранить большой объем данных. Однако, можно придумать разные ухищрения - например, хранить не полную базу, а только наиболее отличительные слова. Или объединять похожие профили пользователей, или сжимать их на лету (ведь не все одновременно лезут на сайт - а сжимаются такие данные хорошо). В общем, если бы это внедрял Яндекс - думаю они бы справились ;)

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

3. Наверное это и есть ответ на мой вопрос про то, как пропущенные классификатором хорошие посты попадут в ленту :)
Сильная идея по-моему. Ещё, если речь идёт о блоге с большим количеством пользователей, то можно использовать данные "похожих" пользователей (то-есть тех, кто примерно одинаково оценивал топики): если некоторое количество похожих пользователей поплюсовали топик, то наверно и мне он интересен, а если минусовали, то наоборот. Правда этот механизм по-моему уже реализован в некоторых местах, но вместе с фильтром Байеса он как раз будет отлавливать топики, которые похожи по словам, но другие по качеству.
На мой взгляд, совершенно правильно мыслите. Именно на базе такой функциональности и можно прикрутить социальную значимость пользователей в системе.
имхо самая интересная идея, это автоматическая расстановка тегов. А вот на основе уже тегов генерировать персональную RSS ленту.
Вроде бы это как раз основная фишка проекта reddit.com
Идея отличная! Проблемы есть, но есть и над чем подумать. Только стартапу такое не поднять, это уже выходит за рамки написания пользовательских интерфейсов и оптимизации скриптов. Если кто и поднимет такое - крупные поисковики, тот же гугл. У них уже наверняка есть наработки в этой области для поиска, осталось дождаться открытого API.
Идея очень похожа на так называемый Collaborative Filtering, а даже скорее на Active Filtering, когда учитывается некоторые активные показатели, такие как захабренность.

Ну а дальше на эту инфу уже можно натравить любой из методов машинного обучения aka Data Mining, Байес по опыту сливает тому же Персептрону и SVMу. Проблемы и это очень серьёзная задача с формированием данных для алгоритмов машинного обучения. Этим много где занимаются и на Amazon.com и в Netflix (тут вообще обещают миллион долларов тому кто их алгоритм на 10% по-моему обставит), в Hewlett-Packard, начальник их Data Mining отдела рассказывал на презентации в МГУ, и много наверно где ещё. Проблема очень актуальна и пока нормальных статей по этой теме лично мне не попадалось!!

Ну а после того как готова концепция, вопрос только в технических деталях :) Удачи!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории