lsaModel

Модель латентного семантического анализа (LSA)

Описание

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

Создание

Создайте модель LSA с помощью fitlsa функция.

Свойства

расширить все

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

Пример: 100

Сильные стороны компонента функции экспоненты для DocumentScores и WordScores свойства, и transform функция, заданная как неотрицательный скаляр. Модель LSA масштабирует свойства по их сингулярным значениям (сильные стороны функций) с показателем FeatureStrengthExponent/2.

Пример: 2.5

Веса компонентов, заданные как числовой вектор. Веса компонентов модели LSA являются сингулярными значениями в квадрате. ComponentWeights является 1-байт- NumComponents вектор, где j-я запись соответствует весу j компонента. Компоненты упорядочиваются путем уменьшения веса. Можно использовать веса для оценки важности компонентов.

Балльные векторы на входной документ, заданные как матрица. Счета документа модели LSA являются векторами счета в более низком размерном пространстве каждого документа, используемого для соответствия модели LSA. DocumentScores является D -by- NumComponents матрица, в которой D количество документов, используемых для соответствия модели LSA. (i,j)-я запись DocumentScores соответствует счета компонента, j в i документа.

Счета слов по компоненту, заданные как матрица. Слово счетов модели LSA является счетами каждого слова в каждом компоненте модели LSA. WordScores является V -by- NumComponents матрица, где V - количество слов в Vocabulary. (v,j)-я запись WordScores соответствует счету слов, v в компонентных j.

Уникальные слова в модели, заданные как строковый вектор.

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

Функции объекта

transformПреобразуйте документы в низкомерное пространство

Примеры

свернуть все

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

Загрузите данные примера. Файл 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

Создайте модель мешка слов из некоторых текстовых данных.

str = [
    "I enjoy ham, eggs and bacon for breakfast."
    "I sometimes skip breakfast."
    "I eat eggs and ham for dinner."
    ];
documents = tokenizedDocument(str);
bag = bagOfWords(documents);

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

numComponents = 2;
exponent = 0.5;
mdl = fitlsa(bag,numComponents, ...
    'FeatureStrengthExponent',exponent)
mdl = 
  lsaModel with properties:

              NumComponents: 2
           ComponentWeights: [16.2268 4.0000]
             DocumentScores: [3x2 double]
                 WordScores: [14x2 double]
                 Vocabulary: [1x14 string]
    FeatureStrengthExponent: 0.5000

Вычислите расстояние косинуса между векторами оценки документов, используя pdist. Просмотрите расстояния в матрице D использование squareform. D(i,j) обозначает расстояние между документом i и j.

dscores = mdl.DocumentScores;
distances = pdist(dscores,'cosine');
D = squareform(distances)
D = 3×3

         0    0.6244    0.1489
    0.6244         0    1.1670
    0.1489    1.1670         0

Визуализируйте сходство между документами путем построения векторов счета документа на компасном графике.

figure
compass(dscores(1,1),dscores(1,2),'red')
hold on
compass(dscores(2,1),dscores(2,2),'green')
compass(dscores(3,1),dscores(3,2),'blue')
hold off
title("Document Scores")
legend(["Document 1" "Document 2" "Document 3"],'Location','bestoutside')

Введенный в R2017b