fitlsa

Подходящая модель LSA

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

Синтаксис

mdl = fitlsa(bag,numComponents)
mdl = fitlsa(counts,numComponents)
mdl = fitlsa(___,Name,Value)

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

Соответствуйте модели Latent Semantic Analysis к набору документов.

Загрузите данные в качестве примера. Файл 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 th слово словаря, появляется в i th документ. В противном случае значение, counts(i,j) соответствует числу раз i th слово словаря, появляется в j th документ.

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

Примечание

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

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

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

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

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

свернуть все

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

Введенный в R2017b