doc2sequence

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

Описание

пример

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

пример

sequences = doc2sequence(emb,documents) возвращает массив ячеек из векторов встраивания слов в documents задается словом embedding 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-by-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™ Model для fastText English 16 млрд Token Word Embedding пакет поддержки. Если этот пакет поддержки не установлен, то функция предоставляет ссылку на загрузку.

emb = fastTextWordEmbedding;

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

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

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

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

Просмотрите размеры первых 10 последовательностей. Каждая последовательность является D-на-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™ Model для fastText English 16 млрд Token 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-на-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 должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке 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' - Последовательности Pad, имеющие ту же длину, что и самая длинная последовательность.

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

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

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

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

свернуть все

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

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

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

Совет

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

Введенный в R2018b