exponenta event banner

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-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™ для пакета поддержки внедрения Token Word на английском языке на 16 миллиардов. Если этот пакет поддержки не установлен, функция предоставляет ссылку для загрузки.

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™ для пакета поддержки внедрения Token Word на английском языке на 16 миллиардов. Если этот пакет поддержки не установлен, функция предоставляет ссылку для загрузки.

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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как 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-й элемент sequences является матрицей векторов слов, соответствующих i-му входному документу.

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

Совет

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

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