exponenta event banner

wordEmbedding

Встраиваемая модель Word для отображения слов на векторы и обратно

Описание

Вложение слов, популяризированное библиотеками word2vec, GloVe и fastText, отображает слова в словаре на реальные векторы.

Векторы пытаются захватить семантику слов, так что подобные слова имеют схожие векторы. Некоторые вложения также фиксируют отношения между словами, такие как «король - царице, как мужчина - женщине». В векторной форме это отношение король - мужчина + женщина = королева.

Создание

Создание встраивания слов путем загрузки предварительно обученного встраивания с помощью fastTextWordEmbedding, чтение вложения из файла с помощью readWordEmbeddingили путем обучения встраиванию с использованием trainWordEmbedding.

Свойства

развернуть все

Размерность вложения слова, заданная как положительное целое число.

Пример: 300

Уникальные слова в модели, указанные как строковый вектор.

Типы данных: string

Функции объекта

vec2wordОтображение вектора встраивания в слово
word2vecСопоставить слово с вектором встраивания
isVocabularyWordПроверка, является ли слово элементом встраивания или кодирования слов
writeWordEmbeddingЗапись файла встраивания слов

Примеры

свернуть все

Загрузите и установите текстовую Аналитику Модель Toolbox™ для fastText английских 16 миллиардов Символов пакет поддержки Word Embedding.

Напечатать fastTextWordEmbedding в командной строке.

fastTextWordEmbedding

Если не установлен пакет поддержки Text Analytics Toolbox Model for startText English 16 млрд Token Word Embedding, то функция предоставляет ссылку на необходимый пакет поддержки в обозревателе Add-On Explorer. Чтобы установить пакет поддержки, щелкните ссылку и нажмите кнопку Установить. Убедитесь, что установка выполнена успешно, введя emb = fastTextWordEmbedding в командной строке.

emb = fastTextWordEmbedding
emb = 

  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

Если установлен необходимый пакет поддержки, функция возвращает wordEmbedding объект.

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

emb = fastTextWordEmbedding
emb = 
  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

Отображение слов «Италия», «Рим» и «Париж» на векторы с использованием word2vec.

italy = word2vec(emb,"Italy");
rome = word2vec(emb,"Rome");
paris = word2vec(emb,"Paris");

Отображение вектора italy - rome + paris к слову, использующему vec2word.

word = vec2word(emb,italy - rome + paris)
word = 
"France"

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

Загрузите предварительно подготовленное вложение слов с помощью 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}

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

filename = "exampleWordEmbedding.vec";
emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 50
    Vocabulary: [1x9999 string]

Узнайте о встраивании слов с помощью word2vec и vec2word.

king = word2vec(emb,"king");
man = word2vec(emb,"man");
woman = word2vec(emb,"woman");
word = vec2word(emb,king - man + woman)
word = 
"queen"

Обучение встраиванию слова и запись его в текстовый файл.

Загрузите данные примера. Файл sonnetsPreprocessed.txt содержит предварительно обработанные версии сонетов Шекспира. Файл содержит один сонет на строку со словами, разделенными пробелом. Извлечь текст из sonnetsPreprocessed.txtразделите текст на документы с новыми символами, а затем пометьте документы.

filename = "sonnetsPreprocessed.txt";
str = extractFileText(filename);
textData = split(str,newline);
documents = tokenizedDocument(textData);

Обучение встраиванию слов с помощью trainWordEmbedding.

emb = trainWordEmbedding(documents)
Training: 100% Loss: 0        Remaining time: 0 hours 0 minutes.
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: [1x401 string]

Запишите слово встраивание в текстовый файл.

filename = "exampleSonnetsEmbedding.vec";
writeWordEmbedding(emb,filename)

Прочитайте слово embedding file с помощью readWordEmbedding.

emb = readWordEmbedding(filename)
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: [1x401 string]

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