Это простое руководство, чтобы понять проблему суммирования текста с помощью Python.

Содержание

  • Мотивация
  • Почему так важно обобщение текста?
  • Что такое обобщение?
  • Экстрактивный метод
  • Абстрактивный метод
  • Обобщение текста с использованием Python
  • Дальнейшее чтение

Мотивация

Чтобы предпринять соответствующие действия, нам нужна самая свежая информация.
Но, наоборот, количество информации все больше и больше растет.

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

Почему так важно обобщение текста?

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

Фактически, Международная корпорация данных утверждает, что общий объем цифровых данных, ежегодно циркулирующих по всему миру, вырастет с 4,4 зеттабайт в 2013 году до 180 зеттабайт в 2025 году. Это много данных!

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

Итак, что такое обобщение?

По сути, мы можем рассматривать «резюмирование» как «функцию»: входными данными является документ, а выходными данными - сводка. А его тип ввода и вывода помогает нам классифицировать несколько задач реферирования.

  1. Резюме в одном документе

[summary = summarize (документ)]

2. Резюме для нескольких документов

[summary = summarize (документ_1, документ_2,…)]

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

3. Резюме, ориентированное на запросы

summary = summarize (документ, запрос)

Этот тип реферирования называется «резюмированием, сфокусированным на запросе», в отличие от «общего реферирования». В частности, тип, который устанавливает точку зрения на «различие» (обновление), называется «обновлением суммирования».

5. Обновить сводку

summary = summarize (документ, предыдущий_документ_или_сводка)

И само «резюме» имеет некоторое разнообразие.

6. Ориентировочная сводка

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

7. Информативное резюме

В отличие от ориентировочного резюме, информативное резюме включает полную информацию о документе.

8. Сводка по ключевому слову

Не текст, а слова или фразы из входного документа.

9. Сводка заголовка

Только одна строка резюме.

Подход

В основном есть два способа составить резюме. Экстрактивное и абстрактное.

Экстрактивный метод

Выберите соответствующие фразы входного документа и объедините их, чтобы сформировать сводку (например, «копировать и вставлять»).

  • Плюсы: они довольно надежны, поскольку используют существующие фразы на естественном языке, взятые прямо из ввода.
  • Минусы: им не хватает гибкости, поскольку они не могут использовать новые слова или соединительные элементы. Они также не могут перефразировать, как это иногда делают люди.

Теперь я покажу несколько категорий экстрактивного обобщения.

База графа

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

TextRank

TextRank основан на алгоритме PageRank, который используется в поисковой системе Google. Его основная концепция - Связанная страница хороша, тем более, если она со многих связанных страниц. Связи между страницами выражаются матрицей (как таблица Round-robin). Мы можем преобразовать эту матрицу в матрицу вероятности перехода, разделив сумму ссылок на каждой странице. И пользователь страницы перемещает страницу в соответствии с этой матрицей.

База функций

Базовая модель признаков извлекает особенности предложения, а затем оценивает их важность. Вот репрезентативное исследование.

Обобщение единого документа на основе извлечения предложений

В указанном выше методе используются следующие функции.

  • Положение предложения во входном документе
  • Наличие глагола в предложении
  • Срок наказания
  • Частота сроков
  • Тег именованного объекта NE
  • Стиль шрифта

…так далее. Все функции накапливаются в счет.

No.of coreferences - это количество местоимений в предыдущем предложении. Он просто рассчитывается путем подсчета местоимений, встречающихся в первой половине предложения. Таким образом, Score представляет собой ссылку на предыдущее предложение.

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

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

Вы можете попробовать обобщение текста функциональной базы с помощью TextTeaser (PyTeaser доступен для пользователей Python).

Тематическая база

Базовая модель темы вычисляет тему документа и оценивает каждое предложение на основании того, какие темы включены («основная» тема высоко оценивается при оценке предложения).

Скрытый семантический анализ (LSA) обычно используется для обнаружения темы. Он основан на SVD (разложение по сингулярным значениям).
Следующая статья является хорошей отправной точкой для обзора обобщения базовой LSA (темы).

Резюмирование текста с использованием скрытого семантического анализа

Простой выбор базового предложения LSA

Существует множество вариантов расчета и выбора предложения в соответствии со значением SVD. Самый простой способ выбрать предложение по теме (= V, собственные векторы / главные оси) и его баллам.

Если вы хотите использовать LSA, gensim поддерживает его.

Граммер База

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

Генерация заголовков с помощью квазисинхронной грамматики

Эта модель может производить осмысленный «пересказ» на основе грамматической структуры.

Абстрактивный метод

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

  • Плюсы: они могут использовать слова, которых не было в исходном вводе. Это позволяет делать более плавные и естественные резюме.
  • Минусы: Но это также гораздо более сложная проблема, поскольку теперь вам требуется, чтобы модель генерировала связные фразы и соединительные элементы.

Экстрактивный и абстрактивный методы не противоречат друг другу. Вы можете использовать оба варианта для создания сводки. И есть способ сотрудничать с человеком.

Обобщение с подсказками

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

Модель кодера-декодера

Модель кодировщика-декодера состоит из кодировщика и декодера, как и ее название. Кодировщик преобразует входной документ в скрытое представление (вектор), а декодер с его помощью создает сводку.

В настоящее время модель кодировщика-декодера, которая является одной из моделей нейронных сетей, в основном используется в машинном переводе. Таким образом, эта модель также широко используется в модели абстрактного реферирования. Если вы хотите попробовать модель суммирования кодер-декодер, tensorflow предлагает базовую модель.

Комбинированный подход

Не только одна сторона экстрактивного или абстрактного, объедините их для создания резюме.

Сеть указателей-генераторов

Объедините экстрактивную и абстрактную модели по вероятности переключения.

Обобщение с помощью сетей указателей-генераторов

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

вы можете найти его Реализация здесь

Модель с глубоким усилением

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

Обобщение текста с использованием Python

Gensim

gensim.summarization предлагает обобщение TextRank

from gensim.summarization.summarizer import summarize
print(summarize(text))
from gensim.test.utils import common_dictionary, common_corpus
from gensim.models import LsiModel
model = LsiModel(common_corpus, id2word=common_dictionary)
vectorized_corpus = model[common_corpus]

Текст

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

>>> from textteaser import TextTeaser
>>> tt = TextTeaser()
>>> tt.summarize(title, text)

PyTeaser

PyTeaser берет любую новостную статью и извлекает из нее краткое содержание.

Резюме создаются путем ранжирования предложений в новостной статье в соответствии с их релевантностью для всего текста. Первые 5 предложений используются для формирования «резюме». Каждое предложение оценивается по четырем критериям:

  • Соответствие названию
  • Релевантность ключевым словам в статье
  • Положение предложения
  • Срок наказания
>>> from pyteaser import SummarizeUrl
>>> url = 'http://www.huffingtonpost.com/2013/11/22/twitter-forward-secrecy_n_4326599.html'
>>> summaries = SummarizeUrl(url)
>>> print (summaries)

Textrank

Pytextrank - это реализация TextRank в Python.

В этом блокноте вы можете найти полную реализацию pytextrank.

Резюме TensorFlow

Основная модель - это традиционная модель от последовательности к последовательности с вниманием. Он настроен (в основном, входы / выходы) для задачи реферирования текста. Модель была обучена на наборе данных Gigaword и достигла самых современных результатов (по состоянию на июнь 2016 г.).

Дальнейшее чтение