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 = "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: ["utc"    "first"    "new"    "two"    "time"    ...    ]

Исследуйте встраивание слова с помощью 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: ["thy"    "thou"    "love"    "thee"    "doth"    ...    ]

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

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

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

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

     Dimension: 100
    Vocabulary: ["thy"    "thou"    "love"    "thee"    "doth"    ...    ]

Введенный в R2017b