doc2sequence

Преобразуйте документы последовательностям для глубокого обучения

Синтаксис

sequences = doc2sequence(enc,documents)
sequences = doc2sequence(emb,documents)
sequences = doc2sequence(___,Name,Value)

Описание

пример

sequences = doc2sequence(enc,documents) возвращает массив ячеек числовых индексов слов в documents, данном словом, кодирующим enc. Каждый элемент sequences является вектором индексов слов в соответствующем документе.

пример

sequences = doc2sequence(emb,documents) возвращает массив ячеек векторов встраивания слов в documents, данном словом, встраивающим emb. Каждый элемент sequences является матрицей векторов встраивания слов в соответствующем документе.

пример

sequences = doc2sequence(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение".

Примеры

свернуть все

Загрузите данные о прогнозах погоды и создайте массив tokenizedDocument.

filename = "weatherReports.csv";
data = readtable(filename,'TextType','string');
textData = data.event_narrative;
documents = tokenizedDocument(textData);

Создайте кодирование слова.

enc = wordEncoding(documents);

Преобразуйте документы последовательностям словарей.

sequences = doc2sequence(enc,documents);

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

sequences(1:10)
ans = 10x1 cell array
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}
    {1x930 double}

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

Загрузите предварительно обученное встраивание слова с помощью функции fastTextWordEmbedding. Эта функция требует Модели Text Analytics Toolbox™ для fastText английских 16 миллиардов Лексем пакет поддержки Word Embedding. Если этот пакет поддержки не установлен, то функция обеспечивает ссылку на загрузку.

emb = fastTextWordEmbedding;

Загрузите данные о прогнозах погоды и создайте массив tokenizedDocument.

filename = "weatherReports.csv";
data = readtable(filename,'TextType','string');
textData = data.event_narrative;
documents = tokenizedDocument(textData);

Преобразуйте документы последовательностям векторов слова с помощью doc2sequence. Функция doc2sequence, по умолчанию, лево-заполняет последовательности, чтобы иметь ту же длину. При преобразовании большого количества документов с помощью высоко-размерного встраивания слова дополнение может потребовать больших объемов памяти. Чтобы препятствовать тому, чтобы функция дополнила данные, установите опцию 'PaddingDirection' на 'none'. Также можно управлять объемом дополнения использования опции 'Length'.

sequences = doc2sequence(emb,documents,'PaddingDirection','none');

Просмотрите размеры первых 10 последовательностей. Каждая последовательность является D-by-S матрицей, где D является размерностью встраивания, и S является количеством векторов слова в последовательности.

sequences(1:10)
ans = 10×1 cell array
    {300×8  single}
    {300×39 single}
    {300×14 single}
    {300×14 single}
    {300×0  single}
    {300×15 single}
    {300×20 single}
    {300×6  single}
    {300×21 single}
    {300×10 single}

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

Загрузите предварительно обученное встраивание слова с помощью fastTextWordEmbedding. Эта функция требует Модели Text Analytics Toolbox™ для fastText английских 16 миллиардов Лексем пакет поддержки Word Embedding. Если этот пакет поддержки не установлен, то функция обеспечивает ссылку на загрузку.

emb = fastTextWordEmbedding;

Загрузите данные о прогнозах погоды и создайте массив tokenizedDocument.

filename = "weatherReports.csv";
data = readtable(filename,'TextType','string');
textData = data.event_narrative;
documents = tokenizedDocument(textData);

Преобразуйте документы последовательностям векторов слова. Задайте, чтобы лево-заполнить или обрезать последовательности, чтобы иметь длину 100.

sequences = doc2sequence(emb,documents,'Length',100);

Просмотрите размеры первых 10 последовательностей. Каждая последовательность является D-by-S матрицей, где D является размерностью встраивания, и S является количеством векторов слова в последовательности (длина последовательности). Поскольку длина последовательности задана, S является постоянным.

sequences(1:10)
ans = 10×1 cell array
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}
    {300×100 single}

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

свернуть все

Введите встраивание слова, заданное как объект wordEmbedding.

Введите кодирование слова, заданное как объект wordEncoding.

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

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

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

Пример: 'Length','shortest' обрезает последовательности, чтобы иметь ту же длину как самая короткая последовательность.

Неизвестное поведение слова, заданное как пара, разделенная запятой, состоящая из 'UnknownWord' и одно из следующего:

  • 'discard' – Если слово не находится во входной карте, то отбросьте его.

  • NaN Если слово не находится во входной карте, то возвратите значение NaN.

Совет

Если вы создаете последовательности для обучения нейронная сеть для глубокого обучения со встраиванием слова, используйте 'discard'. Не используйте последовательности со значениями NaN, потому что выполнение так может распространить ошибки через сеть.

Дополнение направления, заданного как пара, разделенная запятой, состоящая из 'PaddingDirection' и одно из следующего:

  • 'left' – Заполните последовательности слева.

  • 'right' – Заполните последовательности справа.

  • 'none' Не заполняйте последовательности.

Совет

При преобразовании большого количества данных с помощью высоко-размерного встраивания слова дополнение может потребовать больших объемов памяти. Чтобы препятствовать тому, чтобы функция добавила слишком много дополнения, установите опцию 'PaddingDirection' на 'none' или установите 'Length' на меньшее значение.

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Длина последовательности, заданная как пара, разделенная запятой, состоящая из 'Length' и одно из следующего:

  • 'longest' – Заполните последовательности, чтобы иметь ту же длину как самая длинная последовательность.

  • 'shortest' – Усеченные последовательности, чтобы иметь ту же длину как самая короткая последовательность.

  • Положительное целое число – Клавиатура или усеченные последовательности, чтобы иметь заданную длину. Функция обрезает последовательности справа.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

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

свернуть все

Выведите последовательности, возвращенные как массив ячеек.

Для входа встраивания слова i th элемент sequences является матрицей векторов слова, соответствующих i th входной документ.

Для входа кодирования слова i th элемент sequences является вектором слова, кодирующего индексы, соответствующие i th входной документ.

Советы

  • При преобразовании большого количества данных с помощью высоко-размерного встраивания слова дополнение может потребовать больших объемов памяти. Чтобы препятствовать тому, чтобы функция добавила слишком много дополнения, установите опцию 'PaddingDirection' на 'none' или установите 'Length' на меньшее значение.

Введенный в R2018b