exponenta event banner

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")

Figure contains an axes. The axes with title Summary Document Importance contains an object of type bar.

Чтобы суммировать один документ, разделите его на ряд предложений и используйте 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 функция. Чтобы вернуть сводку с тремя документами, установите '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' не a 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Третий краткий документ в соответствии с 'ScoringMethod' вариант. Баллы сортируются в соответствии с 'OrderBy' вариант.

Представлен в R2020a