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' и a 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Сводные данные документ согласно 'ScoringMethod' опция. Счета сортируются согласно 'OrderBy' опция.

Введенный в R2020a