exponenta event banner

lsaModel

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

Описание

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

Создание

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

Свойства

развернуть все

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

Пример: 100

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

Пример: 2.5

Веса компонентов, заданные как числовой вектор. Весами компонентов модели LSA являются сингулярные значения в квадрате. ComponentWeights является 1-by-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