Рабочие процессы Латентно-Семантического Анализа

Wolfram Language — Летняя Конференция в Санкт-Петербурге 2023
June 2023

Антон Антонов
MathematicaForPrediction at GitHub
MathematicaForPrediction at WordPress

Абстракт

В этой презентации мы описываем типичные этапы рабочего процесса Латентно-Семантического Анализа (ЛСА) и демонстрируем их на нескольких примерах:

Извлечение тем из руководств и романов

И использование в языковых переводах.

Деконструкция коллекции изображений

И создание новых с использованием полученных основ.

Создание определенных типов визуальных эффектов.

Как в фильме "Сторожевые люди" (2009).

Маска Роршаха.

Будут обсуждаться связи с другими математическими субкультурами и субкультурами науки о данных.

ЛСА через вопросы и ответы

- Какие данные используются?

- Каков типичный пример рабочего процесса?

- Каковы типичные области применения ЛСА?

- Зачем использовать ЛСА?

- Что является фундаментальным философским или научным предположением для ЛСА?

- Каков наиболее важный и/или основополагающий шаг ЛСА?

- В чем разница между ЛСА и латентно-семантическим индексированием (ЛСИ)?

- Каковы альтернативы?
  - Использование нейронных сетей?

- Как ЛСА используется для определения сходства между двумя заданными текстами?

- Как ЛСА используется для оценки близости фраз?

- Как сравниваются основные методы уменьшения размерности?

SVD, NNMF, ICA

Flowchart

Import["~/Downloads/LSA-workflows.pdf","PageGraphics"][[1]]

Первые примеры

"MonadicLatentSemanticAnalysis"

speeches=ResourceData[ResourceObject["Presidential Nomination Acceptance Speeches"]];
texts=Normal[speeches[[All,"Text"]]];

res=
({{, LSAMonUnit }})[texts]⟹
({{, LSAMonMakeDocumentTermMatrix }})[{},Automatic]⟹
({{, LSAMonApplyTermWeightFunctions }})[]⟹
({{, LSAMonExtractTopics }})["NumberOfTopics"->20,Method->"SVD"]⟹
({{, LSAMonEchoTopicsTable }})[Dividers->All]⟹
({{, LSAMonExtractStatisticalThesaurus }})[{"war","nuclear","health","education"},10]⟹
({{, LSAMonEchoStatisticalThesaurusTable }});

Выделение темы над руководством по Раку

Краткое описание процедуры

Руководство по раку дается на трех разных языках: английском, испанском, русском.

Руководство разделено на главы, и соответствующие главы на разных языках сшиты вместе.

Применяется типичный рабочий процесс LSA:

Матрица документ-термин

Выделение тем

Извлечение статистического тезауруса

Данные

aDocs[[21]]

Матрица документ-термин

AbsoluteTiming[
lsaRakuGuide=
LSAMonUnit[aDocs]⟹
LSAMonMakeDocumentTermMatrix[{},Automatic]⟹
LSAMonEchoDocumentTermMatrixStatistics["ParetoPrinciplePlots"->True,PlotTheme->"Scientific"]⟹
LSAMonApplyTermWeightFunctions["IDF","None","Cosine"];
]

Извлечение темы

AbsoluteTiming[
lsaRakuGuide=
lsaRakuGuide⟹
LSAMonExtractTopics["NumberOfTopics"->60,"MinNumberOfDocumentsPerTerm"->1,Method->"NNMF",MaxSteps->12];
]

lsaRakuGuide⟹
LSAMonEchoTopicsTable["NumberOfTableColumns"->8,"NumberOfTerms"->20];

Извлечение статистического тезауруса

lsaRakuGuide⟹
LSAMonEchoStatisticalThesaurus["Words"->{"regex","interface","expression","operator","object","programming","read","recommended","variable","tmtowtdi"}];

Деконструкция коллекции случайных мандал

"Comparison of dimension reduction algorithms over mandala images generation"

"LSA methods comparison over random mandalas deconstruction -- WL"

"LSA methods comparison over random mandalas deconstruction -- Python"

"Re-exploring the structure of Chinese character images"

Изготовление маски Роршаха (из фильма "Watchmen" 2009)

"Rorschach mask animations projected over 3D surfaces"

"Details in Rorschach mask animations making"

Ссылки

Articles

[AA1] Anton Antonov, A monad for Latent Semantic Analysis workflows, (2019), MathematicaForPrediction at GitHub.

Packages and paclets

[AA2] Anton Antonov, Monadic Latent Semantic Analysis Mathematica package, (2017), MathematicaForPrediction at GitHub.
    URL: https://github.com/antononcube/MathematicaForPrediction/blob/master/MonadicProgramming/MonadicLatentSemanticAnalysis.m .

Videos

[AAv1] Anton Antonov, "Making of Rorschach mask 2D and 3D animations", (2022), YouTube/@AAA4Prediction.

Setup

Install paclets

PacletInstall["AntonAntonov/MonadMakers"]

PacletInstall["AntonAntonov/MonadicLatentSemanticAnalysis"]

PacletInstall["AntonAntonov/DimensionReducers"]

PacletInstall["AntonAntonov/DataReshapers"]

Load paclets

Needs["AntonAntonov`MonadicLatentSemanticAnalysis`"]
Needs["AntonAntonov`DimensionReducers`"]
Needs["AntonAntonov`DataReshapers`"]

Raku manuals

aDocs=;