lsaModel

Модель Latent semantic analysis (LSA)

Описание

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

Создание

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

Свойства

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

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

Пример: 100

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

Пример: 2.5

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

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

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

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

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

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

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

Примеры

свернуть все

Соответствуйте модели 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

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

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