www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

 Читать далее...

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

 Читать далее...

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

 Читать далее...

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 13950
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 14075
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 11520
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 6125
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 6963
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 6860
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 9666
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 6280
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 6498
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 10671
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 14183
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 15587
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 18096
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 12933
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 10932
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 9144
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 7564
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 6387
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 5991
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 6333
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 LSA: геометрическое представление смысла. Как из матрицы слов получить пространство тем

Архив номеров / 2026 / Выпуск №5 (282) / LSA: геометрическое представление смысла. Как из матрицы слов получить пространство тем

Рубрика: Карьера/Образование /  Машинное обучение на практике

ВИЗИТКА



Михаил Орлов,
data scientist направления R&D AI компании Bell Inegrator

 

LSA: геометрическое представление смысла
Как из матрицы слов получить пространство тем

В прошлой статье был разобран подход TF—IDF: почему слово «помогите» — это шум, а слово «смс-код» — уже содержательная составляющая, и как вообще из текста получить вектор весов.

 

Теперь возникает следующий вопрос: раз уже затронуты векторы, что, если смысл текста — это оси в пространстве?

Поясним подробнее: представим, что есть координатные оси X и Y, которые образуют плоскость. Документ — это точка, которая лежит где-то на этой плоскости. Пусть оси — это не просто геометрические координаты, а векторы из ключевых слов текста, например «авторизация», «оплата», «доставка», «ошибка 403» и т. д. Причем эти оси никто заранее не задавал, они получились самостоятельно из статистики текста. Таких осей может быть больше, чем 2 — и это даже хорошо. Все описанное выше является основой для понимания латентно-семантического анализа.


Как перейти от текста к геометрии?

Допустим, есть коллекция документов. Формируется словарь (включающий все слова / токены, аналогично алгоритму «мешок слов») и строится матрица: [1]

  • по строкам — слова (terms);
  • по столбцам — документы (docs);
  • в клетках — веса (обычно для их получения используется метод TF—IDF, но можно использовать и что-то другое).

Получается матрица A размера «термы ´ документы». Если есть, например, 50 000 диалогов технической поддержки и 100 000 слов в словаре (слов не сильно больше, потому что в таких диалогах они достаточно однообразные), матрица получается огромной и почти полностью состоит из нулей — такая матрица называется разреженной. Однако в ней уже содержится вся нужная информация: какие слова совместно с другими встречаются в одном тексте, с какой частотой, что в каких текстах важно, что является редкостью, а что — шумом.

В таком представлении каждый документ — это столбец матрицы, то есть вектор в пространстве с размерностью, равной числу слов. В приведенном примере размерность вектора равна 100 000. Такие масштабы могут испугать человека, но не математику.

В чем же суть LSA? Подход исходит из того, что нет смысла оперировать 100 000 измерениями. Предлагается найти 200–500 осмысленных направлений и работать уже с ними.

Где здесь магия SVD и магия ли это?

SVD (Singular Value Decomposition) звучит как заклинание, которое произносит любой, кто хочет показаться умным на собеседовании. Но, по сути, это довольно простой алгоритм.

Матрица A раскладывается следующим образом:

A = UΣVΤ.

U — ортогональная матрица, связывающая слова и латентные компоненты;
Σ — диагональная матрица с неотрицательными значениями, показывающая, насколько сильна каждая ось;
V — ортогональная матрица, связывающая компоненты и документы.

Основная идея заключается в том, что нет необходимости использовать всю информацию из исходной матрицы. Берутся только первые k самых сильных компонент (например, k = 200): A ≈ UkΣkVkΤ.

Таким образом происходит сжатие информации: извлекается суть без мелких подробностей и лишнего шума.


Как LSA видит скрытые смыслы

Представим, что есть 10 000 обращений в техническую поддержку. Среди них встречаются различные формулировки:

  • «не могу войти»;
  • «не проходит авторизация»;
  • «логин не работает»;
  • «смс-код не приходит»;
  • «код подтверждения не пришел».

Если использовать только базовые методы, совпадений окажется немного: кто-то пишет «вход», кто-то — «авторизация».

Эти слова живут в похожих окружениях. Они встречаются в тех же документах, где есть слова «смс», «код», «аккаунт», «подтверждение», «ошибка».

LSA улавливает статистику совместных появлений и как бы говорит: «Похоже, есть скрытая ось, которую можно назвать „вход / авторизация“». Даже если в тексте не было слова «авторизация», документ может получить высокий вес по соответствующей оси, потому что в нем присутствовали «вход», «смс-код», «аккаунт».

Таким образом, LSA делает первую настоящую «семантику» без нейросетей — за счет линейной алгебры и SVD.

Рассмотрим небольшой пример для наглядности.

Допустим, есть 6 документов:

1) «Не приходит смс-код при входе».
2) «Ошибка авторизации, не могу войти в аккаунт».
3) «Логин неверный, доступ запрещен».
4) «Списали деньги дважды, возврат».
5) «Не проходит оплата картой».
6) «Где чек и история платежей?»

Если посмотреть на слова, то в обращениях 1–3 речь идет о попытке входа, а в обращениях 4–6 — об оплате, при этом формулировки различаются.

После применения LSA часто наблюдается следующая картина:

  • документы (1–3) становятся близкими в латентном пространстве;
  • документы (4–6) также оказываются близкими друг к другу;
  • расстояние между этими группами увеличивается.

Так, вместо 100 000 координат появляется условно 200, где 1-я координата — «вход», 2-я — «оплата», 3-я — «доставка» и так далее (названия условны, поскольку модель таких понятий, естественно, не знает).


Где используется подход

(1) Кластеризация обращений

При наличии десятков тысяч обращений или диалогов LSA — быстрый и надежный способ:

  • сжать данные;
  • построить кластеры;
  • получить «тематики» без ручной разметки;
  • а затем либо разметить кластеры, либо обучать на них классификатор.

На практике LSA часто используют как первый шаг для того, чтобы посмотреть, какие крупные группы вообще существуют.

(2) Поиск дублей (дедупликация)

Частая проблема — одно и то же обращение создается десятки раз с небольшими изменениями формулировок. TF—IDF уже умеет решать эту задачу, но LSA нередко работает существенно лучше, особенно когда смысл одинаков, а слова разные, например:

  • «не приходит код»
  • «смс не пришла»
  • «код подтверждения не поступает»

После применения LSA поиск дублей выполняется по косинусному сходству (cosine similarity) в латентном пространстве.

(3) Семантический поиск «на минималках»

Сегодня модно говорить «эмбеддинги», «BERT», «трансформеры». Однако при наличии корпоративных данных, требований к скорости, необходимости объяснимости и ограничениях по ресурсам связка TF—IDF + LSA остается вполне рабочим базовым «семантическим» поиском. В ряде случаев это даже лучший вариант при таких ограничениях.

(4) Рекомендации и поиск похожих документов

LSA обеспечивает более устойчивую похожесть по сравнению с чистым bag-of-words в ситуациях, когда варьируются исходные формулировки.


Как работает связка TF—IDF + LSA

Попробуем визуализировать результаты работы связки TF—IDF + LSA в двумерном пространстве:

  1. Берем документы и применяем к ним подход TF—IDF.
  2. Применяем алгоритм LSA (SVD) с уменьшением количества измерений до 200.
  3. Отрисовываем итоговую структуру на плоскости 2D.

На данном примере видно, как из облака точек мы получаем понятную картинку благодаря LSA.


В каких случаях подход LSA может подвести

LSA — достаточно мощный инструмент, но не идеальный, вот почему:

  1. Линейность. Алгоритм использует линейное приближение; сложные нелинейные зависимости он не ловит
  2. Омонимы. Одно слово — разные смыслы: «корзина» (баскетбольная) и «корзина» (потребительская) могут смешиваться, если корпус слов маленький или контексты пересекаются.
  3. Выбор k. Слишком маленькое k ведет к потере смысла, слишком большое — к сохранению шума. Поэтому обычно параметр подбирается эмпирически под конкретные метрики поиска или кластеризации.

Таким образом, TF—IDF позволяет оценить вес слов: что является содержательным, а что — фоном. А LSA берет TF—IDF-матрицу и находит скрытые оси (латентные факторы), а также переносит документы в более структурированное пространство, в котором проще искать похожие тексты, кластеры и дубли. И все это — без нейросетей, на базе линейной алгебры и SVD.



Ключевые слова:
LSA, латентно-семантический анализ, обработка текста, NLP, TF-IDF, SVD, сингулярное разложение, векторы, матрицы, машинное обучение


Подпишитесь на журнал

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru