От текста к краткому изложению: библиотека Sumy

от автора

Привет, Хабр!

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

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

Установим:

pip install sumy

Основные фичи Sumy:

  1. Sumy поддерживает несколько методов обобщения, включая LSA, TextRank и LexRank.

  2. С минимальным количеством кода можно начать обобщение текста довольно быстро.

  3. Sumy легко интегрируется с другими Python-библиотеками.

  4. Помимо английского, Sumy также предоставляет поддержку для русского языка.

Основной синтаксис

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

from sumy.parsers.plaintext import PlaintextParser from sumy.nlp.tokenizers import Tokenizer from sumy.summarizers.lsa import LsaSummarizer from sumy.summarizers.text_rank import TextRankSummarizer

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

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

  1. PlaintextParser: для обработки простых текстов и строк. Хорош для работы с обычными текстовыми файлами.

  2. HtmlParser: для извлечения текста из HTML-документов и веб-страниц.

  3. JsonParser: для обработки текста из JSON-структур.

  4. DocxParser: для извлечения текста из документов Microsoft Word.

ПримерPlaintextParser:

from sumy.parsers.plaintext import PlaintextParser from sumy.nlp.tokenizers import Tokenizer  text = """Текст, который вы хотите резюмировать. Он может быть довольно длинным и содержать множество предложений.""" parser = PlaintextParser.from_string(text, Tokenizer("russian"))

Для работы с HTML-контентом:

from sumy.parsers.html import HtmlParser  url = "http://example.com" parser = HtmlParser.from_url(url, Tokenizer("russian"))

Токенизаторы делят текст на предложения и слова. Для русского языка чаще всего используется Tokenizer("russian"). Однако можно юзать стандартные токенизаторы NLTK для большего контроля:

from sumy.nlp.tokenizers import Tokenizer  tokenizer = Tokenizer("russian")

Применение алгоритмов выглядит следующим образом, напомню, что поддерживаются эти: Latent Semantic Analysis, TextRank, LexRank и LsaSummarizer.

LSA:

from sumy.summarizers.lsa import LsaSummarizer  summarizer = LsaSummarizer() summary = summarizer(parser.document, 3)  # получить 3 предложения  for sentence in summary:     print(sentence)

TextRank:

from sumy.summarizers.text_rank import TextRankSummarizer  summarizer = TextRankSummarizer() summary = summarizer(parser.document, 3)  # получить 3 предложения  for sentence in summary:     print(sentence)

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

summary = summarizer(parser.document, 2)  # получить 2 предложения

Примеры применения

Обобщение новостных статей

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

from sumy.parsers.html import HtmlParser from sumy.nlp.tokenizers import Tokenizer from sumy.summarizers.lsa import LsaSummarizer  # URL новостной статьи url = "https://example-news-site.com/article"  # инициализация парсера и суммаризатора parser = HtmlParser.from_url(url, Tokenizer("english")) summarizer = LsaSummarizer()  # генерация резюме summary = summarizer(parser.document, 3)  # получить 3 предложения  print("Краткое резюме статьи:") for sentence in summary:     print(sentence)

Используем HtmlParser для загрузки новостной статьи по URL и LsaSummarizer для создания краткого резюме, состоящего из трех предложений.

Анализ отчетов

Часто требуется быстро ознакомиться с длинными отчетами или теми же исследовательскими работами.

from sumy.parsers.plaintext import PlaintextParser from sumy.nlp.tokenizers import Tokenizer from sumy.summarizers.text_rank import TextRankSummarizer  # исходный текст научного отчета text = """В этом исследовании мы анализируем влияние изменения климата на экосистемы. Используются различные методы для оценки изменений температуры и уровня осадков. Результаты показывают значительное влияние на растительность и животный мир."""  # инициализация парсера и суммаризатора parser = PlaintextParser.from_string(text, Tokenizer("english")) summarizer = TextRankSummarizer()  # генерация резюме summary = summarizer(parser.document, 2)  # получить 2 предложения  print("Краткое резюме отчета:") for sentence in summary:     print(sentence)

Используем PlaintextParser для работы с текстовым содержимым научного отчета и TextRankSummarizer для получения краткого резюме, содержащего два предложения.

Обработка отзывов пользователей

Sumy позволяет извлекать общие мнения и выявлять основные тенденции в отзывах.

from sumy.parsers.plaintext import PlaintextParser from sumy.nlp.tokenizers import Tokenizer from sumy.summarizers.lex_rank import LexRankSummarizer  # исходные отзывы пользователей text = """Этот продукт превосходен! Он оправдал все мои ожидания. Мне не понравилось качество упаковки, но сам продукт отличного качества. Рекомендую всем, кто ищет надежный товар."""  # инициализация парсера и суммаризатора parser = PlaintextParser.from_string(text, Tokenizer("english")) summarizer = LexRankSummarizer()  # генерация резюме summary = summarizer(parser.document, 2)  # получить 2 предложения  print("Краткое резюме отзывов:") for sentence in summary:     print(sentence)

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


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

А напоследок хочу пригласить вас на бесплатный вебинар, где вы узнаете, что такое RAG, зачем это нужно в NLP сервисах и в каких областях применяется эта технология. Помимо этого мы рассмотрим типы RAG, методы оценки качества RAG сервиса и практический пример на задаче Question Answering (QA).


ссылка на оригинал статьи https://habr.com/ru/articles/832940/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *