Исследовательский анализ данных для текстовых данных

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

Это первая часть этой серии, в которой я хотел бы провести исследовательский анализ данных для текста.

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

В Wiki также говорится: Фейковые новости пишутся и публикуются, как правило, с намерением ввести в заблуждение, чтобы нанести ущерб агентству, организации или человеку и / или получить финансовую или политическую выгоду, часто с использованием« сенсационных , нечестных или откровенно сфабрикованных заголовков. Для увеличения читательской аудитории. Точно так же истории и заголовки кликбейта приносят доход от рекламы ».

Фальшивые новости подрывают серьезное освещение в СМИ и затрудняют журналистам освещение важных новостей. Анализ, проведенный BuzzFeed, показал, что 20 самых популярных фейковых новостей о президентских выборах в США в 2016 году получили больше внимания в Facebook, чем 20 самых популярных сюжетов о выборах от 19 крупных СМИ. Анонимно размещенные сайты фейковых новостей, на которых отсутствуют известные издатели, также подвергались критике, поскольку они затрудняют преследование источников фейковых новостей за клевету.

В 21 веке влияние фейковых новостей стало повсеместным! Со временем Интернет вырос до невообразимых высот, и тонны информации поступают постоянно, что позволяет Интернету быть хостом для большого количества нежелательной, неправдивой и вводящей в заблуждение информации, которую может сделать кто угодно. Фейковые новости превратились из рассылки по электронной почте в атакующие социальные сети. Помимо обозначения вымышленных историй, предназначенных для того, чтобы обмануть читателей при переходе по ссылкам, максимизации трафика и прибыли, этот термин также относился к сатирическим новостям, цель которых не вводить в заблуждение, а скорее информировать зрителей и делиться юмористическими комментариями о реальных новостях и происходящем. основные СМИ. Так что проблема большая. Давайте попробуем обнаруживать фейковые новости с помощью подхода глубокого обучения.

В качестве набора данных о поездах я хотел бы взять открытый набор данных конкурса Kaggle. Давайте проведем для него краткий исследовательский анализ данных.

У нас есть следующие столбцы:

  • id: уникальный идентификатор новостной статьи
  • title: заголовок новостной статьи
  • автор: автор новостной статьи
  • текст: текст статьи; может быть неполным
  • label: метка, которая отмечает статью как потенциально ненадежную
    1: ненадежную
    0: надежную

В моем EDA я хотел бы проанализировать столбцы заголовок, текст и ярлык .

На первом этапе я хотел бы знать свое распределение по классам.

Как мы видим, классы в наборе данных сбалансированы.

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

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

Тот же анализ, что я сделал для нового текста.

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

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

Тот же анализ, что я сделал для нового текста.

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

Частота слов без стоп-слов

Следующий шаг - анализ без слов. Стоп-слова - это слова, которые чаще всего используются в любом языке, такие как «the», «a», «an» и т. Д. Поскольку эти слова, вероятно, имеют небольшую длину, эти слова могли привести к смещению приведенного выше графика влево. Чтобы получить корпус, содержащий стоп-слова, вы можете использовать библиотеку nltk. Nltk содержит стоп-слова из многих языков. Так как мы имеем дело только с новостями на английском языке, я отфильтрую английские стоп-слова из корпуса.

Тот же анализ, что я сделал для нового текста.

Заголовок и текст фейковых и не фейковых новостей различаются, также как и порядок слов.

Анализ Ngram

Следующим шагом является анализ Ngram. Нграммы - это просто непрерывные последовательности n слов. Например, «берег реки», «Три мушкетера» и т. Д. Если количество слов два, это называется биграммой. Для 3 слов это называется триграммой и так далее.

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

Тот же анализ, что я сделал для нового текста.

Здесь мы видим, что текст и заголовок в фейковых новостях Ngrams отличаются, но фейковые новости не совпадают.

LDA

Давайте сделаем тематическое моделирование, чтобы сравнивать фейковые и не фейковые новости. Тематическое моделирование - это процесс использования методов обучения без учителя для извлечения основных тем из набора документов.

Скрытое распределение Дирихле (LDA) - это простая в использовании и эффективная модель для тематического моделирования. Каждый документ представлен распределением тем, а каждая тема представлена ​​распределением слов.

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

Первый анализ - это LDA для поддельных, а не поддельных заголовков новостей. Давайте посмотрим на темы:

Мы также можем проанализировать это с помощью библиотеки pyLDAvis в python:

Давайте возьмем фальшивые заголовки новостей в здравом уме.

Как мы видим, тематическое моделирование фейковых и не фейковых заголовков новостей различается.

Проведем такой же анализ для нового текста.

Вот текстовый EDA для фейковых новостей:

И такой же анализ для не фейковых новостей:

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

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

Вот анализ облака слов нового заголовка:

И для сравнения анализа облака слов нового текста:

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

Выводы

Результаты анализа текстовых поисковых данных - это разные методы сравнения фейковых и не фейковых новостей. При таком подходе мы можем создавать собственные правила для обнаружения фейков. Этот путь довольно сложен и требует рутинной работы. Кроме того, в этом примере мы видим, что набор данных, полный новостей о выборах в Соединенных Штатах Америки, и с этими данными будет трудно обнаружить некоторые общие правила и стиль в фейковых новостях.

Давайте дадим возможность подходу глубокого обучения сделать это автоматически. Увидимся в следующей части этих рассказов.

Вторую часть вы можете прочитать - Детектор фейковых новостей с подходом к глубокому обучению (Часть II) Моделирование »

Вторую часть вы можете прочитать - Развертывание детектора фейковых новостей с подходом глубокого обучения (Часть III) »

Весь код вы можете найти в репозитории Git - ссылка.