Numb3rs, OpenData и HowItWorks
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
Бывает авторы интересуются статистикой просмотра своих докладов, любопытные — полной статистикой, чтобы поиграться в датасайнс, ну а те, кому надо поиграть в NLP/Text Analysis, или быстро поднять MVP-стартапа на тему «монетизируем контент конференций»
— интересуются, как бы взять все, без гемора с «краулингом-скрейпингом-парсингом».
Или есть даже желание что-то запатчить и законтрибьютить?
Хороший повод кратко рассказать, как все работает и откуда все взять.
== Как все устроено ==
Технически — сайт состоит из self-hosted CMS, где лежат описания докладов и спикеров, [[Blog:HowItWorks/Слайды_на_витрине._Почему_россыпью%3F_PDF_forever!|слайды]], [[Blog:HowItWorks/Vimeo_или_Youtube_—_как_мы_публикуем_видео|видео, залитого на Vimeo и Youtube]], сервиса комментариев на Disqus<ref>Ну, 8 лет назад это был ведущий сервис комментариев, и была надежда, что «самый стандартный сервис комментариев» [[Blog:HowItWorks/Less_is_More._Конференция_—_это_обратная_связь._Будем_ждать_комментариев.|побудит к фидбеку]].</ref>, ну и всякой мелочи. {{SideBar40|Тут открытая задача, научится делать краткую выжимку из аннотации под заданное число символов — для публикации в твиттер и прочие соцсети. Сейчас это просто вырезание середины, что конечно, убого.}} В самой странице текст — mediawiki-разметка, на которой последовательно… * Cсылка на категорию-автора (или авторов), через шаблон <nowiki>{{Speaker| }}</nowiki> * блок тега <nowiki><blockquote></blockquote></nowiki> — аннотация. * Встраивание видео с vimeo и ссылка на видео с ютуба (с шаблонами там думаю, можно понять). * Ссылка на слайды если есть. ** Иногда бывают обьемные тезисы или стенограммы, но в целом это редкость. * Ссылка на пикрелейтед, с указанием, чтобы эту картинку выбирали соцсети для превью, * Ссылки-связи с тематическими категории. {{SideBar40|Тут открытая задача — предложить категории для страницы — максимально узкие и походящие, может несколько. * Основной вариант — из существующих категорий. * Возможно дополнительно показать близкие статьи — чтобы уже вручную создать новые категории. * Тут явно ML c элементами NTLK ** Т.е. надо и парсить текст, убирать стоп-слова. ** И как-то отклассифицировать, учесть имеющиеся категории ** Большие категории (высокоуровневые, в которых вкладывается много более узких), должны котироваться слабее. … Пока делал заходы студентами, получилось не очень. }} В самом конце статьи или категории, идет статистика, в сыром виде выглядящая как-то так: <pre><nowiki> {{stats|disqus_comments=12|median_plays=312|refresh_time=2020-07-07T18:45:21.060970|vimeo_comments=1|vimeo_plays=392|youtube_comments=10|youtube_plays=232}} </nowiki></pre> где наверное, все понятно, кроме «median_plays» — это свойство возникает у категорий, как медиана просмотра докладов в этой категории (остальные параметры для категории — это сумма соотвествующих параметров по статьям в этой категории). Важное — эти свойства сами не возникают, и realtime не обновляются — приходится отдельным софтом бегать за ними в ютуб-вимео-disqus<ref>Может когда-нибудь и в соцсети, за количеством комментариев, но пока в соцсетях с комментариями у меня тухло</ref>, со всякими хитростями (глюки и ограничения API и т.п.). Итак, если вы захотите помочь мне с открытыми задачами, или что-то поковырять свое, конечно, можно слить всю базу через [[Special:Export]]<ref>А если нужно слить все видео → [[Blog:HowItWorks/Как_скачать_видео%3F_Все,_целиком,_или_по_отдельности|вам сюда]]</ref>, потом распаковывать, парсить XML, парсить разметку… наверно это скучно. Поэтому я предлагаю вам готовый, python-pickle dataset, с самым важным — тексты, статистика-просмотров комментариев, вложенность категорий. Теперь о статистике {{stats|disqus_comments=1|median_plays=312|refresh_time=2020-07-07T18:45:21.060970|vimeo_comments=0|vimeo_plays=392|youtube_comments=0|youtube_plays=232}} === Датасет === * http://video.ispras.ru/channels/misc/datasets/0x1tv-dataset.pickle0x1 * Python pickle ** Два списка — Словарь: ;ключ: статьи по заголовкам. ;значение: словарь с текстом-заголовком и категорииеще одним словарем 'stats', со всей вытащенной статистикой. <code-python> self.dataset = { 'articles': [], 'categories': [], } </code-python> * Каждая статья и категория (один фиг) состоит из ** заголовка ** текста — там весь текст статьи, но можно легко вытащить аннотацию — она в <pre><nowiki><blockquote>вот тут аннотация обычно на 2-3-4 абзаца</blockquote></nowiki></pre> ** списка категогий, к которым относится эта статья или категория. <code-python> article = { 'title': page.page_title, 'text': page.text(), 'categories': [] } </code-python> |
Версия 17:03, 7 июля 2020
Бывает авторы интересуются статистикой просмотра своих докладов, любопытные — полной статистикой, чтобы поиграться в датасайнс, ну а те, кому надо поиграть в NLP/Text Analysis, или быстро поднять MVP-стартапа на тему «монетизируем контент конференций» — интересуются, как бы взять все, без гемора с «краулингом-скрейпингом-парсингом».
Или есть даже желание что-то запатчить и законтрибьютить?
Хороший повод кратко рассказать, как все работает и откуда все взять.
Как все устроено
Технически — сайт состоит из self-hosted CMS, где лежат описания докладов и спикеров, слайды, видео, залитого на Vimeo и Youtube, сервиса комментариев на Disqus[1], ну и всякой мелочи.
CMS для сайта основана на MediaWiki c дополнениями из проекта http://wiki.4intra.net, вот Special:Version — детально набор расширений с версиями.
Буду очень рад верстальщику с опытом верстки под мобильные устройства, много лет сам не могу осилить. Ну или дизайнеру. Или даже дизайнеру логотипов/faviconoв, студию лебедева не предлагать.
Вот код дизайна «скина», который использует сервис генерации уникальных бекграундов.
Сверхкраткий ликбез про концепции MediaWiki (википедия и почти все викисайты в интернете).
Основной атом информации там — страница. Page. Уникально идентифицируемая своим заголовком (он же по сути URL страницы). Это очень радикальный ход — уровнять имена, названия, заголовки, идентификаторы и ссылки (то, что всегда разделялось в классических технологиях документирования), и наверное, очень удачный — сильно упрощает гиперссылки, которые становятся двухсторонние, как должно было быть в правильном интернете[2], а проблемы временной нецелостности при переименованиях решают перенаправлениями и догоняющими исправлениями.
Технически, у страницы есть неймспейсы — это то, что в заголовке идет до двоеточия, что выделяет, например, страницы-файлы (картинки-документы и т.п.) из неймспейса «File:»/«Файл:» и категории — неймспейс «Category:»/«Категория:», и страницы-шаблоны (технически ничего специального в них нет, в MediaWiki можно включать внутрь статьи, с параметризацией, любую другую статью, но просто для удобства, совсем уж технические шаблоны-макросы, решено отсадить в отдельный неймспейс).
В основном, неймспейсы определяют контекст для операции «ссылка».
Если идет ссылка на обычную статью — то получается обычная гиперссылка. Если ссылаются на статью-файл — то обычно, будет вставка картинки или другое превью. Если ссылаться на статью-категорию — то возникает принадлежность исходной статьи категории. Сама категория также может принадлежать другим категориям, и возникает сетевая-графовая иерархия вложенности → ну вот наверно иллюстрирующая картинка, хотя она показывает, что все несколько запущено и нужно много работы, чтобы поддерживать все это в сбалансированном состоянии.
Да, в отличие от убогих фолксономически классификаций через плоские теги[3], тут достаточно мощный механизм для классификации-категоризации-онтологизации любой предметной области, что и демонстрирует википедия. Хотя конечно, над этим требуется работать.
Если кратко — то доклады у нас — это обычные статьи, слайды и пикрелейтед к ним лежат в неймспейсе «файл», докладчики у нас — статьи-категории, лежащие в категории
Category:Докладчики (тем, кому уже не напишешь — в Category:RIP), конференции у нас — категории в категории Категория:Конференции (они могут группироваться в Категория:Линейки_конференций), ну а практически все остальные категории
используются для тематической классификации.
Тут открытая задача, научится делать краткую выжимку из аннотации под заданное число символов — для публикации в твиттер и прочие соцсети. Сейчас это просто вырезание середины, что конечно, убого.
В самой странице текст — mediawiki-разметка, на которой последовательно…
- Cсылка на категорию-автора (или авторов), через шаблон {{Speaker| }}
- блок тега <blockquote></blockquote> — аннотация.
- Встраивание видео с vimeo и ссылка на видео с ютуба (с шаблонами там думаю, можно понять).
- Ссылка на слайды если есть.
- Иногда бывают обьемные тезисы или стенограммы, но в целом это редкость.
- Ссылка на пикрелейтед, с указанием, чтобы эту картинку выбирали соцсети для превью,
- Ссылки-связи с тематическими категории.
Тут открытая задача — предложить категории для страницы — максимально узкие и походящие, может несколько.
- Основной вариант — из существующих категорий.
- Возможно дополнительно показать близкие статьи — чтобы уже вручную создать новые категории.
- Тут явно ML c элементами NTLK
- Т.е. надо и парсить текст, убирать стоп-слова.
- И как-то отклассифицировать, учесть имеющиеся категории
- Большие категории (высокоуровневые, в которых вкладывается много более узких), должны котироваться слабее.
… Пока делал заходы студентами, получилось не очень.
В самом конце статьи или категории, идет статистика, в сыром виде выглядящая как-то так:
{{stats|disqus_comments=12|median_plays=312|refresh_time=2020-07-07T18:45:21.060970|vimeo_comments=1|vimeo_plays=392|youtube_comments=10|youtube_plays=232}}
где наверное, все понятно, кроме «median_plays» — это свойство возникает у категорий, как медиана просмотра докладов в этой категории (остальные параметры для категории — это сумма соотвествующих параметров по статьям в этой категории).
Важное — эти свойства сами не возникают, и realtime не обновляются — приходится отдельным софтом бегать за ними в ютуб-вимео-disqus[4], со всякими хитростями (глюки и ограничения API и т.п.).
Итак, если вы захотите помочь мне с открытыми задачами, или что-то поковырять свое, конечно,
можно слить всю базу через Special:Export[5], потом распаковывать, парсить XML, парсить разметку… наверно это скучно.
Поэтому я предлагаю вам готовый, python-pickle dataset, с самым важным — тексты, статистика-просмотров комментариев, вложенность категорий.
Датасет
- http://video.ispras.ru/channels/misc/datasets/0x1
- Python pickle
- Словарь:
- ключ
- статьи по заголовкам.
- значение
- словарь с текстом-заголовком и еще одним словарем 'stats', со всей вытащенной статистикой.
self.dataset = { 'articles': [], 'categories': [], }
- ↑ Ну, 8 лет назад это был ведущий сервис комментариев, и была надежда, что «самый стандартный сервис комментариев» побудит к фидбеку.
- ↑ концепции проекта Zanadu
- ↑ Самые популярные теги на фотохостингах — «я» и «фото», а на видеохостингах — «я» и «видео»
- ↑ Может когда-нибудь и в соцсети, за количеством комментариев, но пока в соцсетях с комментариями у меня тухло
- ↑ А если нужно слить все видео → вам сюда