wordEmbedding

Модель встраивания слов для сопоставления слов с векторами и назад

Описание

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

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

Создание

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

Свойства

расширить все

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

Пример: 300

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

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

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

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

Примеры

свернуть все

Загрузите и установите Text Analytics Toolbox™ Model для fastText English 16 млрд Token Word Embedding пакет поддержки.

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

fastTextWordEmbedding

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

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™ 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}

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

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