Исследовательский анализ данных для текстовых данных
В этой серии статей я хотел бы показать, как мы можем использовать алгоритм глубокого обучения для обнаружения фальшивых новостей, и сравнить архитектуру нейронных сетей.
Это первая часть этой серии, в которой я хотел бы провести исследовательский анализ данных для текста.
Тема фейковых новостей так же стара, как и сама новостная индустрия - дезинформация, мистификации, пропаганда и сатира существуют уже давно. Таким образом, фейковые новости - это информация, которую невозможно проверить без источников и, возможно, не соответствует действительности.
В 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 - ссылка.