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 - вероятность unigram слова, и t является DiscardFactor. Обычно DiscardFactor находится в области значений 1e-3 через 1e-5.

Пример: 0.005

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

Пример: 'hs'

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

Пример: 10

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

Пример: 10

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

Пример: 10

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

Пример: [5 10]

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

Пример: 0.01

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

Пример: 50

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

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

  • 1 - отображение информации о прогрессе.

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

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

свернуть все

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

Подробнее о

свернуть все

Языковые факторы

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

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

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

Совет

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

Введенный в R2017b