fitlsa

Подбирайте модель LSA

Описание

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

пример

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: ["fairest"    "creatures"    "desire"    ...    ]
        NumWords: 3092
    NumDocuments: 154

Подбирайте модель LSA с 20 компонентами.

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

              NumComponents: 20
           ComponentWeights: [2.7866e+03 515.5889 443.6428 316.4191 ... ]
             DocumentScores: [154x20 double]
                 WordScores: [3092x20 double]
                 Vocabulary: ["fairest"    "creatures"    "desire"    ...    ]
    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: [2.7866e+03 515.5889 443.6428 316.4191 ... ]
             DocumentScores: [154x20 double]
                 WordScores: [3092x20 double]
                 Vocabulary: ["1"    "2"    "3"    "4"    "5"    ...    ]
    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,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

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

Примечание

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

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

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

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

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

свернуть все

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

Введенный в R2017b