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