CoderCastrov logo
CoderCastrov
Парсер

Как извлечь и суммировать с помощью BeautifulSoup и TextRank

Как извлечь и суммировать с помощью BeautifulSoup и TextRank
просмотров
3 мин чтение
#Парсер

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

В суммировании существуют два типа: абстрактное и экстрактивное суммирование.

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

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

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

Beautiful Soup

Теперь, когда мы извлекли ссылку на новостную статью, с помощью этой ссылки и парсинга HTML мы извлечем информацию из статьи. Мы используем библиотеку requests для отправки запроса на ссылку и библиотеку Beautiful Soup для извлечения и анализа информации из HTML.

News article import the required libraries

В переменной html_doc мы используем библиотеку requests для получения содержимого страницы по ссылке. Переменная soup является корнем разобранного дерева нашей HTML-страницы, которая позволяет нам искать элементы в дереве. "div", содержащий статью, позволяет нам искать поддерево статьи.

С помощью опции "Инспектировать элемент" мы можем получить HTML-код на стороне конкретного браузера, где мы можем искать нужную часть статьи и взять имя класса, имя тега. Затем мы используем этот код и извлекаем текст.

Как видно на приведенной выше картинке, мы взяли тег "div" и класс "full-details", а затем из тега "p" извлекли всю информацию. Мы взяли тег "h1", который является заголовком статьи, автора из тега "a" и ключевые слова из класса "story tags".

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

Алгоритм Text Rank

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

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

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