На этой неделе я читал Moneyball: Искусство выигрывать в нечестной игре Майкла Льюиса. Мне это очень понравилось. На первый взгляд это о бейсболе, но когда вы читаете это, вы быстро понимаете, что это не о бейсболе. Я не могу обобщить все это здесь, кроме как сказать, что я рекомендую это.

Есть одна концепция, которая всплывает несколько раз. Идея о том, что статистика при правильном применении становится языком. Это описание резонирует со мной. Возьмите пример с бега. Можно сказать, что по статистике люди, которые регулярно бегают, имеют более низкую частоту сердечных сокращений в состоянии покоя. Это ничего не значит для меня. Это не повод бежать. С другой стороны, высказывание 1 час бега добавляет к вашей жизни 7 часов — это язык. (Я должен сказать, что на самом деле не читал эту статью, я понятия не имею, могут ли они подтвердить это утверждение).

Проблема при попытке найти язык в статистике заключается в том, что вам часто приходится ловить рыбу, чтобы найти что-то интересное. Вы не знаете, что ищете, пока не найдете это.

На этой неделе я решил провести небольшой эксперимент. В духе того, чтобы забросить наживку и надеяться на поклевку, моя гипотеза не является истинной гипотезой; это расплывчато и невозможно доказать. Вместо этого это своего рода предварительный эксперимент, чтобы увидеть, есть ли что-то под водой, что я могу преследовать.

Наблюдение

Новостные сайты используют разный тон, чтобы обращаться к разным демографическим группам. Глобальные/национальные/местные новости имеют разные финансовые ограничения.

Гипотеза

Статистический анализ текста на главных страницах новостей покажет тон, качество и целевую демографию публикации.

Эксперимент

15+ лет назад я провел аналогичный эксперимент. Это включало покупку газет, а затем несколько часов кропотливого сканирования, подсчитывая такие вещи, как длина слов. С мощью современных технологий можно автоматизировать многие вещи.

Я решил построить простой проект. Концепция: простой сервер/API с подключаемыми «целями» (веб-сайтами) и «процессорами» (генераторы статистических отчетов), подключенный к пользовательскому интерфейсу, который будет представлять данные обратно.

Проект в его текущем состоянии доступен с открытым исходным кодом в News Scraper на GitHub.

Мне нравится, как Babel позволяет транспилировать текущие и будущие функции языка. Впервые я добавил транспиляторы Babel для конвейеров и частичных приложений. Оба являются предложениями стадии 1 (на момент написания), и в данный момент на рассмотрении находится несколько вариантов конвейера, поэтому использовать их в серьезных проектах пока рановато. Я не могу нарадоваться тому, насколько читаемыми они могут сделать ряд действий.

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

Я создавал отчеты один за другим, чтобы быть уверенным, что рабочий прототип готов как можно скорее. Сначала я вычислил среднюю длину слова, а затем добавил наиболее часто встречающиеся слова. В тот момент мне захотелось попробовать что-то менее заурядное, и поэтому я отправился в место, где, как я знал, существует большой интерес к обработке естественного языка: в AWS.

У AWS есть сервис под названием AWS Comprehend, который включает в себя API, в который вы можете публиковать данные и получать взамен некоторый анализ. Есть несколько типов информации, которую вы можете запросить, включая определение языка (я уже знал, что мои были на английском), синтаксис и то, что привлекло мое внимание, настроение. Настроение претендует на способность определять, является ли предложение положительным, нейтральным, отрицательным или смешанным. У всех нас есть представление о различных новостных агентствах как об оптимистичных или обреченных и мрачных, поэтому это казалось легким делом, чтобы попробовать.

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

Честно говоря, мне не следовало создавать целый файл для этого дела «группа по 5000», это было бы нежизнеспособно. Я надеюсь, что вы можете простить меня за то, что я наслаждаюсь способностью разбивать вещи на мелкие части для этого небольшого побочного проекта.

Это было столько отчетов, сколько я успел написать. Я также хотел бы попробовать синтаксис AWS, но я также не хочу тратить слишком много времени на эту проблему, которая, я уверен, может быть бесконечной для того, кто готов продолжать тянуть каждую свободную нить, которую они находят. .

Результат

В конце у меня была страница, которая выглядела так:

Начнем со средней длины слова. При разработке этого я обнаружил самый большой недостаток моего эксперимента, заключающийся в том, что он делает только один снимок во времени. Порядок этого списка менялся несколько раз, пока я разрабатывал. Чаще всего это отражало что-то очень похожее, если не то же самое, на то, что вы видите ниже.

Я бы взял более длинную среднюю длину слова, чтобы обозначить более грамотную аудиторию. Если это так, то кажется удивительным, что местные новости нацелены на высокомерие по сравнению с общенациональными.

Дальше были самые частые слова.

Каждый список представляет собой 10 наиболее часто встречающихся слов с домашней страницы этого сайта (игнорируя слова, состоящие из трех букв или меньше). Я скорректировал размер в зависимости от количества упоминаний. Есть предсказуемые. Я хочу поздравить Heat с тем, что она бросила вызов популярной журналистике, проигнорировав коронавирус и назвав слово «волосы» самым частым словом. Некоторые из них страдают от реализации некоторых общих веб-паттернов. Наиболее часто встречающиеся слова «о нас» и «контакт» указывают на несколько наборов навигационных ссылок на странице.

Эти результаты рисуют смутную картину содержания. Возможно, было бы лучше отфильтровать некоторые общие слова. «Викторина», которая чаще всего встречается на Buzzfeed, звучит правдоподобно. Вы можете догадаться, что Heat — это глянцевый журнал сплетен, основываясь только на этих ключевых словах. Однако национальные новости как бы сливаются воедино. Я не уверен, что это результат доминирования одной темы в мировых новостях.

И, наконец, «настроение» оценивается.

Самым большим сюрпризом для меня здесь является то, насколько они нейтральны. Это может ввести в заблуждение, так как главные страницы большинства новостных сайтов содержат только короткие заголовки, которые AWS Comprehend API может не обработать. Я также совершенно уверен, что он не сможет обнаружить что-то культурно негативное, представленное с использованием позитивной формулировки. Например, гипотетический заголовок «Здорово, что произошло катастрофическое наводнение» дает 77% положительных результатов.

В какой-то степени это отражает то, как я воспринимаю эти сайты, когда читаю их. Как правило, я предпочитаю непредвзятые новости, поэтому мне приятно видеть, что моя любимая газета — в редких случаях, когда я ее читаю, это Financial Times — является одной из самых нейтральных, а моя наименее любимая, Daily Mail, — на некотором расстоянии самый самоуверенный. Я удивлен, увидев, что Daily Mail также является наиболее позитивным, хотя мне интересно, может ли это быть следствием упомянутого выше момента, что AWS Comprehend не улавливает культурные позитивные/негативные аспекты.

Снова местные ярмарки новостей хорошо. Hants Direct — самый нейтральный из всех сайтов, а Hampshire Chronicle — один из самых нейтральных.

Вывод

Я бы точно не сказал, что доказал свою гипотезу. Есть намеки на то, что статистический анализ может дать точное представление о тональности новостного сайта. Однако мне не удалось создать «язык», на который я надеялся. Нет четких границ, чтобы сказать «местные новости x», «интернет-новости x». , «x — это то, что делает сайт y таким успешным». Продолжая аналогию с рыбалкой, скажу, что закинул наживку, в воде небольшая дрожь, но пока не уверен, что это поклевка.

Если сделать один простой вывод, то, казалось бы, вам следует читать Hants Direct. Он может похвастаться самой длинной средней длиной слова среди всех печатных новостей и наиболее сбалансированным настроением.

А если серьезно, то почему-то кажется, что местные новости нацелены на более грамотную аудиторию. Может случиться так, что в отсутствие конкуренции со стороны национальных/глобальных новостей их авторы в большей степени способны сосредоточиться на качестве, а не на цифрах продаж.

Самый большой недостаток этого эксперимента в том, что я успел сделать только моментальный снимок. Было бы гораздо лучше усреднить эти результаты в течение месяца или двух, а также отобразить их во времени, чтобы увидеть, есть ли какие-либо тенденции.

Я также хотел бы включить страницы историй, а не только домашнюю страницу, так как это было бы более представительным для бренда. Проблема в том, что, выбирая одну историю, я оцениваю только одного журналиста, поэтому, если быть честным, мне пришлось бы выбрать несколько историй. Как только у вас будет x историй × y новостных сайтов, у вас будет огромное количество text, и запуск через сторонние сервисы, такие как AWS Comprehend, становится чрезмерно дорогим.

Как видите, мой эксперимент не дал «языка» в том виде, в каком я надеялся. Хотя мне очень понравился процесс. Быстрое создание прототипа небольшого приложения всегда доставляет большое удовольствие. Было интересно получить предварительный просмотр нескольких будущих функций JS.

Также было здорово снова шаг за шагом применить научный подход и посмотреть, насколько он применим к стольким сценариям. В школе легко спросить: «Мы когда-нибудь будем это использовать?». Часто мы его не используем, и это наша ошибка, потому что приложив немного воображения, мы можем применить его во многих местах с реальной ценностью.

Научный метод находится в тренде в UX, и из этого я понял, что мне нужно применять его к команде UI, с которой я работаю.

Всего наилучшего,

Ник