Является ли HackerNews хорошим показателем успеха стартапа?

Анализ настроений на HackerNews

Введение

Этот проект был выполнен Кайлом Сунгом, Мариной Томас, Шиянгом Ченгом и Сэмюэлем Черинетом в рамках курса «Масштабируемое машинное обучение» 2019 года в UT Austin.

Hacker News — это сайт социальных новостей, посвященный компьютерным наукам и предпринимательству. Он управляется инвестиционным фондом Пола Грэма и инкубатором стартапов Y Combinator. В целом контент, который может быть представлен, определяется как все, что удовлетворяет интеллектуальное любопытство. Википедия

Наше внимание сосредоточено на публикации в разделе «показ» сайта, где пользователи могут продемонстрировать очень раннюю версию своей работы сообществу, чтобы получить отзывы и реалистичную картину удобства использования и/или осуществимости. Пользователи получают простой пользовательский интерфейс (как и другие сайты социальных сетей), чтобы голосовать за/против или начинать обсуждение, добавляя комментарии и взаимодействуя с автором или другими членами сообщества.

Известные витрины проектов до того, как они взлетели,

DropBox: https://news.ycombinator.com/item?id=8863

Гитлаб: https://news.ycombinator.com/item?id=4428278

Impress.ai: https://news.ycombinator.com/item?id=13427728

Наша цель

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

Набор данных

Данные Hacker News, включая истории и комментарии, доступны в облаке Google BigQuery. Таблица под названием «полная» содержит все истории и комментарии.

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

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

Проверка данных на наличие комментариев для каждой истории показала, что большая часть историй не содержала комментариев. Многие истории имели менее 5 комментариев, и очень немногие истории имели более 10 комментариев. Ниже на диаграмме показана разбивка.

Комментарии комментариев

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

Топ-30 историй с наибольшим количеством комментариев

Ожидается, что на сайтах социальных сетей будут обсуждения, флеймы и цепочки обратной связи, выходящие за рамки истинного содержания исходной заявки. И, как видно из нашего анализа выше, большинство историй сопровождаются комментариями. Только 2194 (~ 20% проектов) имеют комментарии только верхнего уровня, и почти 40% проектов имеют по крайней мере 75% комментариев высшего уровня.

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

Распространение комментариев сообщества

Нам также было интересно узнать, исходит ли большинство комментариев от одних и тех же людей. Изучив 200 лучших комментаторов, мы обнаружили, что они действительно часто комментируют, но не похоже, что на платформе доминирует небольшое количество пользователей. Позже мы попытаемся увидеть, объективны ли эти пользователи или нет (то есть склонны ли они всегда быть отрицательными или положительными).

В рамках истории на Hacker News пользователи публикуют ссылку, по которой пользователи сообщества могут ознакомиться с работой. Подавляющее большинство проектов были размещены на github.

Предварительная обработка данных

Успех запуска вычислений

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

Было использовано несколько подходов.

  1. Если URL-адрес, связанный с проектом, не является ссылкой Github, alexa.com использовался для получения общедоступной информации о веб-сайте. Рейтинг веб-сайта, возвращаемый Alexa API, использовался для определения того, активен сайт или нет. Если ранг не равен нулю, проект считается успешным.
  2. Когда подробности будут размещены на github, проверьте активность проектов github. Если для проекта обнаружена активность через 6 месяцев после его публикации, мы считаем его активным.

Мы используем разные методы для определения успешности проекта. Метод github достаточно хорош для запуска проекта в год публикации истории. Alexa.com предоставляет информацию о проекте до сих пор. Последний метод намного сильнее, чем первый метод. Тем не менее, мы не думаем, что нам нужна активность до сих пор, чтобы указать на успешность стартап-проектов. Если проект интересный, первого года вполне достаточно. По другой причине проекты, размещенные не на github, составляют небольшую часть всего набора данных, и мы думаем, что гораздо более сильный метод не сильно повлияет на модель.

Мы также обсудили еще одну идею тегирования истории. Для проектов, размещенных на Github, количество действий в следующем году после публикации истории. Чем больше мероприятий за это время, тем известнее проект. Для остальных проектов мы могли бы использовать рейтинг в Alexa.com как показатель известности. Однако мы не нашли хорошего способа нормализовать эти два показателя. Мы не стали развивать эту идею.

Анализ настроений

Что такое анализ настроений?

Анализ тональности – это автоматизированный процесс анализа текстовых данных и классификации мнений как отрицательных, положительных или нейтральных.

Обычно, помимо идентификации мнения, эти системы извлекают атрибуты выражения

  • Полярность: если говорящий выражает положительное или отрицательное мнение,
  • Тема: то, о чем идет речь,
  • Держатель мнения: физическое или юридическое лицо, выражающее мнение.

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

Как работают алгоритмы анализа настроений?

В области НЛП существует множество подходов, используемых для анализа настроений. Самым простым методом является подход, основанный на правилах.

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

Другой менее строгий подход использует машинное обучение. Анализ настроений моделируется как задача машинного обучения классификации. И, следовательно, модель получает текстовое содержимое и используется для создания категории. На изображении ниже с https://monkeylearn.com/sentiment-analysis/ хорошо показан этот подход.

В основном библиотеки добиваются большего успеха, комбинируя эти методы (гибрид).

При выборе инструмента для анализа настроений в комментариях Hackernews мы уделяли основное внимание простоте использования и упрощению результатов для дальнейшего анализа. Поэтому мы решили использовать VADER и Textblob для сравнения инструментов.

ВЕЙДЕР

VADER (Valence Aware словарьsEEntiment Reasoner) : инструмент анализа настроений на основе лексики и правил, специально настроенный на настроения, выраженные в социальных сетях

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

VADER возвращает четыре значения для каждого анализируемого предложения.

  • Положительное, Отрицательное и Нейтральное представляют часть предложения, которая является положительной, отрицательной и нейтральной соответственно. Поэтому, естественно, все они должны в сумме давать 1. Ниже приведен пример этих оценок.
  • Составное значение вычисляется с использованием оценок валентности (рейтингов лексики в VADER) каждого слова, корректируется в соответствии с правилами, а затем нормализуется в диапазоне от -1 (крайне отрицательное) до +1 (очень положительное).

Внутренне VADER проводит анализ на основе некоторых из этих ключевых моментов в тексте:

  • Пунктуация
  • Заглавные буквы
  • Модификатор степени
  • Союзы

Настроить код и получить анализ настроений довольно просто с помощью VADER.

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

TextBlob

TextBlob — это простая библиотека Python для выполнения задач НЛП. Он предоставляет простой API для выполнения таких задач, как маркировка частей речи, извлечение именной фразы, классификация и анализ настроений, среди прочего. Мы включили эту библиотеку в наш анализ, чтобы добавить больше функций в набор данных и провести некоторое сравнение с другим инструментом, который мы используем, и посмотреть, будут ли результаты ближе.

Для анализа настроений TextBlob возвращает два значения.

  • Полярность: в диапазоне от -1 до 1 это значение указывает, является ли текст положительным (› 0) или отрицательным (‹0).
  • Субъективность: в диапазоне от 0 до 1 это значение указывает, содержит ли текст информацию, которая является фактической (ближе к 0) или более достоверной (ближе к 1).

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

Показанный ниже проект impress.ai имеет негативные настроения, низкий рейтинг хакерских новостей и, следовательно, был предсказан нашей моделью как провал. Тем не менее, этот проект все еще работает, и, по данным CrunchBase, он получил финансирование в размере 1,4 миллиона долларов.

Анализ данных

Общее замечание

Используя необработанные результаты обоих инструментов, мы смогли сделать некоторые наблюдения:

В основном комментарии не являются негативными: как видно из приведенной ниже диаграммы, в обоих случаях только менее 15% комментариев являются негативными.

Положительные комментарии, как правило, являются предметом, тогда как нейтральные комментарии, как правило, объективны, как показано в таблице ниже.

Пользователи по своей природе не склонны оставлять комментарии, которые всегда являются негативными или позитивными, как видно из диаграммы ниже, средняя полярность комментариев для каждого пользователя немного положительна. (в целом нейтрально). Это говорит нам о том, что пользователи, как правило, не слишком оптимистичны или слишком критичны.

VADER против Textblob

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

Разработка функций

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

  1. Усреднение оценки

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

2. Субъективность

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

3. Доля комментариев верхнего уровня

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

4. Количество слов

Наша интуиция на этот счет заключается в том, что небольшое количество слов в комментарии означает отсутствие искренности или неосведомленность о предмете. Таким образом, добавление этого в качестве функции добавит некоторое измерение к рассматриваемой проблеме. Мы использовали функцию Textblob для извлечения количества слов и добавили его в наш набор данных. Вот некоторые из вдохновляющих комментариев в наборе данных, которые привели нас к решению добавить подсчет слов в качестве функции:

  • это так отстало. пожалуйста, отъебись.
  • no ty!
  • :-)
  • Хороший!!

Результат

Наш анализ был направлен на то, чтобы ответить на следующий вопрос: для данного проекта, представленного на Hacker News, могут ли мнения комментаторов по поводу проекта предсказать успех проекта.

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

Первой моделью, которую мы попробовали, была модель классификатора случайного леса. Отчет о классификации показал точность 62%:

Мы видим, что оценки настроений так же важны, как и оценки Hacker New.

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

И мы также попробовали двоичную классификацию XGBoost.

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

У impress.ai были комментарии с негативным настроением, низкий рейтинг новостей о хакерах, и, следовательно, наша модель предсказывала провал. Тем не менее, этот проект все еще работает, и, по данным CrunchBase, он получил финансирование в размере 1,4 миллиона долларов. Так что это было хорошим завершением нашего любопытства о взаимосвязи между хакерскими новостями и успехом стартапа.

Вывод

в целом готовые инструменты VADER и Textblob были хорошим анализом тональности. И мы должны дать VADER более высокую оценку, чем Textblob, когда дело доходит до анализа настроений в социальных сетях. С обоими было очень легко работать, а кривая обучения минимальна.

Будущая работа

  • Более успешный алгоритм определения проекта, учитывающий другие источники данных, вероятно, лучше пометит набор данных для большей точности в будущем.
  • Расширение модели до более свежих историй также может помочь с выборкой большего набора данных.

Ссылки

https://planspace.org/20150607-textblob_sentiment/

https://github.com/cjhutto/vaderSentiment

https://textblob.readthedocs.io/en/dev/

https://news.ycombinator.com/

https://monkeylearn.com/sentiment-analysis/

https://medium.com/analytics-vidhya/simplifying-social-media-sentiment-analysis-using-vader-in-python-f9e6ec6fc52f

https://console.cloud.google.com/marketplace/details/y-combinator/hacker-news