extractSummary

Извлеките сводные данные из документов

Описание

пример

summary = extractSummary(documents) выбирает подмножество входных документов, чтобы служить сводными данными и возвращает их как tokenizedDocument массив.

пример

[summary,scores] = extractSummary(documents) также возвращает баллы важности, используемые для выбора итоговых документов. В этом случае, scores(i) представляет счет к summary(i).

пример

[summary,scores] = extractSummary(documents,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Создайте массив маркируемых документов.

str = [
    "The quick brown fox jumped over the lazy dog."
    "The fox jumped over the dog."
    "The lazy dog saw a fox jumping."
    "There seem to be animals jumping other animals."
    "There are quick animals and lazy animals"];
documents = tokenizedDocument(str);

Извлеките сводные данные документов с помощью extractSummary функция. Функция, по умолчанию, выбирает 1/10 входных документов, окружая.

summary = extractSummary(documents)
summary = 
  tokenizedDocument:

   10 tokens: The quick brown fox jumped over the lazy dog .

Чтобы задать большие сводные данные, используйте 'SummarySize' опция. Извлеките сводные данные с тремя документами.

summary = extractSummary(documents,'SummarySize',3)
summary = 
  3x1 tokenizedDocument:

    10 tokens: The quick brown fox jumped over the lazy dog .
     7 tokens: The fox jumped over the dog .
     9 tokens: There seem to be animals jumping other animals .

Создайте массив маркируемых документов.

str = [
    "The quick brown fox jumped over the lazy dog."
    "The fox jumped over the dog."
    "The lazy dog saw a fox jumping."
    "There seem to be animals jumping over other animals."
    "There are quick animals and lazy animals"];
documents = tokenizedDocument(str);

Извлеките сводные данные с тремя документами. Второй выход scores содержит итоговые оценки важности документа.

[summary,scores] = extractSummary(documents,'SummarySize',3)
summary = 
  3x1 tokenizedDocument:

    10 tokens: The quick brown fox jumped over the lazy dog .
    10 tokens: There seem to be animals jumping over other animals .
     7 tokens: The fox jumped over the dog .

scores = 3×1

    0.2426
    0.2174
    0.1911

Визуализируйте баллы в столбчатой диаграмме.

figure
bar(scores)
xlabel("Summary Document")
ylabel("Score")
title("Summary Document Importance")

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

Создайте строковый скаляр, содержащий документ.

str = ...
    "There is a quick fox. The fox is brown. There is a dog which " + ...
    "is lazy. The dog is very lazy. The fox jumped over the dog. " + ...
    "The quick brown fox jumped over the lazy dog.";

Разделите строку в предложения с помощью splitSentences функция.

str = splitSentences(str)
str = 6x1 string
    "There is a quick fox."
    "The fox is brown."
    "There is a dog which is lazy."
    "The dog is very lazy."
    "The fox jumped over the dog."
    "The quick brown fox jumped over the lazy dog."

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

documents = tokenizedDocument(str)
documents = 
  6x1 tokenizedDocument:

     6 tokens: There is a quick fox .
     5 tokens: The fox is brown .
     8 tokens: There is a dog which is lazy .
     6 tokens: The dog is very lazy .
     7 tokens: The fox jumped over the dog .
    10 tokens: The quick brown fox jumped over the lazy dog .

Извлеките сводные данные из предложений с помощью extractSummary функция. Чтобы возвратить сводные данные withthree документы, установите 'SummarySize' опция к 3. Чтобы гарантировать итоговые документы появляются в том же порядке как входные документы, устанавливают 'OrderBy' опция к 'position'.

summary = extractSummary(documents,'SummarySize',3,'OrderBy','position')
summary = 
  3x1 tokenizedDocument:

     6 tokens: There is a quick fox .
     7 tokens: The fox jumped over the dog .
    10 tokens: The quick brown fox jumped over the lazy dog .

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

sentences = joinWords(summary);
summaryStr = join(sentences)
summaryStr = 
"There is a quick fox . The fox jumped over the dog . The quick brown fox jumped over the lazy dog ."

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

punctuationRight = ["." "," "’" ")" ":" "?" "!"];
summaryStr = replace(summaryStr," " + punctuationRight,punctuationRight);

punctuationLeft = ["(" "‘"];
summaryStr = replace(summaryStr,punctuationLeft + " ",punctuationLeft)
summaryStr = 
"There is a quick fox. The fox jumped over the dog. The quick brown fox jumped over the lazy dog."

Входные параметры

свернуть все

Введите документы в виде tokenizedDocument массив.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: extractSummary(documents,'ScoringMethod','lexrank') извлекает сводные данные из documents и устанавливает опцию метода выигрыша на 'lexrank'.

Выигрыш метода, используемого для резюмирования экстракта в виде разделенной запятой пары, состоящей из 'ScoringMethod' и одно из следующего:

  • 'textrank' – Используйте алгоритм TextRank.

  • 'lexrank' – Используйте алгоритм LexRank.

  • 'mmr' – Используйте алгоритм MMR.

Запросите документ для MMR, выигрывающего в виде разделенной запятой пары, состоящей из 'Query' и tokenizedDocument скаляр, массив строк слов или массив ячеек из символьных векторов. Если 'Query' не tokenizedDocument скаляр, затем это должен быть вектор-строка, представляющий единый документ, где каждым элементом является слово.

Эта опция только оказывает влияние когда 'ScoringMethod' 'mmr'.

Размер сводных данных в виде разделенной запятой пары, состоящей из 'SummarySize' и одно из следующего:

  • Скаляр в области значений (0,1) – Извлечение заданная пропорция входных документов, окружая. В этом случае, количество итоговых документов ceil(SummarySize*numDocuments), где numDocuments количество входных документов.

  • Положительное целое число – Извлечение сводные данные с конкретным количеством документов. Если SummarySize больше или равен количеству входных документов, затем функция возвращает входные документы, отсортированные согласно 'OrderBy' опция.

    Inf – Возвратите входные документы, отсортированные согласно 'OrderBy' опция.

Типы данных: double

Порядок документов, таким образом, в виде разделенной запятой пары, состоящей из 'OrderBy' и одно из следующего:

  • 'score' – Закажите документы их счетом согласно 'ScoringMethod' опция.

  • 'position' – Поддержите порядок документа от входа.

Выходные аргументы

свернуть все

Извлеченные сводные данные, возвращенные как tokenizedDocument массив. Сводные данные являются подмножеством documents, и сортируется согласно 'OrderBy' опция.

Итоговые баллы документа, возвращенные как вектор, где scores(i) счет jдокумент сводных данных th согласно 'ScoringMethod' опция. Баллы сортируются согласно 'OrderBy' опция.

Введенный в R2020a