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

Необходимость.Зачем вообще необходимо обобщение?

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

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

Извлекающее обобщение

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

Обзор того, как работает экстрактивное суммирование —

  1. Предварительная обработка: токенизация предложений, удаление стоп-слов, лемматизация, выделение корней и т. д.
  2. Оценка предложений. Предложениям присваиваются баллы в зависимости от их значения в документе с использованием таких методов, как подсчет частотности редких слов, TF-IDF и т. д.
  3. Фильтрация предложений: предложения, получившие наибольшее количество баллов, выбираются для формирования сводки.

Вот пример кода экстрактивного суммирования в Python:

import nltk
nltk.download('punkt')
nltk.download('stopwords')
from nltk.corpus import stopwords
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.probability import FreqDist

def extractive_summarization(text, num_sentences):
    # Tokenize the text into sentences
    sentences = sent_tokenize(text)
    
    # Tokenize the sentences into words
    words = [word_tokenize(sentence) for sentence in sentences]
    
    # Filter out stop words
    stop_words = set(stopwords.words("english"))
    words = [[word for word in sentence if word.lower() not in stop_words] for sentence in words]
    
    # Calculate word frequencies
    word_frequencies = FreqDist([word for sentence in words for word in sentence])
    
    # Assign scores to sentences based on word frequencies
    sentence_scores = {sentence: sum([word_frequencies[word] for word in sentence]) for sentence in sentences}
    
    # Sort the sentences by scores in descending order
    sorted_sentences = sorted(sentence_scores, key=sentence_scores.get, reverse=True)
    
    # Select the top 'num_sentences' sentences for the summary
    summary_sentences = sorted_sentences[:num_sentences]
    
    # Combine the selected sentences into the summary text
    summary = ' '.join(summary_sentences)
    
    return summary

Теперь давайте перейдем к пониманию «абстрактного» обобщения и его отличий от экстрактивного обобщения.

Абстрактное обобщение

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

Обзор того, как работает абстрактное обобщение —

  1. Предварительная обработка: токенизация предложений, удаление стоп-слов, лемматизация, выделение корней и т. д.
  2. Понимание контекста: методы НЛП, такие как тегирование частей речи, NER, семантический анализ и т. д., используются для понимания значения и отношений между различными предложениями.
  3. Создание резюме: на основе захваченного значения и взаимосвязей создается новый текст, представляющий аннотацию данного текста. Нейронные сети часто используются для таких задач.
  4. Постобработка. Сгенерированное резюме подвергается дальнейшей обработке для удаления грамматических ошибок или ошибок.

Вот пример кода абстрактного суммирования на Python с использованием библиотеки transforms:

!pip install transformers
from transformers import pipeline

def abstractive_summarization(text, max_length):
    # Load the summarization pipeline
    summarizer = pipeline("summarization")
    
    # Generate the summary
    summary = summarizer(text, max_length=max_length, min_length=10, do_sample=True)[0]["summary_text"]
    
    return summary

Сравнение результатов: экстрактивное и абстрактное обобщение

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

Глава компании ChatGPT заявил, что не планирует покидать Европу. Генеральный директор OpenAI Сэм Альтман повторил угрозу, которую он сделал ранее на этой неделе, чтобы выйти из блока, если станет слишком сложно соблюдать будущие законы об искусственном интеллекте (ИИ).

Запланированное законодательство ЕС может стать первым законом об ИИ, который, по словам технического босса, «чрезмерно регулируется». Но он отступил после широкого освещения его комментариев. «Мы рады продолжать работать здесь и, конечно же, не планируем уходить», — написал он в Твиттере.

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

Но г-н Альтман обеспокоен тем, что OpenAI технически не сможет выполнить некоторые требования Закона об искусственном интеллекте в отношении безопасности и прозрачности, согласно журналу Time.

Извлекающее резюме (num_sentences = 2)

Мы рады продолжать работать здесь и, конечно же, не планируем уходить», — написал он в Твиттере. Многие представители творческой индустрии обвиняют компании ИИ в том, что они используют работы художников, музыкантов и актеров для обучения систем имитации их работы.

Абстрактное резюме (max_length = 100)

Сэм Альтман говорит, что не планирует покидать Европу, если законы об искусственном интеллекте станут слишком жесткими. Он пригрозил выйти из блока, если станет слишком сложно соблюдать законы ЕС об искусственном интеллекте. Но он отступил после широкого освещения его комментариев.

Заключение

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

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

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

Спасибо за прочтение!

Ознакомьтесь с другими интересными публикациями —