Универсальные новости

Статья Автор: Тирт Патель, Мирал Раваль, Утсав Маниар

Этот блог создается и поддерживается студентами программы профессионального магистра в Школе компьютерных наук Университета Саймона Фрейзера в рамках их кредита на курс. Чтобы узнать больше об этой уникальной программе, посетите {sfu.ca/computing/pmp}.

One-Stop News - это все на одном новостном портале. Этот портал предоставляет пользователю сводку похожих статей, взятых с нескольких новостных сайтов, с указанием настроений, связанных тегов и категорий. Он также визуализирует актуальные темы.

Мотивация и предыстория:

Кто не читает новости? История чтения газет началась в 17 веке. Но сегодня, в 21 веке, мы живем в мире Интернета, где люди более склонны к новостным веб-сайтам. Но все же, если люди хотят читать на определенную тему, они должны просматривать разные новостные сайты, чтобы найти похожие статьи. А вот и наш портал на помощь. С помощью единого источника новостей пользователю необходимо выбрать определенную категорию, и в результате он получит список похожих новостных статей с их резюме, тегами и мнениями с разных новостных сайтов. На данный момент мы взяли два новостных сайта (New York Times и Guardian). Следовательно, пользователь сэкономит время, просто просматривая резюме и теги статей выбранной категории, и, если им понравилась статья, они могут посетить исходный веб-сайт, чтобы прочитать всю статью. Кроме того, наш портал предоставляет дополнительную функцию для классификации категорий трендовых новостных статей и генерирует облако трендовых тем. Таким образом, пользователь может узнать, какие категории и темы сейчас в тренде.

Постановка задачи:

Ниже приведены вопросы, которые решает этот проект:

1. Какие похожие статьи из других источников новостей?

2. Можем ли мы получить резюме статей?

3. Какова тональность статьи?

4. Каковы соответствующие теги?

5. К какой категории относятся популярные статьи?

6. Каковы популярные термины?

Почему эти вопросы важны?

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

2. Трудно пролистать всю статью и получить резюме.

3. Чтобы понять тональность статьи, нужно прочитать всю статью.

4. Без тегов статей сложно догадаться, о чем идет речь в статье.

5. Популярные статьи обычно не классифицируются.

6. Чтобы узнать о трендовых терминах, пользователь должен просмотреть все трендовые статьи.

Целевая аудитория:

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

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

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

Конвейер обработки данных:

1. Веб-скрапинг и хранение данных:

Мы проанализировали два новостных веб-сайта, а именно «Гардиан» и «Нью-Йорк Таймс». Для удаления мы использовали библиотеку BeautifulSoup и сохранили данные парсинга в веб-экземпляре Amazon S3.

2. Очистка данных:

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

3. Исследовательский анализ данных (EDA):

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

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

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

5. Создание модели:

Создание модели - это процесс построения моделей для прогнозных задач, которые мы хотим выполнить. В нашем случае мы создали модели для классификации заголовков новостей по различным категориям, генерации резюме, анализа тональности новостных статей и моделирования тем. Мы создали модели машинного обучения, такие как LDA, Random Forests, SVM. Для построения модели мы использовали библиотеки Python Gensim и Scikit-learn.

6. Результаты:

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

Реализация и оценка функции:

Ниже приведены наши функции и методы, используемые для их реализации:

1. Сходство статей:

Сходство текста должно определять, насколько «близки» два фрагмента текста как по внешнему [лексическому сходству], так и по значению [семантическое сходство]. Здесь мы использовали лексическое сходство, чтобы собрать похожие статьи. Функция сходства статей определяет сходство между исключенными статьями из нескольких источников и выводит их на панель инструментов. Эта функция позволяет пользователям читать о похожих категориях из нескольких источников.

Метод:

Выполняем очистку и предварительную обработку скопированных статей с помощью библиотеки NLTK. Это включает в себя фильтрацию, токенизацию, часть тегов речи, лемматизацию, удаление стоп-слов и так далее. Мы использовали пакет библиотеки генизма Doc2Vec для обучения модели, а набор данных - BBC News Dataset. Doc2vec - это расширение подхода word2vec к документам. Его цель - закодировать (весь) документ, состоящий из списков предложений, а не списков разгруппированных предложений. Следующим шагом является загрузка предварительно обработанных статей в модель для создания векторов для каждой статьи. Теперь сходство между этими статьями было рассчитано с использованием косинусного сходства, и в результате были получены наиболее похожие статьи из каждого источника. Существуют и другие меры, такие как евклидово расстояние, но здесь мы использовали косинусное сходство, поскольку оно измеряет угол между векторами из двух слов в многомерном пространстве. Он фокусируется на ориентации документов, тогда как евклидово расстояние фокусируется на длине документов. Следовательно, даже если два документа ориентированы близко, но если их длина несет много, евклидово расстояние дает меньшее сходство по сравнению с косинусным сходством.

Оценка:

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

2. Генерация сводки:

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

Метод:

Извлекающее обобщение текста включает в себя выбор фраз и предложений из исходного документа для создания нового резюме. Методы включают ранжирование релевантности фраз, чтобы выбрать только те, которые наиболее соответствуют смыслу источника. Во время нашей первой попытки мы сгенерировали сводки с использованием модели LSTM, но результаты были не такими хорошими. В нашем последнем подходе мы использовали предварительно обученную модель BERT для генерации извлекающего резюме. Этот инструмент использует библиотеку преобразователей HuggingFace Pytorch для выполнения извлекающих обобщений. Это работает путем встраивания предложений, а затем запуска алгоритма кластеризации для поиска предложений, наиболее близких к центроидам кластера.

Оценка:

Чтобы оценить сгенерированное резюме, мы проверили его вручную и сравнили с оригинальными статьями, и он работал очень хорошо.

3. Обретение настроения:

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

Метод:

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

Оценка:

Мы попробовали две модели Naïve Bayes и Random forest. Наивный Байес дал точность около 57%, а точность случайного леса составила 68%. Таким образом, мы выбрали случайный лес в качестве нашего классификатора.

4. Тематическое моделирование:

Тематическое моделирование - это метод машинного обучения без учителя, который принимает набор документов в качестве входных, определяет слова и шаблоны фраз в них и автоматически группирует группы слов и характеристики, которые лучше всего описывают набор входных документов. В нашем проекте мы использовали тематическое моделирование, чтобы выделить важные слова для данной новостной статьи. Эти извлеченные слова дают пользователям представление о теме, о которой идет речь в новостной статье. Мы использовали модель скрытого распределения Дирихле (LDA) для извлечения слов. LDA - это модель машинного обучения без учителя, которая принимает документы в качестве входных данных и предоставляет темы и важные слова, описывающие эту тему в качестве выходных данных с точки зрения вероятности с весами, прикрепленными к каждому слову.

Метод:

Мы использовали набор данных BBC News, который содержит 308 статей на разных языках. Мы отфильтровали статьи на английском языке с помощью библиотеки langdetect. Затем мы токенизировали предложения и слова каждой статьи с помощью библиотеки NLTK, на которой проводилась лемматизация. Лемматизация - это процесс создания корневой формы данных слов. Мы также удалили стоп-слова, поскольку они не важны для построения модели. Мы пробовали вводить слова из двух и трех граммов. Поэкспериментировав, мы выбрали трехграммный ввод слов, так как он дает лучшую точность. Мы выполнили точную настройку, экспериментируя с различными значениями параметров модели LDA.

Оценка:

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

Классификация:

Классификация новостных статей направлена ​​на классификацию новостных статей по заранее определенным категориям. Классификацию новостных статей можно рассматривать как классификацию текста, являющуюся приложением НЛП. Классификация документов - это задача машинного обучения с учителем. Мы разделили новостные статьи на пять категорий: бизнес, развлечения, политика, спорт, технологии. Мы собираем заголовки с двух известных новостных сайтов, а именно «The Guardian» и «New York Times». Затем мы прогнозируем категорию каждого заголовка, используя нашу обученную модель. Мы заметили, что обычно новостной сайт не относится к категории актуальных новостей. Итак, с помощью нашего проекта пользователи могут видеть категории актуальных новостей и выбирать, читать ли заголовок, исходя из своих интересов.

Метод:

Мы использовали набор данных BBC News для обучения нашей модели. База данных BBC News состоит из 2225 документов с соответствующими категориями. Набор данных содержит пять различных категорий: бизнес, развлечения, политика, спорт, технологии. Сначала мы выполнили исследовательский анализ данных, чтобы получить представление о наборе данных. Мы обнаружили, что набор данных сбалансирован, поскольку он содержит примерно одинаковое количество документов каждой категории. Мы также построили график распределения средней длины статей по категориям. Таким образом, мы обнаружили, что статьи в новостях о политике и технологиях больше, чем в других категориях. Итак, мы отфильтровали эти две категории, сохранив статьи длиной 1000 слов и отбросив статьи, содержащие более 1000 слов. Мы использовали библиотеки matplotlib и Seaborn для визуализации данных.
Перед извлечением функций из входного набора данных мы выполнили несколько задач по очистке текста, таких как удаление специальных символов, удаление знаков пунктуации, лемматизация и удаление стоп-слов. Все задачи по очистке текста мы выполнили с помощью библиотеки NLTK. Затем мы токенизировали каждый очищенный документ в слова с помощью библиотеки NLTK. Мы преобразовали токенизированные слова в векторы Tf-Idf, поскольку модели машинного обучения принимают в качестве входных данных только числовые данные. Tf-Idf оценивает термины, которые представляют важность этого термина в документе и в целом корпусе. Мы использовали библиотеку Scikit-learn для генерации векторов Tf-Idf.
Для задачи классификации мы сравнили производительность двух моделей машинного обучения: опорных векторных машин и случайных лесов. Мы выполнили настройку гиперпараметров, определив значения параметров для обеих моделей и выполнив рандомизированный поиск. Таким образом, мы узнаем наиболее эффективную модель, которой в нашем случае была SVM. Затем мы выполнили поиск по сетке, чтобы более тщательно настроить параметры путем поиска глубоко в пространстве гиперпараметров. Мы выполнили эти задачи с помощью библиотеки Scikit-learn.
Итоговая модель предсказывает категорию данной новостной статьи с точностью 95%.

Оценка:

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

Облако слов:

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

Метод:

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

Данные продукта:

Мы разработали наш продукт с использованием Django, HTML, Bootstrap и CSS. Универсальный модуль новостей собирает новостную статью выбранной категории с двух веб-сайтов (The Guardian и New York Times) и поддерживает следующие функции:

1. Сбор похожих статей.

2. Генерация сводки

3. Обретение нейтралитета

4. Создание тегов

5. Классификация актуальных новостей.

6. Создание облака слов

Возникшие проблемы:

Ниже приведены препятствия, с которыми мы столкнулись во время проекта:

1. Изначально мы хотели очистить три веб-сайта, а именно The Guardian, New York Times и Daily Mail, но в ежедневной почте класс статей меняется с каждым обновлением, и, следовательно, их трудно очистить.

2. Нам пришлось пойти на компромисс между точностью и временем обработки ради схожести статей, поскольку для сравнения сравниваются несколько статей одновременно.

3. Интеграция всех функций и их реализация в стеке занимала много времени.

Обучение:

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

1. Очистка и предварительная обработка текстовых данных.

2. Разработка функций на текстовых данных

3. Использование библиотек НЛП, таких как Genism и NLTK.

4. Настройка гиперпараметров.

Будущие работы и улучшения:

В будущем мы хотели бы внести следующие улучшения в наш проект:

1. Мы хотели бы объединить более двух веб-сайтов.

2. Мы хотели бы улучшить модель классификации настроений.

3. Мы бы улучшили время обработки сравнения схожести.

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

Резюме:

Наш конечный продукт данных - это универсальный новостной портал, который предоставляет обобщенные аналогичные новостные статьи, агрегированные с двух веб-сайтов (New York Times и The Guardian), с соответствующими тегами и их настроениями. Кроме того, он обеспечивает классификацию популярных новостных статей по соответствующим категориям и создает облако терминов, имеющих тенденцию.