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

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

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

Зачем нам нужно суммирование текста?

  1. Сокращения сокращают время чтения.
  2. При исследовании текстов резюме облегчают процесс выбора.
  3. Автоматическое суммирование повышает эффективность индекса.
  4. Алгоритмы автоматического абстрагирования немного более предвзяты, чем абстрактные изображения человека.
  5. Персонализированные резюме полезны при ответах на вопросы, поскольку они предоставляют личную информацию.
  6. Использование автоматизированных или автоматических систем обобщения позволяет сокращенным маркетинговым службам увеличить количество обрабатываемых текстов.

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

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

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

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

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

С другой стороны, абстрактное обобщение пытается вывести значение всего текста, а затем донести его до вас.

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

Последовательность к модели последовательности (абстрактное суммирование)

Мы можем использовать модель Seq2Seq для решения любой задачи, связанной с последовательными данными. Наша цель — создать текстовый сводник, используя длинную серию слов (в теле текста) в качестве входных данных и резюме в качестве выходных данных (которое также является последовательностью). В результате это можно смоделировать как проблему Many-to-Many Seq2Seq.

Кодировщик и декодер — это два основных компонента архитектур много-много-последовательностей. Архитектура Encoder-Decoder в основном используется для решения проблем последовательностей последовательностей (Seq2Seq), в которых входные и выходные последовательности имеют разную длину.

Архитектура кодировщика и декодера

В нашей сети кодер-декодер это происходит интуитивно:

1. Мы передаем блоку Encoder наши входные данные (в данном случае текст из новостей). Кодер считывает входную последовательность и обобщает данные в так называемых векторах внутреннего состояния (в случае LSTM они называются векторами скрытого состояния и состояния ячейки).

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

3. На основе вектора контекста блок декодера формирует выходную последовательность.

Кодер-декодер можно настроить в два этапа:

  • Этап обучения
  • Этап вывода

Этап обучения

Мы последовательно подаем слова из фразы в кодировщик на каждом временном шаге на этапе обучения. Если есть предложение, например, «Я хороший мальчик», скармливается слово I, то на временном шаге t=2 скармливается слово am и так далее.

Если у нас есть последовательность x, состоящая из слов x1,x2,x3 и x4, кодировщик на этапе обучения будет выглядеть так:

Начальное состояние модуля LSTM — либо нулевой вектор, либо случайное начало. Теперь, когда в качестве входных данных подается слово x1 из последовательности x, состояние модуля LSTM на временном шаге t=1 равно h1,c1.

Точно так же, когда слово x2 последовательности x предоставляется в качестве входных данных, h2,c2 является состоянием модуля LSTM на временном шаге t=2 и так далее.

Скрытое состояние последнего шага (hi) и состояние ячейки (ci) используются для инициализации декодера.

Декодер

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

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

При декодировании тестовой последовательности целевая последовательность неизвестна. В результате мы начинаем предсказывать целевую последовательность, передавая декодеру первое слово, которое неизменно является токеном «начало». Маркер ‹end› указывает на то, что предложение подошло к концу.

Фаза вывода

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

Как работает процесс вывода?

  • Закодируйте полную входную последовательность и используйте внутренние состояния энкодера для инициализации декодера.
  • Передайте токен ‹start› декодеру в качестве входных данных.
  • Запустите декодер с внутренними состояниями на один временной шаг.
  • Выходом будет вероятность следующего слова. Слово, имеющее наибольшие шансы быть выбранным, будет выбрано.
  • На следующем временном шаге передайте выбранное слово в качестве входных данных декодеру и обновите внутренние состояния текущим временным шагом.
  • Повторяйте шаги 3–5, пока целевая последовательность не достигнет максимальной длины или пока не будет сгенерирован токен ‹end›.

Давайте рассмотрим сценарий, в котором тестовая последовательность [x1, x2, x3, x4]. Как будет работать процедура вывода этой тестовой последовательности?

Временной шаг: t=1

Временной шаг: t=2

И, временной шаг: t = 3

Алгоритм TextRank (подход, основанный на извлечении)

Алгоритм, основанный на извлечении TextRank, берет свое начало в другом популярном алгоритме Google под названием PageRank (автор Ларри Пейдж). Алгоритм PageRank используется для ранжирования веб-страниц для поисковых систем. Прежде чем понять TextRank, давайте сначала рассмотрим алгоритм PageRank для лучшего понимания.

Предположим, у нас есть 3 веб-страницы: web1, web2 и web3. Эти страницы содержат ссылки на другие страницы между ними. На некоторых страницах может не быть ссылок; они называются висячими указателями. Давайте обратимся к таблице ниже для ссылок

Здесь,

  • Страница Web1 имеет ссылки на страницу Web2
  • Страница Web2 имеет ссылки на страницы Web 1 и Web3.
  • Страница Web3 не имеет ссылок на другие страницы. Это называется висячим указателем

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

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

Теперь посмотрим, как заполняется матрица вероятности

  1. Вероятность перехода пользователя со страницы web[i] на web[j] равна Mat[i][j], что равно 1/ Count(количество уникальных ссылок на страницу web[i])
  2. Если в сети нет уникальной ссылки[i], то это оборванная страница и вероятность ее нулевой инициализации
  3. И в случае, если пользователь попадает на какой-либо висячий указатель, вероятность того, что он попадает на любую другую страницу, составляет 1/count (количество веб-страниц).

Итак, учитывая эти моменты, наша матрица будет выглядеть так:

Алгоритм TextRank

Итак, мы подошли к матрице алгоритма PageRank. Теперь давайте быстро отключим алгоритм TextRank.

  • Здесь мы используем предложения/утверждения вместо веб-страниц.
  • Сходство между предложениями используется как вероятность перехода, как мы это делали в случае с веб-страницей.

Этот алгоритм носит экстрактивный характер и является методом обучения без учителя. Поток суммирования с TextRank выглядит следующим образом.

  1. Первый шаг — объединить все текстовые предложения, доступные в наборе данных.
  2. Во-вторых, разбивая их на отдельные предложения
  3. Затем преобразование всех предложений в векторное представление для моделирования
  4. Теперь, когда векторизация завершена, мы начинаем генерировать матрицу сходства, как объяснялось ранее.
  5. Позже эта матрица подобия преобразуется в граф, где сходство — это ребро, а предложения представлены вершинами.
  6. Наконец, определенное количество предложений используется для окончательного резюме.

Теперь, не теряя времени, давайте погрузимся в реализацию всего этого обучения и посмотрим на это в действии……

Давайте применим алгоритм к сценарию (алгоритм ранжирования страницы/текста)

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

Импортировать библиотеки

Чтение данных

Давайте посмотрим на наш набор данных.

Просмотр данных

Заглянем в текст статей.

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

Разбиение текста на предложения

Разбейте текст на предложения, эти отдельные предложения нужны для дальнейшего процесса. Используйте функцию sent_tokenize() библиотеки nltk.

Загрузить встроенные файлы GloVe Word

Вложения слов GloVe (Global Vectors for Word Representation) — это векторные представления слов. Эмбеддинги слов из перчатки помогут создать векторы для каждого предложения в статье. Другими подходами могут быть TF-IDF или модель Bag-of-words, но они игнорируют порядок слов, а также увеличивают количество необходимых функций.

Используя предварительно обученные векторные данные Wikipedia 2014 + Gigaword 5 GloVe с сайта nlp Stanford. Файл Glove.6B.

Давайте извлечем вложения слов или векторы слов.

У нас есть векторы для 400 001 различных терминов, которые хранятся в формате словаря и называются word_embeddings.

Предварительная обработка текста

Удалите весь шум из текстовых данных. Текст можно очистить, чтобы сделать его максимально ценным.

Удалите все стоп-слова (обычно используемые слова в языке — in, am, is, the, of и т. д.), которые не добавляют ценности предложениям, а также усложняют обработку.

Давайте определим функцию для удаления стоп-слов, которые присутствуют в нашем наборе данных.

list ‘clean_sentences’ используется для создания векторов предложений в наших данных с помощью векторов слов «GloVe».

Векторное представление предложений

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

Подготовка матрицы подобия

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

Инициализируйте нулевую матрицу размеров (m * m). Мы инициализируем эту матрицу оценками косинусного сходства предложений. Здесь m — количество предложений.

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

Применение алгоритма PageRank

Теперь нам нужно преобразовать матрицу сходства с именем «sim_mat» в графическую форму. Узлы этого графика будут представлять предложения, а ребра будут представлять оценки сходства между предложениями. На этом графике мы применим алгоритм PageRank, чтобы получить рейтинг предложений для предложений.

Сводное извлечение

Теперь, основываясь на ранжировании, давайте извлечем N лучших предложений для генерации сводки.

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

Заключение

Автоматизированные текстовые сводки — это интересный исследовательский сайт с несколькими приложениями в отрасли, и этот блог поможет вам понять лишь верхушку всего айсберга. Для получения дополнительной информации ознакомьтесь с кратким описанием глубоких нейронных сетей. Как подходы, основанные на RNN и LSTM, других стратегиях улучшения обучения и сетевых моделях GAN.

Я надеюсь, что этот блог поможет вам лучше понять реферирование текста!

Авторы — Ведант Махаджан, Кушал Шах, Тарун Медтия, Манси Патил