doc2sequence

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

enc = wordEncoding(documents);

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

sequences = doc2sequence(enc,documents);

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

sequences(1:10)
ans=10×1 cell array
    {[           0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10]}
    {[  0 0 0 0 0 0 11 12 13 14 15 2 16 17 18 19 10]}
    {[    0 0 0 0 0 0 20 2 21 22 7 23 24 25 7 26 10]}
    {[        0 0 0 0 0 0 0 0 0 0 0 27 28 6 7 18 10]}
    {[        0 0 0 0 0 0 0 0 0 0 0 0 29 30 7 31 10]}
    {[    0 0 0 0 0 0 0 32 33 6 7 34 35 36 37 38 10]}
    {[      0 0 0 0 0 0 0 0 0 39 40 36 41 6 7 42 10]}
    {[    0 0 0 0 0 0 0 0 43 44 22 45 46 47 7 48 10]}
    {[      0 0 0 0 0 0 0 0 0 0 49 50 17 7 51 48 10]}
    {[0 0 0 0 52 8 53 36 54 55 56 57 58 59 22 60 10]}

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

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

emb = fastTextWordEmbedding;

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

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
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×10 single}
    {300×11 single}
    {300×11 single}
    {300×6  single}
    {300×5  single}
    {300×10 single}
    {300×8  single}
    {300×9  single}
    {300×7  single}
    {300×13 single}

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

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

emb = fastTextWordEmbedding;

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

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;
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,Value аргументы. 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