wordEmbedding

Модель встраивания Word, чтобы сопоставить слова с векторами и назад

Описание

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

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

Создание

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

Свойства

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

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

Пример: 300

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

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

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

vec2wordСопоставьте вектор встраивания со словом
word2vecСопоставьте слово со встраиванием вектора
isVocabularyWordПротестируйте, если слово является участником встраивания слова или кодирования
writeWordEmbeddingЗапишите файл встраивания слова

Примеры

свернуть все

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

Введите fastTextWordEmbedding в командной строке.

fastTextWordEmbedding

Если Модель Text Analytics Toolbox для fastText английских 16 миллиардов Лексем, пакет поддержки Word Embedding не установлен, то функция обеспечивает ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните по ссылке, и затем нажмите Install. Проверяйте, что установка успешна путем ввода emb = fastTextWordEmbedding в командной строке.

emb = fastTextWordEmbedding
emb = 

  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

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

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

emb = fastTextWordEmbedding
emb = 
  wordEmbedding with properties:

     Dimension: 300
    Vocabulary: [1×1000000 string]

Сопоставьте слова "Italy", "Рим" и "Париж" к векторам с помощью 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™ для 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}

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

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)

Считайте слово, встраивающее файл с помощью readWordEmbedding.

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

     Dimension: 100
    Vocabulary: [1x401 string]

Введенный в R2017b