Модель Latent semantic analysis (LSA)
Модель скрытого семантического анализа (LSA) обнаруживает отношения между документами и словами, которые они содержат. Модель LSA является инструментом сокращения размерности, полезным для выполнения низко-размерных статистических моделей на высоко-размерных подсчетах слов. Если модель была подходящим использованием мешка n модели граммов, то программное обеспечение обрабатывает N-граммы как отдельные слова.
Создайте модель LSA с помощью fitlsa
функция.
NumComponents
— Количество компонентовКоличество компонентов в виде неотрицательного целого числа. Количество компонентов является размерностью итоговых векторов. Изменение значения NumComponents
изменяет длину итоговых векторов, не влияя на начальные значения. Можно только установить NumComponents
быть меньше чем или равным количеству компонентов раньше подбирало модель LSA.
Пример: 100
FeatureStrengthExponent
— Экспонента, масштабирующая сильные места компонента функцииЭкспонента, масштабирующая сильные места компонента функции для DocumentScores
и WordScores
свойства, и transform
функция в виде неотрицательного скаляра. Модель LSA масштабирует свойства их сингулярными значениями (сильные места функции) с экспонентой FeatureStrengthExponent/2
.
Пример: 2.5
ComponentWeights
— Веса компонентаВеса компонента в виде числового вектора. Веса компонента модели LSA являются сингулярными значениями, в квадрате. ComponentWeights
1 NumComponents
вектор, где j th запись соответствует весу j компонента. Компоненты упорядочены путем уменьшения весов. Можно использовать веса, чтобы оценить важность компонентов.
DocumentScores
— Выиграйте векторы на входной документВыиграйте векторы на входной документ в виде матрицы. Множество документа модели LSA является векторами счета в более низком мерном пространстве каждого документа, используемого, чтобы подбирать модель LSA. DocumentScores
D-by-NumComponents
матрица, где D является количеством документов, раньше подбирала модель LSA. (i,j) th запись DocumentScores
соответствует счету j компонента в документе i.
WordScores
— Баллы Word на компонентБаллы Word на компонент в виде матрицы. Множество слова модели LSA является множеством каждого слова в каждом компоненте модели LSA. WordScores
V-by-NumComponents
матрица, где V является количеством слов в Vocabulary
. (v,j) th запись WordScores
соответствует счету слова v в j компонента.
Vocabulary
— Уникальные слова в моделиУникальные слова в модели в виде вектора строки.
Типы данных: 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: ["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
Создайте модель сумки слов из некоторых текстовых данных.
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: ["I" "enjoy" "ham" "," ... ] 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')
bagOfWords
| fitlsa
| transform
| ldaModel
| lsaModel
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.