If this is a first time you visiting Scrolls, please register in Fight Club. If you already registered, please authorize on Fight Club start page with your login and password.
Наличие каких-то навыков, которых нет у других, позволяет делать занимательные вещи. Я, являясь частым посетителем форума, решил воспользоваться своим навыком программиста и сделать небольшой анализ того, что творится на форуме. При помощи скрипта я обработал содержимое последних сотни страниц форума и занёс в базу данных информацию о каждом топике, а именно:
1. Заголовок 2. Автор топика 3. Время и дата создания 4. Время и дата последнего сообщения 5. Количество комментариев в топике 6. Информация о том, перенесли ли топик и куда
Hide В некоторой базе данных имеется таблица fc_forum_topic, содержащая следующие поля: 1. topic_id (PK, идентификатор топика) 2. created_dt (unixtime создания топика) 3. author_id (id автора топика в игре) 4. comments (количество комментариев) 5. subject (заголовок топика — просто для наглядности) 6. redirect_name (т.к. у конференций нет однозначного числового id, используется строка с названием конференции) 7. last_answer_dt (unixtime времени последнего комментария)
Всего в базу данных попало 1 878 топиков за последние две недели (с 15 по 29 сентября). Итак, какую интересную информацию мы можем вытащить на основании указанных выше данных?
Те, кому интересны технические подробности анализа топиков, могут заглядывать под «Запрос к БД». Остальным это будет малоинтересно.
Сколько всего персонажей создаёт топики на форуме?
К слову, ваш покорный слуга находится на седьмом месте с 15 топиками. Помимо прочего, если вы заметили, первая пятёрка авторов создаёт почти 10% всех топиков на форуме.
Сколько персонажей на форуме создаёт топиков меньше, чем среднее значение на персонажа (три)?
Hide SELECT COUNT(*) FROM (SELECT COUNT(*) с, `author_id` FROM `fc_forum_topic` GROUP BY `author_id` ORDER BY с DESC) as tbl WHERE tbl.с <= 3
Ответ: 606. Иными словами, «завсегдатаями» форума можно назвать лишь 135 персонажей. Впрочем, даже это достаточно много.
Какие топики являются самыми долгоживущими на форуме? Можно было бы просто вычислять разницу между датой добавления последнего комментария и датой создания топика, но из-за некропостинга самыми «долгоживущими» топиками, в таком случае, станут топы типа ЫЫЫ, а это, прямо скажем, не очень хорошо. Поэтому мы будем считать только те топики, которые были созданы не позднее, чем две недели назад (unixtime 1347710040 – 15 сентября 15:54).
Hide SELECT `redirect_name`, COUNT(*) c FROM `fc_forum_topic` GROUP BY `redirect_name` ORDER BY c DESC
Итого не перенесли всего 1753 топика, то есть 93% всех топов остались на своих местах.
Чаще всего топы переносят в конференции «Помойка» (41 случай) и «Обо всём» (40 случаев). Остальные случаи составляют незначительную часть (скажем, в «Сделки» за указанное время было всего 10 случаев переноса).
Hide SELECT `author_id`, COUNT(*) c FROM `fc_forum_topic` WHERE `redirect_name` NOT LIKE '' GROUP BY `author_id` ORDER BY c DESC
Первое место заслуженно присуждается мне (10 топиков из 15 были перенесены). Второе за [pers]Dj Rocco[/pers](character not found) с шестью топиками, третье — за Mr Ganj [12] с пятью топами, а четвёртое, пятое и шестое разделяют Eskaton [], [pers]ОБОЖАШКА[/pers](character not found) и Линка [12] с тремя перенесёнными топиками.
Сколько топиков на форуме не набирают и одной страницы комментариев?
Hide SELECT `pages`, COUNT(`pages`) c FROM (SELECT *, FLOOR(`comments` / 20) pages FROM `fc_forum_topic`) tbl GROUP BY `pages` ORDER BY `pages` DESC
Очень закономерное распределение: очень много топиков, которые набирают не очень много страниц, и очень мало топиков, в которых страниц много. Скажем, топиков, которые набирают ровно одну страницу — 229, а ровно две — всего 85.
По каким часам БКшники проявляют наибольшую активность?
Hide SELECT `hour`, COUNT(`hour`) FROM (SELECT HOUR(FROM_UNIXTIME(`created_dt`)) AS `hour` FROM `fc_forum_topic`) tbl GROUP BY `hour` ORDER BY `hour` DESC
Собственно, это то, ради чего я всё это затеял. Было крайне интересно выяснить, когда игроки наиболее активны на форуме, а когда — наименее. Начну со среднесуточного распределения по часам.
Около часа дня (13:00) БКшники просыпаются, сажаются за свои компьютеры и начинают флудить. Своего пика их флудливость достигает в 18:00 и в 21:00 — можем считать этот период суток самым «активным» временем игроков. После полуночи игроки начинают расходиться и в два часа ночи остаются уже только самые упорные. В общем, ничего удивительного.
Hide SELECT `day`, COUNT(`day`) FROM (SELECT DAYOFWEEK(FROM_UNIXTIME(`created_dt`)) AS `day` FROM `fc_forum_topic`) tbl GROUP BY `day` ORDER BY `day` DESC
В этот момент я ненароком дропнул таблицу. Пришлось данные парсить заново.
В целом, распределение выглядит вот так:
Что, честно говоря, является малостью неожиданность для меня: лично я ожидал, что наибольшая активность будет в воскресенье, а не в пятницу.
Правда ли, что количество игроков на форуме постоянно уменьшается?
Hide SELECT `dt`, COUNT(`dt`) FROM (SELECT DATE(FROM_UNIXTIME(`created_dt`)) as `dt` FROM `fc_forum_topic` WHERE created_dt > 1347710040) tbl GROUP BY `dt` ORDER BY `dt`
Да нет, вроде, врут. :) Даже повышается.
А вообще такие вещи нужно смотреть в контексте недельного, а, при возможности, годичного цикла. Как мы выяснили ранее, количество игроков в различные дни недели сильно различается, как и, разумеется, в различные месяцы. Для того, чтобы наверняка ответить на этот вопрос, нужно брать выборку хотя бы за последний год, а это довольно большой срок для обработки моим домашним компьютером.
Кажется, это всё, чем я хотел поделиться с вами. Если у вас есть интересные предложения по анализу игры — предлагайте, постараюсь воплотить всё, что в моих силах. :)
А если вдруг кому-нибудь будут интересны технические особенности парсинга форума — пишите и я отвечу. Это тоже было достаточно интересно. :)
Решил дополнить:
Топики за чьим авторством набирают больше всего комментариев в сумме?
Довольно много. Не хочу позориться, но от правды не скроешься: где-то в пять часов начал писать скрипт, парсящий форум. В процессе столкнулся с некоторыми проблемами, окончательно которые я решил только около семи-восьми. Всё, что я делал дальше - придумывал различные запросы к БД и сразу же описывал их в будущем посте. Много времени ушло на "чистку" написанного текста; потерял я хватку, всё-таки. Плюс по ходу дела узнал несколько упрощающих жизнь функций SQL и познакомился работе с curl, так что зря этот опыт не прошёл.
Кстати, отвечая на твой вопрос: судя по всему, чаще всех ноют криты (81 совпадение), потом — маги (69), следом — топоры (44), затем — увороты (30) и, наконец, танки (20).
Но надо учитывать, что это поиск только по совпадениям в заголовках, т.е. учитываются как топики вида «усильте критов», так и вида «пофиксите магов». То есть, в целом, это означает лишь то, что о критах и магах на форуме пишут чаще всего. :)
А чтобы однозначно ответить на твой вопрос, нужно писать интеллектуальную систему, которая сможет различать негативные заголовки от положительных.
Интересно, конечно, и очень. Но смысл? По времени выборка маленькая, поэтому общая статистика по авторам, например, реальную картину вполовину отображает. Надо брать хотя бы последний месяц.
Но в целом - отлично. Чем-то напомнило старый топик "Введите #count" :))
Надо придумать, что именно писать в их отношении. :) Я тоже об этом думал, но потом прикинул по цифрам, что это бессмысленно. Можно было бы только посмотреть руками, на какие именно темы игроки редко отвечают.
Да ну, это детское баловство. Я вот, например, не разбираюсь в живописи и тоже считаю это "серьёзной работой", а художники, может быть, свои картины за 5-6 часов пишут, так что всё субъективно :)
Гость БК
07-09-13 @ 12:50
Re: Как я анализировал форум БК
баловство, таки-да, мы тоже так умеем )) но все же интересно было ознакомиться
Ответ: 1452 топика. Вдумайтесь в эту цифру! Это около 77% всех топиков на форуме.