schegloff (![]() @ 2006-10-18 03:02:00 |
Entry tags: | СГО, полезняшки |
Кого зафрендить, или Кажется, заработало!
СГО создавалась исходя из идеи, что 1) делать добро бескорыстно у нас пока не принято, и 2) но если заявить о таком намерении, то можно обнаружить, что не ты один такой придурок, а есть, оказывается, еще несколько (на данный момент 43) ЖЖ-юзеров, занимающихся тем же самым, - а значит, зафрендив их, можно с большей вероятностью рассчитывать получить оное "добро" самому. [я понимаю, что это лишь одна из сотен возможных интерпретаций СГО, но и она тоже имеет право на жизнь]
Так вот, второй раз сработало! Только что readership разместил в своем ЖЖ ссылку на утилиту LJ Frieds Finder, рассчитывающую "кого зафрендить из друзей моих друзей" методом, аналогичным PageRank, и описанным в ЖЖ
popunder:
Требование корректного взвешивания и приводит к простому алгоритму, родственному т.н. алгоритму PageRank, который патентован Google, но на самом деле обычное случайное блуждание по сетям.
Его работу можно объяснить простыми словами. Допустим мы подбираем друга для юзера X среди друзей его друзей. Представим, что мы даем ему 1000 рублей и заставляем его раздать их поровну своим друзьям. Следующим шагом заставляем его друзей распределить полученные деньги между своими друзьями. Часть денег попадет друзьям друзей X, который не прямые друзья X, которым мы разрешим оставить деньги себе, а остальная часть вновь окажется у X и его друзей, которых мы снова заставим распределить поровну. И так будем продолжать, пока большая часть не перейдет друзьям друзей (все 1000 рублей скорее всего никогда не окажутся у них). Тогда, сумма, накопленная каждым из этих пользователей и определит его PageRank score, который и можно использовать как мерило популярности. Очевидно, что данный метод также учитывает популярность друзей X и дает им соответствующие возможности поднимать рейтинги своих друзей. Надеюсь понятно изложил :)
Прямой адрес утилитки LJ Friend Finder - http://www.unifr.ch/physics/mm/work/lsartac, до которого никакими другими способами ни в жизнь бы не добрался.
Почему я так радуюсь сему обстоятельству? Потому как, попивши чаю, как раз собирался писать именно эту самую утилитку на питоне, - а тут усе уже сделано в наилучшем виде!
Ну, раз так, вопрос к уважаемым френдам: а кто-нибудь знает, как устроен внутри AVThreader? Такое ощущение, что в последнюю версию ljsm (лучшее, что на сегодня есть для офлайн выгрузки чужих ЖЖ) он не интегрирован, а хочется.
UPD: насчет AVThreader2 вопрос снимаю - исходники здесь: http://tmp.setia.ru/threader2.rar.anton, по запросу "AVThreader исходники" блогс.яндекс ее не находит, а вот Гугль рулит.
Любопытно, что из двух способов изучить "внутренности livejournal" - искать в Сети документацию или смотреть чужие исходники - второй побеждает практически нокаутом.
![]() | ![]() 2006-10-18 06:39 am UTC (link) |
Ценные утилитки. |
![]() | ![]() 2006-10-18 07:07 am UTC (link) |
Спасибо, буду юзать. |
![]() | ![]() 2006-10-18 07:40 am UTC (link) |
Интересно. Думал, для работы подобной утилиты нужны рейтинги (ибо порой мне интересен сам человек, но выбранные им френды скучны, а порой ровно наоборот), однако же результат даже столь простого подхода порадовал. Спасибо за ссылку. Кстати, навскидку возможное развитие алгоритма (с автоматически вычисляемыми рейтингами): Точно так же распределяем 1000 рублей, гоним алгоритм и так далее. Но вводим одно дополнение: если френд юзера X отдает рубль другому френду X - даем ему доллар. Таким образом в итоге после прогона цикла у каждого будет сколько-то рублей и сколько-то долларов. Далее по количеству долларов вычисляем вес (например, как exp($) или const+$). Т.е. люди, которые френдят тех же, кого френдит X, получают больший вес. А теперь начинаем все сначала - но делим рубли уже не поровну, а пропорционально весам. Другая вариация: юзер раздает 1000р френдам. Каждый из них раздает полученные деньги своим friend_of. А те - своим френдам. Результат - выбираем френдов тех, у кого общая политика френдования с X. (Reply to this) (Thread) |
![]() | Сами поэкспериментируете? ![]() 2006-10-18 01:41 pm UTC (link) |
Если я выложу сеть френдов для Вашего ЖЖ - беретесь посчитать ее в разных вариантах? Типа на питоне, фокспро, визуал-бейсике или чем-то еще? (Reply to this) (Parent) (Thread) |
![]() | ![]() 2006-10-18 02:17 pm UTC (link) |
В каком она формате получится-то? Если просто список моих френдов + для каждого список его френд-оф (именно френд-оф) + для каждого из тех френд-оф список его френдов (все в простом текстовом формате) - то можно, работы на час максимум. Или список всех вышеупомянутых + список направленных связей между ними. Но если готовой тулзы для выдирания именно в таком виде нет - то, возможно, мне проще будет самому сделать выкачивание информации (правда, на это я вряд ли сподвигнусь в ближайшее время). Да, насчет формирования входных данных: френдов с большим количеством friend-of можно вообще не учитывать в вычислениях (к примеру, мне можно не анализировать, добавлять ли кого-то из 1700 friend-of eiri или churkan - если человека нет в других списках, то присутствие в большом ничего не значит). Если дело дойдет до онлайновой тулзы - это сильно ускорит ее работу (в 10-100 раз меньше информации качать). (Reply to this) (Parent) (Thread) |
![]() | Re: Сами поэкспериментируете? ![]() 2006-10-18 03:27 pm UTC (link) |
Вы лучше скажите, каким языком владеете (perl, php, python, .net). Выкачивание информации делается элементарным циклом на том же питоне, список FOAF для себя (108 френдов) скачал за 20 минут по плохому каналу, получился текстовый файл под мегабайт, уровень FOAFOAF я пока трогать не стал - там уже 10635 ЖЖ-юзеров, качать придется уже 30 часов. А уровень FOAFOAFOAF, боюсь, - это уже весь русскоязычный ЖЖ получится :) Сейчас я как раз играюсь (рабочий день закончился) с таблицей своих FOAF, поскольку увидел при работе LJ Friends Finder такого типа строчку - "olshansky - 963 friends". Поскольку число френдов каждый скрипт считает по-разному (например, в рейтинге яндекс.топ у почти тысячника el-cambio долгое время высвечивалось то 37, то 38 читателей), возникло желание проверить результаты самостоятельно. Вообще, считаю, что инструментарий для самостоятельной навигации в ЖЖ-пространстве должен быть у каждого на собственном компе, в исходных текстах, и на понятном языке программирования. Поэтому уже руки чешутся вслед за Google сделать python стандартом СГО :) (Reply to this) (Parent) |
![]() | ![]() 2006-10-18 09:13 am UTC (link) |
Вот еще что-то из этой области: ( 7ruk.ru ) "Ты знаком с любым человеком на Земле через 7 рук Вы слышали о том, что все люди на Земле знакомы друг с другом через 7 рукопожатий? 7ruk.ru позволяет увидеть это явным образом." Все просто: 1. Вы регистрируетесь; 2. Устанавливаете связь со своим другом; 3. Находите любого нужного Вам человека, а мы выстраиваем цепь связей от Вас, до этого человека. |
![]() | ![]() 2006-10-18 01:07 pm UTC (link) |
Выдралось тут в рабочее время полтора часика, и решил я поглядеть, кого же мне эти утилитки насоветовали.. 1. просмотрел журналы 6 рекомендованных топов (2 х 3 из каждого списка). Ничего уникального и особо интересного в них не нашел 8( 2. основываясь по выявленным точках зрения, мнениях, жизненных позициях, образованию, сфере деятельности и интересах, ни с кем из 6 топов знакомится не захотелось особенно. В мои френды попадают те, кто чем-то мне интересен. Можно, конечно, интерес "насильно" породить, но, как показывает практика, он будет не жизнеспособен. А если замусорить связи СГО станет тоже не интересной. А без связей я СГО не интересен.. Вот такая дилеммка.. (Reply to this) (Thread) |
![]() | Есть нюанс :) ![]() 2006-10-18 01:38 pm UTC (link) |
Эта утилитка хорошо работает в том случае, когда у Вас имеется достаточное количество работающих на Вас "экспертов", т.е. Ваших френдов, по выборам "кого читать" которых и строится рейтинг. Если же френдов у Вас 5 (пять), то и мощность Вашего персонального "искусственного интеллекта" составляет всего 5 "нейронов". Ну и результаты соответствующие получаются. Думаю, что система FOAF начинает выдавать что-то оригинальное начиная с 50 френдов. А в модели нервной системы дождевого червя было, кажется, 300 с лишним нейронов. Так что вывод очевиден: достраивайте свой собственный "сетевой компьютер". В ЖЖ около 50 тысяч активных пользователей, думаю, Вы просто не сталкивались с теми, кто пишет что-то интересное для Вас. (Reply to this) (Parent) (Thread) |
![]() | ![]() 2006-10-18 02:09 pm UTC (link) |
Ну.. читать ленту, куда постят 50 френдов... не детский труд. Хотя причина может быть в том, что я и по жизни не сильно общителен, друзей - раз два и обчелся Буду думать как скомпромисить. Как вариант - можно "реальных" друзей-знакомых френдить/затаскивать в ЖЖ. (Reply to this) (Parent) |
![]() | ![]() 2006-10-18 02:16 pm UTC (link) |
Эх, если бы эта штука могла конкретные группы фрэндов обрабатывать, а не всех фрэндов, тогда бы она мне действительно пригодилась. А так, выводит на тысячников каких-то :-( (Reply to this) (Thread) |
![]() | Че-то странно, сейчас проверю... ![]() 2006-10-18 03:40 pm UTC (link) |
Может, Вы там у себя КЛИКУ завели? :) (есть такая популярная утилитка в ЖЖ, только я с ней пока не разобрался) Так, и что же получается? bubnoff - 17646 в рейтинге Яндекса, kitushin - 110554... ничего так "тысячники" :) ИМХО, нетривиальные результаты. Галочку Sort by PageRank score ставили? Поскольку я только что сам себе построил свой PageRank (совпал, однако, с popunder-овским!), принимаю заказ на обработку "конкретных групп френдов". Что сие означает и где эти "конкретные группы" лежат? (Reply to this) (Parent) (Thread) |
![]() | Re: Че-то странно, сейчас проверю... ![]() 2006-10-18 05:13 pm UTC (link) |
я просто тыкнул на первых трёх попавшихся, попал на тысячников (Reply to this) (Parent) |
![]() | Re: Че-то странно, сейчас проверю... ![]() 2006-10-18 05:16 pm UTC (link) |
>Что сие означает и где эти "конкретные группы" лежат? Я имею в виду личные группы фрэндов каждого пользователя. У меня таких четыре (не считая стандартных). При этом регулярно читаю только две (на всю фрэндленту времени не хватает, да и почистить её пора, да руки не доходят) (Reply to this) (Parent) |