fitlsa

Подгонка модели LSA

Описание

Модель латентного семантического анализа (LSA) обнаруживает отношения между документами и словами, которые они содержат. Модель LSA является инструментом уменьшения размерности, полезным для выполнения маломерных статистических моделей на высокомерных отсчетах слов. Если модель подгонялась с помощью модели bag-of-n-gams, то программа рассматривает n-gams как отдельные слова.

пример

mdl = fitlsa(bag,numComponents) подходит для модели LSA с numComponents компоненты для модели мешка слов или мешка n-граммов bag.

пример

mdl = fitlsa(counts,numComponents) подходит для модели LSA к документам, представленным матрицей счетчиков слов counts.

пример

mdl = fitlsa(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение".

Примеры

свернуть все

Подбор модели латентного семантического анализа к набору документов.

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

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

Создайте модель мешка слов с помощью bagOfWords.

bag = bagOfWords(documents) 
bag = 
  bagOfWords with properties:

          Counts: [154x3092 double]
      Vocabulary: [1x3092 string]
        NumWords: 3092
    NumDocuments: 154

Подгонка модели LSA с 20 компонентами.

numComponents = 20;
mdl = fitlsa(bag,numComponents)
mdl = 
  lsaModel with properties:

              NumComponents: 20
           ComponentWeights: [1x20 double]
             DocumentScores: [154x20 double]
                 WordScores: [3092x20 double]
                 Vocabulary: [1x3092 string]
    FeatureStrengthExponent: 2

Преобразуйте новые документы в нижнее размерное пространство с помощью модели LSA.

newDocuments = tokenizedDocument([
    "what's in a name? a rose by any other name would smell as sweet."
    "if music be the food of love, play on."]);
dscores = transform(mdl,newDocuments)
dscores = 2×20

    0.1338    0.1623    0.1680   -0.0541   -0.2464    0.0134    0.2604   -0.0205   -0.1127    0.0627    0.3311   -0.2327    0.1689   -0.2695    0.0228    0.1241    0.1198    0.2535   -0.0607    0.0305
    0.2547    0.5576   -0.0095    0.5660   -0.0643    0.1236   -0.0082    0.0522    0.0690   -0.0330    0.0385    0.0803   -0.0373    0.0384   -0.0005    0.1943    0.0207    0.0278    0.0001   -0.0469

Загрузите данные примера. sonnetsCounts.mat содержит матрицу отсчётов слов, соответствующих предварительно обработанным версиям сонетов Шекспира.

load sonnetsCounts.mat
size(counts)
ans = 1×2

         154        3092

Подгонка модели LSA с 20 компонентами. Установите показатель прочности функции равным 4.

numComponents = 20;
exponent = 4;
mdl = fitlsa(counts,numComponents, ...
    'FeatureStrengthExponent',exponent)
mdl = 
  lsaModel with properties:

              NumComponents: 20
           ComponentWeights: [1x20 double]
             DocumentScores: [154x20 double]
                 WordScores: [3092x20 double]
                 Vocabulary: [1x3092 string]
    FeatureStrengthExponent: 4

Входные параметры

свернуть все

Входная модель мешка слов или мешка n-граммов, заданная как bagOfWords объект или bagOfNgrams объект. Если bag является bagOfNgrams объект, затем функция обрабатывает каждый n-грамм как одно слово.

Количество компонентов, заданное в виде положительного целого числа. Это значение должно быть меньше количества входных документов и размера словаря входных документов.

Пример: 200

Счетчики частот слов, заданные как матрица неотрицательных целых чисел. Если вы задаете 'DocumentsIn' чтобы быть 'rows', затем значение counts(i,j) соответствует количеству раз, когда j-е слово словаря появляется во i-м документе. В противном случае значение counts(i,j) соответствует количеству раз, когда i-е слово словаря появляется во j-м документе.

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

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

Пример: 'FeatureStrengthExponent',4 устанавливает показатель прочности функции равным 4.

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

  • 'rows' - Вход является матрицей счетчиков слов со строками, соответствующими документам.

  • 'columns' - Вход является транспонированной матрицей счетчиков слов со столбцами, соответствующими документам.

Эта опция применяется только в том случае, если документы входа заданы как матрица счетчиков слов.

Примечание

Если вы ориентируете матрицу count слов так, чтобы документы соответствовали столбцам и задавали 'DocumentsIn','columns', тогда вы можете испытать значительное сокращение времени оптимизации-выполнения.

Начальный показатель прочности функции, заданный как неотрицательный скаляр. Это значение масштабирует сильные стороны компонента функции для documentScores, wordScores, и transform функций.

Пример: 'FeatureStrengthExponent',4

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Выводит модель LSA, возвращается как lsaModel объект.

Введенный в R2017b