exponenta event banner

trainWordEmbedding

Встраивание обучающего слова

Описание

пример

emb = trainWordEmbedding(filename) обучает встраиванию слов с использованием обучающих данных, сохраненных в текстовом файле filename. Файл представляет собой коллекцию документов, хранящихся в UTF-8 с одним документом на строку и словами, разделенными пробелами.

пример

emb = trainWordEmbedding(documents) обучает вложению слов с помощью documents путем создания временного файла с writeTextDocument, а затем обучает встраивание с помощью временного файла.

пример

emb = trainWordEmbedding(___,Name,Value) указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Например, 'Dimension',50 определяет размер вложения слова равным 50.

Примеры

свернуть все

Обучение встраиванию слова размера 100 с помощью текстового файла примера exampleSonnetsDocuments.txt. Этот файл содержит предварительно обработанные версии сонетов Шекспира, с одним сонетом на строку и словами, разделёнными пробелом.

filename = "exampleSonnetsDocuments.txt";
emb = trainWordEmbedding(filename)
Training: 100% Loss: 2.734    Remaining time: 0 hours 0 minutes.
emb = 
  wordEmbedding with properties:

     Dimension: 100
    Vocabulary: [1x502 string]

Просмотр встраивания слова в график разброса текста с помощью tsne.

words = emb.Vocabulary;
V = word2vec(emb,words);
XY = tsne(V);
textscatter(XY,words)

Figure contains an axes. The axes contains an object of type textscatter.

Обучение встраиванию слов с использованием данных примера 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]

Визуализация встраивания слова в график разброса текста с помощью tsne.

words = emb.Vocabulary;
V = word2vec(emb,words);
XY = tsne(V);
textscatter(XY,words)

Figure contains an axes. The axes contains an object of type textscatter.

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

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

Укажите размер вложения слова равным 50. Чтобы уменьшить количество слов, отбрасываемых моделью, установите 'MinCount' до 3. Чтобы дольше тренироваться, установите число эпох равным 10.

emb = trainWordEmbedding(documents, ...
    'Dimension',50, ...
    'MinCount',3, ...
    'NumEpochs',10)
Training: 100% Loss: 0        Remaining time: 0 hours 0 minutes.
emb = 
  wordEmbedding with properties:

     Dimension: 50
    Vocabulary: [1x750 string]

Просмотр встраивания слова в график разброса текста с помощью tsne.

words = emb.Vocabulary;
V = word2vec(emb, words);
XY = tsne(V);
textscatter(XY,words)

Figure contains an axes. The axes contains an object of type textscatter.

Входные аргументы

свернуть все

Имя файла, указанное как строковый скалярный или символьный вектор.

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

Исходные документы, указанные как tokenizedDocument массив.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Dimension',50 определяет размер вложения слова равным 50.

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

Пример: 300

Размер контекстного окна, заданного как разделенная запятыми пара, состоящая из 'Window' и неотрицательное целое число.

Пример: 10

Модель, заданная как разделенная запятыми пара, состоящая из 'Model' и 'skipgram' (пропустить грамм) или 'cbow' (непрерывный пакет слов).

Пример: 'cbow'

Коэффициент для определения скорости отбрасывания слов, определяемый как разделенная запятыми пара, состоящая из 'DiscardFactor' и положительный скаляр. Функция отбрасывает слово из окна ввода с вероятностью 1-sqrt(t/f) - t/f где f - однозначная вероятность слова, и t является DiscardFactor. Обычно, DiscardFactor находится в диапазоне 1e-3 через 1e-5.

Пример: 0,005

Функция потерь, заданная как разделенная запятыми пара, состоящая из 'LossFunction' и 'ns' (отрицательная выборка), 'hs' (иерархическое программное обеспечение), или 'softmax' (softmax).

Пример: 'hs'

Количество отрицательных выборок для функции отрицательных потерь выборки, указанной как пара, разделенная запятыми, состоящая из 'NumNegativeSamples' и положительное целое число. Этот параметр допустим только в том случае, если LossFunction является 'ns'.

Пример: 10

Количество периодов обучения, указанное как разделенная запятыми пара, состоящая из 'NumEpochs' и положительное целое число.

Пример: 10

Минимальное число слов, включаемых во вложение, указанное как пара, разделенная запятыми, состоящая из 'MinCount' и положительное целое число. Функция отбрасывает слова, число которых меньше MinCount время в данных обучения из словаря.

Пример: 10

Диапазон включения для подслова n-grams, указанного как пара, разделенная запятыми, состоящая из 'NGramRange' и вектор из двух неотрицательных целых чисел [min max]. Если вы не хотите использовать n-grams, то установите 'NGramRange' кому [0 0].

Пример: [5 10]

Начальная скорость обучения, указанная как пара, разделенная запятыми, состоящая из 'InitialLearnRate' и положительный скаляр.

Пример: 0.01

Скорость обновления скорости обучения, указанная как пара, разделенная запятыми, состоящая из 'UpdateRate' и положительное целое число. Скорость обучения линейно уменьшается до нуля в шагах каждые N слов, где N - UpdateRate.

Пример: 50

Уровень детализации, указанный как разделенная запятыми пара, состоящая из 'Verbose' и одно из следующих:

  • 0 - не отображать подробные выходные данные.

  • 1 - Отображение информации о ходе выполнения.

Пример: 'Verbose',0

Выходные аргументы

свернуть все

Встраивание выходного слова, возвращаемое как wordEmbedding объект.

Подробнее

свернуть все

Языковые соображения

Ввод файла в trainWordEmbedding Для функции требуются слова, разделенные пробелами.

Для файлов, содержащих неанглийский текст, может потребоваться ввести tokenizedDocument массив в trainWordEmbedding.

Создание tokenizedDocument массив из предварительно закодированного текста, используйте tokenizedDocument и установить 'TokenizeMethod' опция для 'none'.

Совет

Обучающий алгоритм использует количество потоков, заданное функцией maxNumCompThreads. Сведения об изменении количества потоков, используемых MATLAB ®, см. в разделеmaxNumCompThreads.

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