• 69757
  • 1363
  • 82
Нравится блог?
Подписывайтесь!

Немного статистики #2

 

В отличие от предыдущей записи, здесь использованы практически все данные
по записям(в том числе приватным), комментариям и пользователям. Расширен
разрез данных и сделаны поправки. Для удобства, добавлены наглядные
графики.
Добавлено несколько объяснений как был получен данный результат.
*1.колличество пользователей 13989
*1.2.колличество пользователей написавших хотябы один пост 3372
*1.2.2 колличество пользователей написавших хотябы один пост или коммент 5445
*1.3 колличество всех записей 38777
*1.4 колличество всех комментариев 388484
*2.график пользователей по регистрации данных (по месяцам)
2.2 график тотал пользователей по месяцам
3.график пользователей по колличеству записей (log: 0, 1, 3, 10, 50, 100,
500, 1000)
3.2 первые 50 пользователей по записям
4.график пользователей по колличеству комментариев (Log: 0, 10, 100, 500,
1000, 5000, 10000)
4.2 первые 50 пользователей по комментам
5.график рейтинга пользователей (-less, -10, -5, <0, 0, 5, 10, 50, 100,
300, 500, 1000)
5.2 первые 50 пользователей по рейтингу
*7. 20% пользователей генерируют 98% и 60% сообщений соответственно
*8. 20% и 2% пользователей генерируют 99% и 73% комментариев соответсвенно
*   20% и 2% пользователей имеют 50051.39 и 28277.72 рейтинга соответственно при общем балансе 46593.38 рейтинга по всей платформе и при сумме всего позитивного рейтинга 50278.51
Как были получены данные:
-источник: веб страницы yvision.kz. Вся использованная информация доступна каждому пользователю сети интернет.
-инструменты: 80 строк Python кода для извлечения и фильтрации данных,
Excel для анализа и графиков.
Что хотелось бы добавить:
-анализ звязей между пользователями
-динамику изменения рейтинга для каждого пользователя втечении времени
-что ещё? есть идеи? делитесь!

В отличие от предыдущей записи, здесь использованы практически все данные по записям (в том числе приватным), комментариям и пользователям. Расширен разрез данных и сделаны поправки. Для удобства, добавлены графики. Добавлено несколько объяснений как был получен данный результат.

 

  • 13989 зарегистрированных пользователей
  • 3372 пользователя написавших хотябы одну запись
  • 5445 пользователей написавших хотябы одну запись или один коммент
  • 38777 записей
  • 388484 комментария
  • 20% пользователей написали 98% всех записей (примечание: очень отличается от предыдущей версии, нужно проверить)
  • 2% пользователей написали 60% всех записей
  • 20% пользователей написали 99% всех комментариев (примечание: очень отличается от предыдущей версии, нужно проверить)
  • 2% пользователей написали 73% всех комментариев
  • 46593 - баланс(сумма) рейтинга по всей системе(у всех пользователей)
  • 50278 - сумма положительного рейтинга по всей системе
  • 20% пользователей имеют 50051 всего положительного рейтинга
  • 2% пользователей имеют 28277 всего положительного рейтинга

Как были получены данные

  • источник: веб представление yvision.kz. Вся использованная информация доступна каждому пользователю сети интернет.
  • инструменты: 80 строк Python кода для извлечения и фильтрации данных, Excel для анализа и графиков.

Что хотелось бы добавить:

  • анализ связей между пользователями
  • динамику изменения рейтинга для каждого пользователя втечении времени
  • что ещё? есть идеи? делитесь!

 

 

Vitaliy Tsvayer tsvayer
21 июля 2010, 21:45
1299

Загрузка...
Loading...

Комментарии

ankona
0
0
Число зарегистрированных пользователей по месяцам - явный скачок в апреле, наверное с Barcamp CA связан.
D1kz
0
0
"числи"? что это такое? ^^
это очепятка :)
ankona
0
0
"анализ звязей".
И еще что за позитивный рейтинг? Можно заменить на "положительный рейтинг".
анализ друзей, граф , подскажите как будет понятнее и правильнее.
позитивный рейтинг :))) я ни гаварить руски :)))
... и ещё спасибо за поправки!
Каков флудер, а! Войсом я столько пиздеть не умею. :|
да уж, наследил :)
cypher
0
0
да ты злой дядя)) наверна работаешь в НИТе) просто друг там такое же мутил) Молодец! кажись правдоподобно 8)
лучше 1 раз увидеть
а друг для чего делал? есть где посмотреть?
cypher
0
0
говорит что стат-ка "внутренняя", доступа нет)) Он один из разработчиков egov.kz
Darmen
0
0
>>20% пользователей написали 98% всех записей
>>2% пользователей написали 60% всех записей
Кто-то писал совместно? =)

А по сабжу - хорошая идея, хорошая тренировка для мозга (регулярки, нагрузка и проч.)

P.S. Три года назад делал нечто подобное, только для Free-lance.ru — Рейтинг самых активных флудеров на Free-lance.ru
:) иногда нужно отвлечся от работы.
На чём писал?
Кстати, забыл упомянуть про RegexBuddy, незаменимая штуковина.
в каком смысле ручками? в PHP библиотек на все случаи жизни :)
обычные preg_*, fopen и т.п
даже без curl и regexbuddy
а почему например без curl?
так захотелось, честно =)
Честно, а хоть смотрели на связку curl + xpath?
конечно смотрели =) но задача не стояла сделать быстро и с использованием библиотек. Задача была - научиться пользоваться регулярными выражениями хотя бы на "4"

Поэтому simpleXML, xpath и проч сразу отбросились
кстати для data scrapinga с плохим HTML, xpath к сожалению бессилен. Нужно будет проганять через чистилки всякие и т.д. С regex всё проще.
К тому же чтобы запустить XPath нужен DOM, a с большим колличеством документов это будет несамый быстрый вариант.

P.S. я неутверждаю что на yvision html битый, я обобщаю.
Стандартный алгоритм(без маш.об.)
1. Curl-ом получить контент;
2. Подчистить контент и привести к кодировке;
3. Dom->loadHTML(контент от curl-а);
4. Xpath-поиск;
5. Радоваться.

p.s. для этого варианта можно сделать GUI,
со всеми вытекающими.
p.s. Вариант с регулярками априори не самый быстрый:).
p.s. Попробуйте написать регулярку,
которая будет с любой HTML-страницы
выдирать HREF у ссылки, если не сможете,
то добро пожаловать к моему варианту:).
боюсь я несогласен.
пункты 2 и 3 очень ресурсоёмкие.
К тому же xpath поломается при малейшем изменении в иерархии документа, использование "//" будет ещё тяжелей.
Гнаться за Generic Solution("с любой HTML-страницы") не самый верный путь. Считаю что к проблеме нужно подходить в частном порядке.
Ну и наконец думаю стоит просто протестировать, у меня на диске как раз лежит много HTML с yvision. Постараюсь выложить результат на неделе, если интересно конечно.

P.S. любому GUI предпочитаю interactive python console.
Я лет 8 назад пользовался фопенами и чистыми регулярками. И считал, что это истинный true.
Сейчас, пришел к тому, что описал.
И когда вижу как 19-летняя девушка описывает мета-информацию для HTML-обертки и познаний у нее в программировании 0. И за час она может описать оберток 20. То прихожу к выводу, что именно это истинный true.
Я не бегу за ресурсами. Не та это задача.

p.s. Регулярное выражение тоже можно "сломать", нужно просто с данными поиграться.
p.s. Хотелось бы увидеть результат теста, только мой вариант заранее проигрышный по ресурсам. Т.к. ту же чистку нужно делать регулярками.
неулавливаю логики.
Задача из большого колличества файлов извлечь информацию.
То есть каждый файл будет загружен на короткое время и обработан в среднем 5 раз. Если одно решение ресурсоёмко то как понять "Я не бегу за ресурсами. Не та это задача." ?
В чём задача?
Про девушку совсем непонял.
Про девушку
Возможно, ввел вас в заблуждение.
Вот та задача, которая поменяла
мое отношение к задаче о добычи регулярками.

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

А теперь представьте,
что для 100 сайтов надо написать регулярку:)
И что мне прогеру надо делать то,
что может и девушка КМ, при другом подходе.
Беглый результат:
1.изпользовался Python 2.6
2.Для регулярок использовались стандартные функции Python
3.Для XPath использовалась библиотека libxml2
4.Для XPath файл изначально прогнан через HtmlCleaner
5.Файл примерно 80Кб

собственно функции:

def testRE(num):
s = re.compile('href="(.*?)"')
for i in range(0, num):
with open('data.xml') as f:
c = f.read()
l = len(s.findall(c))

def testXPath(num):
for i in range(0, num):
doc = libxml2.parseFile('data.xml')
ctxt = doc.xpathNewContext()
l = len(ctxt.xpathEval('//*[@href]'))
ctxt.xpathFreeContext()
doc.freeDoc()

для num=10000
regex ~10s
XPath ~70s

Конечно если работать с одним и тем же документом, тоесть функция будет уже такая:

def testRE(num):
s = re.compile('href="(.*?)"')
with open('u:/yvision.kz/2.xml') as f:
c = f.read()
for i in range(0, num):
l = len(s.findall(c))

def testXPath(num):
doc = libxml2.parseFile('u:/yvision.kz/2.xml')
ctxt = doc.xpathNewContext()
for i in range(0, num):
l = len(ctxt.xpathEval('//*[@href]'))
ctxt.xpathFreeContext()
doc.freeDoc()

но и здесь для num=10000
regex ~7s
xpath ~26s

При этом мы неберём во внимание ресурсы памяти, хотя на первый взгляд я особой разници незаметил. Так же неберём во внимание HtmlCleaner.
P.S. alignment в коде скорее всего улетит, что для Python важно, но как оставить alignment я ненашёл
а xpath писать для 100 сайтов ненадо?
Он создается через GUI, так что ручками писать ничего не надо:)
теперь понял зачем девушка.
Samson
0
0
класс, еще одна статистика)
это то, что я у тебя просила, сейчас слямзю :)
Самсон, дай девушке то чего она просила!
Тем более мы теперь все об этом знаем :)
да твоих графиков вполне хватает, спасибо :)
пользуйтесь наздоровье!
qwinD
0
0
Интересная статистика, впервый раз так много+
засветился во флудерах :)
и как же ты до такого докатился, флудер !? Нелегка жизнь студента... :))
qwinD
0
0
дискуссии бывают очень жаркими тут :)
очень внушительно выглядит
рад что оказали честь! :)
это позитив или отклики вчерашнего впечатления?
вчерашнее впечатление сложилось на основе комментариев, а не поста)
это позитив, конечно)
пост серьезный)
спасибо!
должен заметить, вы очень проницательны.
язык мой-враг мой.
не за что)
не думаю, что у вас была возможность оценить мою проницательность)
поживем, как говорится - увидим)
да нет, вчерашний комментарий задел, заставил задуматься и где то я поймал себя именно на такой каварной мысле...
...или нет нет, я ни такой каварный :)))
ах значит, признаете неужто?
*удовлетворенно потирает ладошки*
=))))
грешен, признаю, скланяю голову :)))
вот так вот надо с вами)
еще бы сразу признавались=)))))
как ни мучительно признанье, поверьте, всё что ни делаем, для вас!
=)
верим, верим... наивные глупышкиии)
позвольте откланяться :)
Хехе, хоть во флудерастах появился. 8)
Идеи из Web Data Mining-а:

Идея №1
Определение эмоциональной окраски каждого комментария.
p.s. Делается через Баесову классификацию.
Это самая вкусная идея. Главное не накосячить с обучающей выборкой.

Идея №2
Кластеризация пользователей.
p.s. Возможно, k-means, но я не уверен

Идея №3
Проведение ассоциативного анализа.
p.s. Пользователи комментируют за "один заход" несколько записей.
"Один заход" возьмем за транзакцию. Дальше определяем правила вида:
Если комментировали Ашину, то с 80% вероятностью комментируют Нурайку.
да, всё очень интересно.
Идея #2 в данный момент в процессе, но там хотелось бы добавить немного интерактивности, а ни просто один результат.
Остальные к сожалению невозможны без прямого доступа к базе, и соответствующих логов.
спасибо за идеи!
Автору бы как-нибудь бы скооперироваться
с командой ЮВи и сделать нормальную статистику.
То что автор сейчас создал - "статичный след",
а ведь видеть в динамике данные гораздо вкуснее.
возможно Юви сами сделают что то интересное, будем считать эти 2 поста толчком.
Кстати, если Юви начнёт что то делать в этом направлении, особенно интерактивное, очень советую Redis. Можно было бы в реальном времено заливать в Redis массу событий и далее обрабатывать всё это так же в реальном времени.
Эххх, увликательная однако задача!
... а пока вернёмся к рутине :)
Если рассматривать yvision как OLTP-систему,
то статистику лучше делать
как OLAP-систему со всеми вытекающими - Data Warehouse:).
А если нам, обычным пользователям, позволят кубы крутить,
то это будет сверхзамечательно.
да, конечно, OLAP это так сказать классический подход, но вопервых хорошие дорогие, во вторых не работают с "живыми" данными (хотя немогу говорить за все). С Redis же можно делать очень много интересного вплане обработки потока "живых" данных в реальном времени.
А можно еще на коленке сделать реляционное хранилище данных в в звезды и пополнять его oltp-шкой. Но чтобы все не умерло, лучше к этому делу приделать очередь, например, тем же кроном.
Вот вам OLAP-овый принцип работы с "живыми" данными с погрешностью на временной лаг:).
да, ну и конечно эта информация для yvision ценна, так что не думаю что будут освещать :) я бы неделился такой инфой :))))
посмотрите Redis, вам понравится, я настаиваю :)))))
покурю на обеде на эту тему:)
...ну и соответствующий UI на Flex или Silverlight (кстати вы уже видели Silverlight PivotViewer?)
Угу, видел, но сейчас охладел к RIA.
а чем интересуетесь в данный момент?
алгоритмами и математикой
subaur
0
0
спасибо! я оказываетя второй по комментам:))
На графике рейтинга (не равного нулю) кол-во "-0,1" = 120, тогда как на графике рейтинга (по min значению) кол-во "-0,1" = 1201
Кроме того, в графике "по минимальному значению" фигурируют рейтинги ("1" и "10") в количестве 2490 и 783, тогда как в неравных нулю те же самые рейтинги показаны в гораздо скромных количествах...

как-то непонятно...
спс, видел, а в целом - good job! интересно почитать
"На графике рейтинга (не равного нулю)" там шкала неквантизированная, поэтому невидно много значений, то есть там есть ещё допустим пользователи с рейтингом допустим -0.12. Этот график только показывает как распределены рейтинги. "на графике рейтинга (по min значению)" здесь значение "-0.1" редставляет все отрицательные рейтинги, нужно исправить лейбл.
1. Кто кого плюсует?
2. Кто кого чаще плюсует на любую тему?
3. Какие темы чаще плюсуют?

есть ли клановость на юви?)

ps: можешь ли пробить у кого какой емаил?
спасибо за идеи.
Всегда пожалуйста, брат)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Прогноз эксперта: в Казахстане будут жить 5 миллионов китайцев

Прогноз эксперта: в Казахстане будут жить 5 миллионов китайцев

В ближайшие годы в Центральной Азии будут проживать восемь миллионов китайцев, считает заведующий отделением востоковедения национального исследовательского университета высшей школы экономики.
kurmanovainur
23 июня 2017 / 11:23
  • 39858
  • 20
Они сделали это! Kaspi Bank презентовал свое мобильное приложение

Они сделали это! Kaspi Bank презентовал свое мобильное приложение

Изучив ошибки предшественников и собрав воедино новейшие идеи онлайн-банкинга, Kaspi Bank наконец выпустил... свое мобильное приложение!
niyazov
20 июня 2017 / 15:05
  • 8605
  • 7
Кайрат Келимбетов об азербайджанской инвестиции: «Вернется и «тело», и проценты»!

Кайрат Келимбетов об азербайджанской инвестиции: «Вернется и «тело», и проценты»!

Мы записали уникальное интервью с Кайратом Келимбетовым. Предлагаю вам посмотреть первую часть, где мы постарались по возможности поставить все точки на «I» именно по Азербайджанскому вопросу.
Zhumanova
19 июня 2017 / 12:00
  • 6221
  • 7
Почему мы должны быть благодарны журналисту Джеймсу Палмеру за критику ЭКСПО

Почему мы должны быть благодарны журналисту Джеймсу Палмеру за критику ЭКСПО

Как одним критичным постом зарубежному журналисту Джеймсу Палмеру удалось вскрыть сразу несколько гнойников казахстанского общества.
anotherblogger
21 июня 2017 / 0:39
  • 6551
  • 63
В каких случаях у вас могут изъять удостоверение личности?

В каких случаях у вас могут изъять удостоверение личности?

Недавно один знакомый задал вопрос: «Я сейчас выступаю как свидетель по одному делу. У меня забрали удостоверение личности (УЛ) в РУВД и не вернули обратно. Так можно?». Я сразу задалась вопросом...
asselsabekova
21 июня 2017 / 10:17
  • 2933
  • 10
В Казахстане заблокировали сайт, раскритиковавший EXPO в «захолустной» Астане

В Казахстане заблокировали сайт, раскритиковавший EXPO в «захолустной» Астане

Все помнят Медузу и ЖЖ. Теперь в этот "особенный" список попал сайт Foreign policy. Предполагается, что причиной блокировки стала нелицеприятная заметка Джеймса Палмера об EXPO в Астане.
Seattle
19 июня 2017 / 15:40
Инструкции по сопроводительному письму и собеседованию, которые подойдут всем

Инструкции по сопроводительному письму и собеседованию, которые подойдут всем

Наткнулась на статью Ассоциации юристов Новой Зеландии, в которой они дают советы выпускникам юрфака по поиску работы. Статья меня поразила, поскольку там описано все до мелочей, а их советы подойдут абсолютно всем.
asselsabekova
20 июня 2017 / 16:10
  • 2591
  • 6
На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

Очень живописная и бюджетная поездка вдоль всего берега по Иссык-Кулю! Мы, две обаятельные девушки, поехали вдвоем, подготовленные к совершенно автономной жизни в палатке, и ни разу ничего не...
yelenasergiyenko
22 июня 2017 / 13:20
  • 2479
  • 22
Это «колхозное сооружение» вредит имиджу города. Я, как алматинка, против!

Это «колхозное сооружение» вредит имиджу города. Я, как алматинка, против!

Почему эту трубу не проложили под землей? Она обезображивает улицу, как дикий багровый шрам от раны, зашитой равнодушным, криворуким и ленивым хирургом, обезображивает лицо.
ValentinaVladimirska
23 июня 2017 / 12:10
  • 2179
  • 31