Алгоритм LSA для поиска похожих документов > NetPeak - Независимость и осознанность
NetPeak Biz Tech    


Алгоритм LSA для поиска похожих документов

Алгоритм LSA для поиска похожих документов

< >

И снова наш аналитический отдел подготовил материал для читателей блога Netpeak. Передаю привет Кириллу Левенцу — он проделал титанический труд, чтобы изложить понятным языком не самые простые вещи.

Среди огромного числа алгоритмов, которые используются для поиска и анализа информации, особое место занимают те, чья цель — обнаружение скрытых закономерностей или неочевидных зависимостей.

Используя семантический анализ текста, мы можем сказать, например, что два текста похожи, даже если эта похожесть выражена косвенно. Или например «лыжи» и «автомобиль» по отдельности относятся к разным категориям, но будучи использованы вместе, могут быть интерпретированы в таких категориях, как «спорт» и «отдых».

Об одном из методов, который применяется для рекомендательных систем (коллаборативная фильтрация), информационного семантического поиска, разделения текстов по тематикам без обучения и многих других и пойдет речь далее. Метод этот называется латентно-семантическим анализом (LSA — Latent semantic ***ysis). Можно сказать, что это продвинутый SEO анализ текста.

Рассмотрим более подробно, что это за метод и как он работает

Уже из названия можно сделать вывод о том, что он должен делать, а именно находить скрытые смысловые взаимосвязи между объектами (будь-то слова в тексте или товары в магазине). Для текстов на естественных языках такой скрытой закономерностью может быть, например, наличие определенного набора слов в определенной теме. Представим себе такую задачу: у нас есть коллекция документов и мы хотим научиться отвечать на вопрос: два документа близки по тематике или нет. Вывод о схожести можно сделать, основываясь на том, какие слова и в каких пропорциях входят в каждый из документов.

Чтобы подготовить данные для этой задачи, используют подход, который называется «мешок слов».

Его суть состоит в том, что для нас неважен порядок слов в документе, в каких морфологических формах они представлены, а важно только количество вхождений конкретных слов. Предположим, что каждую тему можно охаpaктеризовать определенным набором слов и частотой их появления. Если в тексте конкретный набор слов употрeбляется с определенными частотами, то текст принадлежит к определенной теме.

Основываясь только на этой информации, строится таблица «слово-документ». Где строки соответствуют словам (а точнее, их леммам), а столбцы - документам. В каждой ячейке хранится 1, если слово есть в документе, и 0 - если нет. Хотя такой вариант и самый простой, но не самый лучший. Вместо 0 и 1 можно использовать, например, частоту слова в документе или tf-idf слова. Такой способ представления текстов в виде таблицы (или матрицы) называется векторной моделью текста. Теперь, для того чтобы сравнить два документа, нужно определить меру схожести двух столбцов таблицы.

Сделать это можно по-разному:

  • скалярное произведение векторов - столбцов таблицы;
  • косинусное расстояние (пожалуй самое адекватное) ;
  • евклидовым расстоянием;
  • манхэттенским расстоянием.

Чтобы лучше понять все вышесказанное, изобразим это графически на простом примере двух небольших текстов. Один  текст про письменность, другой про неопределенность Гeйзенберга. Стоп-слова удалены, а остальные приведены к основной форме (без окончаний). Каждая точка на графике — слово. На осях отложено, сколько раз слово встретилось в каждом документе. Т.е. если слово встретилось в тексте про неопределенность 3 раза, а в тексте про письменность 2 раза, то на рисунке это слово изобразим точкой с координатами (3,2).

Видно, что в этом примере некоторые слова встречались и в одном и в другом тексте приблизительно одинаково часто («свободн», «друг», «звук» и так далее). Такие слова не дают возможности отличить тексты один от другого и в принципе сравнимы со стоп-словами. Но есть слова, которые хаpaктерны только одному из текстов. Имея такое представление текста, мы можем определять близость каждого слова к теме (как косинус угла между вектором с началом в (0;0) и концом в точке слова и осью, соответствующей документу). Если же такого слова в коллекции нету, то о нем мы ничего не можем сказать.

Для сравнения документов можно подсчитать сумму векторов-слов, которые в них входят и опять же оценить расстояние между ними. В рассмотренном примере слова распределились хорошо, так как тематики существенно разные. А если тематики схожи, то может получиться такая картина:

По сравнению с предыдущей картинкой видно, что документы существенно похожи, и, кроме того, есть слова, которые хаpaктеризуют общую тематику для обоих текстов (например \"язык\" и \"письмен\"). Такие слова можно назвать ключевыми для данной темы. Т.е. напрашивается вывод, что имея такое представление текстов, мы теоретически можем сгруппировать документы по близости их содержимого, и таким образом построить тематическое разбиение коллекции текстов. В частности может оказаться, что каждый документ - это отдельная тема. Также можно искать документы по запросу, при этом могут находиться документы, которые не содержат слов из запроса, но близки ему по теме.

Но в жизни оказывается, что документов и слов очень много (гораздо больше чем тем) и возникают следующие проблемы:

  • размерности (вычисление близости между векторами становится медленной процедурой) ;
  • зашумленности (например, посторонние небольшие вставки текста не должны влиять на тематику) ;
  • разряженности (большинство ячеек в таблице будут нулевыми).

В таких условиях довольно логично выглядит идея, вместо таблицы \"слово-документ\" использовать что-то типа \"слово-тема\" и \"тема-документ\". Решение именно такой задачи предлагает LSA. Правда, интерпретация полученных результатов может оказаться затруднительной.

На рисунке приведен пример карты двух художественных текстов. Видно, что у них есть как свои особенности, так и много общего, и можно выделить новую тематику. Если говорить в терминах линейной алгебры, то нам нужно такое представление:

Числа в таблицах в общем случае не обязательно будут именно 0 и 1. Имея такое представление, мы можем кроме оценки близости слов и документов, также определять важные слова для каждой тематики.

Ограничения LSA:

  1. Невозможно получить тематик больше чем документов/слов.
  2. Семантическое значение документа определяется набором слов, которые, как правило, идут вместе.
  3. Документы рассматриваются как просто наборы слов. Порядок слов в доку­ментах игнорируется. Важно только то, сколько раз то или иное слово встречается в документе.
  4. Каждое слово имеет единственное значение.
  5. Недостаток LSA — предположение о том, что карта слов в документах не имеет вид нормального распределения. С этой проблемой справляются другие модификации метода (вероятностный LSA и LDA).

LSA включает в себя следующие этапы:

  1. Удаление стоп-слов, стемминг или лемматизация слов в документах;
  2. Исключение слов, встречающихся в единственном экземпляре;
  3. Построение матрицы слово-документ (бинарную есть/нет слова, число вхождений или tf-idf) ;
  4. Разложение матрицы методом SVD (A = U * V * WT) ;
  5. Выделение строк матрицы U и столбцов W, которые соответствуют наибольшим сингуляр­ным числам (их может быть от 2-х до минимума из числа терминов и документов). Конкретное количество учитываемых собственных чисел определяется предполагаемым количеством семантических тем в задаче. А вообще чем больше сингулярное число, тем сильнее в коллекции проявлена тема.

В итоге получается нечто такое:

Пример с небольшими документами

[Взят из статьи Indexing by Latent Semantic ***ysis, Scott Deerwester, Susan T. Dumais, George W. Furnas, and Thomas K. Landauer, Richard Harshman]

Пусть имеется следующий набор заголовков-документов:

  • c1: Human machine interface for ABC computer applications
  • c2: A survey of user opinion of computer system response time
  • c3: The EPS user interface management system
  • c4: System and human system engineering testing of EPS
  • c5: Relation of user perceived response time to error measurement
  • m1: The generation of random, binary, ordered trees
  • m2: The intersection graph of paths in trees
  • m3: Graph minors IV: Widths of trees and well-quasi-ordering
  • m4: Graph minors: A survey

Выделяем слова, которые встретились хотя бы в двух заголовках. И строим матрицу слово-документ: в ячейках будем писать количество вхождений слова в до­кумент.

Применяем сингулярное разложение к этой матрице и получаем три матрицы (U, V, WT).

Чтобы иметь возможность визуально оценить результат, выделим только две главные компоненты, соответствующие самым большим сингулярным числам. Используем значения в выделенных столб­цах как координаты и изобразим их в виде точек на плоскости (синим цветом документы, красным - слова, кругами - возможные тематики).

Рассмотрим расстояние между каждой парой слов. Было (желтым цветом выделены значения выше 0):

Стало после снижения размерности (зеленым цветом выделены значения больше 0,8):

Как и по картинке, так и по таблице видно, что термины образовали 2 группы (довольно условно) и по сравнению с исходной матрицей связи значительно усилены (как укрепились исходные, так и появились новые):

  • [human, interface, computer, user, EPS, response, time],
  • [survey, trees, graph, minors].

Между каждой парой документов.

Было:

Стало:

Отношение термин документ.

Было:

Стало:

Рассмотрим еще один пример: пусть имеются три документа, каждый - на свою тематику (первый про автомобили, второй про спорт и третий про компьютеры). Используя LSA, изобразим двумерное представление семантического прострaнcтва, и как в нем будут представлены слова (красным цветом), запросы (зеленым) и документы (синим). Напомню, что все слова в документах и запросах прошли процедуру лемматизации или стемминга.

Видно, что тема \"компьютер\" хорошо отделилась от двух других. А вот \"спорт\" и \"авто\" довольно близки друг другу. Для каждой темы проявились свои ключевые слова. Зеленым на рисунке изображен запрос \"автомобил колес\". Его релевантность к документам имеет следующий вид:

  1. \\\'sport.txt\\\' - 0.99990845
  2. \\\'auto.txt\\\' - 0.99987185
  3. \\\'computer.txt\\\' - 0.031289458

Из-за близости тем \"спорт\" и \"авто\" довольно сложно точно определить, к какой теме он принадлежит. Но точно не к \"компьютерам\". Если в системе, обученной на этих документах, попытаться определить релевантность к образовавшимся темам слова \"рынок\", то в ответ мы получим 0 (т.к. это слово в документах не встречалось ни разу). Добавим в систему документ по теме \"финансы\". Будем снова искать слово \"рынок\".

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

Релевантность к темам будет такой:

  1. \\\'finance.txt\\\' - 0.99948204
  2. \\\'sport.txt\\\' - 0.97155833
  3. \\\'auto.txt\\\' - 0.23889101
  4. \\\'computer.txt\\\' - -0.24506855

Итак подведем итог:

  1. LSA позволяет снизить размерность данных - не нужно хранить всю матрицу слово-документ, достаточно только сравнительно небольшого набора числовых значений для описания каждого слова и документа.
  2. Получаем семантическое представление слов и документов - это позволяет находить неочевидные связи между словами и документами.
  3. Из минусов - очень большая вычислительная сложность метода.



Комментарии:

Сплит-тест — скоростное шоссе к высокой конверсии

Сплит-тест — скоростное шоссе к высокой конверсии 5 кейсов отлично иллюстрируют правила юзабилити и находки веб-аналитиков....

10 04 2026 7:42:24

Как добавить время работы в объявления Google Ads

Как добавить время работы в объявления Google Ads Google внедрил новую возможность выделить объявление — автоматическое добавление часов работы. Давайте разберемся, как добавить эту полезную информацию в расширения объявлений...

09 04 2026 1:38:15

Перфекционизм, отмена: как маркетологам писать статьи

Перфекционизм, отмена: как маркетологам писать статьи Личный опыт экс-главреда экс-блога Netpeak (сейчас — Netpeak Journal): о работе с информацией, мотивации написания, редактуре черновика, подаче информации по степени важности, выделении главного и составлении окончательной версии текста. Как сделать текст логичным и полезным? Узнайте!...

08 04 2026 21:43:35

Коммуникация брендов на карантине: хорошие примеры SMM и PR

Что постить предпринимателям в соцсетях. Несколько примеров уместной работы SMM- и PR-специалистов, которые прямо и четко помогают озвучить позицию бизнеса в период карантина. Узнайте больше, чем действовать правильно!...

07 04 2026 14:23:48

Как составить и анализировать KPI для PR-менеджера

Как составить и анализировать KPI для PR-менеджера PR должен решать задачи бизнеса и для этого мало мониторить упоминания компании или бренда, нужно анализировать. С появлением соцсетей пиар изменился. Узнать больше!...

06 04 2026 21:10:40

Как мы делаем SEO-аудит интернет-магазина — пошаговый мануал

Как мы делаем SEO-аудит интернет-магазина — пошаговый мануал Работ по оптимизации всегда много, а выделить приоритеты при продвижении онлайн — непросто. Что стоит проверять и исправлять в первую очередь?...

05 04 2026 7:13:46

Подмена текста с помощью GTM — как быстро изменить контент на сайте

Подмена текста с помощью GTM — как быстро изменить контент на сайте Если вам нужно быстро изменить небольшой объем контента на сайте без доступа к CMS, можно воспользоваться GTM. Как именно, читайте дальше....

04 04 2026 11:19:24

24 способа эффективно использовать поисковые операторы Google

24 способа эффективно использовать поисковые операторы Google Как операторы поисковых запросов Google помогают при продвижении сайта и анализе конкурентов....

03 04 2026 2:26:19

Как подготовить и написать предложение блогеру в Instagram

Как подготовить и написать предложение блогеру в Instagram Чтобы эффективно продвигать товар или услугу в Instagram, необходимо повысить охват целевой аудитории. Одно из возможных решений — привлечение блогеров. Казалось бы, достаточно предложить платное размещение рекламы…...

02 04 2026 0:43:30

Как заявить права на сайт в Google Merchant Center

Как заявить права на сайт в Google Merchant Center Здесь не нужно часами собирать семантику, прописывать уйму расширений и создавать максимально релевантные объявления под каждый товар, а потому вам нужен этот понятный и короткий мануал! Читайте дальше!...

01 04 2026 17:43:54

Про social insight, как один из базовых пунктов брифа

Про social insight, как один из базовых пунктов брифа Важный вопрос, если вы рассчитываете на вирусный эффект своих рекламных идей....

31 03 2026 4:26:25

10 лучших книг о маркетинге

Это не автобиографические романы, не бесплатные учебники и не подборка книжек, чтобы скачать в epub. Это интересная топ литература о маркетинге, которую мы хотим вам посоветовать....

30 03 2026 4:23:43

Прогнозируем поисковую активность в Яндексе с помощью Wordstat и Google Таблиц

Прогнозируем поисковую активность в Яндексе с помощью Wordstat и Google Таблиц Аналитик Алексей Селезнев описал простой алогритм прогнозирования поисковой активности пользователей в Яндексе....

29 03 2026 20:41:25

Кейс по email-маркетингу для интернет-магазина книг Book24 — рост дохода в 2 раза

Кейс по email-маркетингу для интернет-магазина книг Book24 — рост дохода в 2 раза Когда email-маркетинг становится точкой роста. Кейс интернет-магазина книг Book24....

28 03 2026 1:24:38

Бизнес и экология. В компании Herman Miller наняли на работу пчёл

Бизнес и экология. В компании Herman Miller наняли на работу пчёл Сортировка мусора, использование велосипедов вместо автомобилей, озеленение города... В Украине, как правило, так представляют экофрендли бизнес. Зарубежные компании идут дальше....

27 03 2026 2:47:56

Востребованные IT-профессии в Украине — все кроме программирования. Какие курсы выбрать в 2022 году

Востребованные IT-профессии в Украине — все кроме программирования. Какие курсы выбрать в 2022 году Рассказываем об интересных диджитал-специальностях и зарплатах, как обучиться этим профессиям с нуля (в том числе в зрелом возрасте) и можно ли работать удалённо....

26 03 2026 2:55:47

CEO fuckups. Три ошибки опытных руководителей

И как с ними справиться. Рабочие инструкции для Chief Executive Office и менеджеров в целом. Давайте управлять комaндой и собой более эффективно и без выгорания. Узнать больше!...

25 03 2026 12:39:16

Как анализировать эффективность рекламы в Google ***ytics? Часть третья: пользовательские сегменты

Как анализировать эффективность рекламы в Google ***ytics? Часть третья: пользовательские сегменты Зачем нужны пользовательские сегменты клиентов и как их создавать — читайте в завершающей части серии «Как анализировать эффективность рекламы в Google ***ytics?»...

24 03 2026 11:31:11

Как отслеживать изменения на сайте с оповещениями по email

Как отслеживать изменения на сайте с оповещениями по email Как делать мгновенный мониторинг изменений на сайтах? Марина Демьяненко предложила простое решение вопроса с помощью Kimono и таблиц Google....

23 03 2026 6:38:11

Сколько стоил клик в Google Ads в Украине в третьем квартале 2020 года — исследование Netpeak

Сколько стоил клик в Google Ads в Украине в третьем квартале 2020 года — исследование Netpeak Данные, приведенные в исследовании, помогут в составлении медиапланов по продвижению в интернете. Понимания стоимость конверсии и необходимое количество конверсий, вы можете прогнозировать, сколько денег на рекламу нужно выделить....

22 03 2026 17:26:45

Как мы вошли в топ Product Hunt — четкая инструкция от Serpstat

Подробный алгоритм успешного питча на Product Hunt на примере Serpstat...

21 03 2026 3:13:25

Как продвигать бренд в Facebook без бюджета на рекламу

Что делать, если денег нет, но трафик очень нужен: советы по раскрутке бренда в фейсбуке. В бесплатном продвижении главный ресурс — время: часы, дни, недели, месяцы, проведенные на площадке. Как их применить? Читайте!...

20 03 2026 21:20:47

3 фишки про продвижение постов в Facebook

3 фишки про продвижение постов в Facebook Если маркетер хочет привлечь к бренд-контенту дополнительное внимание, стоит воспользоваться опцией Promote post....

19 03 2026 8:16:44

Импорт офлайн-конверсий Google Рекламы. Подробный инструктаж

Импорт офлайн-конверсий Google Рекламы. Подробный инструктаж Крутые площадки для нового инструмента: контекстщикам на заметку!...

18 03 2026 7:11:50

7 признаков некачественных онлайн-курсов

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

17 03 2026 19:12:36

Как создать чат-бот для Telegram-канала — инструкция для администраторов

Как создать чат-бот для Telegram-канала — инструкция для администраторов Как с помощью ботов ControllerBot и BotFather упростить управление каналами и разнообразить контент....

16 03 2026 17:35:15

Кто такой ASO-специалист и чем выгодно освоить эту новую профессию в 2022 году

Кто такой ASO-специалист и чем выгодно освоить эту новую профессию в 2022 году Как научиться продвигать мобильные приложения и заpaбатывать на этом....

15 03 2026 3:59:42

15 фишек контекстной рекламы — итоги круглого стола 8P 2019

Работающие способы повысить эффективность рекламных кампаний...

14 03 2026 6:16:19

Увольнение сотрудника. Алгоритм действий от Netpeak

Сотрудник не справляется? Значит с ним пора прощаться. Эмоции в сторону, действуем по алгоритму....

13 03 2026 14:46:12

Хакерская атака на постаматы: как человек становится заложником технологий

Хакерская атака на постаматы: как человек становится заложником технологий Хакерские атаки с развитием технологий коснулись постаматов и доставки заказов из интернет-магазинов...

12 03 2026 15:25:25

Первый рабочий день в Netpeak

Первый рабочий день в Netpeak Что ждет новичка в его первый день работы в Netpeak — подарки, первые задачи и традиции компании. Все, что нужно знать, чтобы меньше волноваться и влиться в коллектив. Узнать больше!...

11 03 2026 4:15:44

Сколько стоил клик Google Ads и Facebook в Украине в четвертом квартале 2017 года

Сколько стоил клик Google Ads и Facebook в Украине в четвертом квартале 2017 года Данные по 34 миллионам кликов в 24 тематиках и 386 городах...

10 03 2026 0:56:32

Стратегия email-маркетинга: кому и зачем мы шлем письма

Стратегия email-маркетинга: кому и зачем мы шлем письма Старт любых активностей в сфере email-маркетинга — разработка стратегии...

09 03 2026 19:56:48

Алгоритм LSA для поиска похожих документов

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

08 03 2026 8:14:51

Контекстная реклама для интернет-магазина принтов на одежде в Украине — увеличение дохода на 130%

Контекстная реклама для интернет-магазина принтов на одежде в Украине — увеличение дохода на 130% История для заказчиков, которые самостоятельно запускают рекламу...

07 03 2026 17:46:54

3D-печать в Украине — как стать миллионером

3D принтер — заработок миллионеров будущего! Тех, кто сейчас смог купить и начал заниматься ими или использует их в бизнесе, ждет объемный успех через каких-нибудь 3-5 лет....

06 03 2026 2:13:52

Уроки Google ***ytics — как добавить новый сайт в Google ***ytics

Уроки Google ***ytics — как добавить новый сайт в Google ***ytics Как настроить Google ***ytics и как открыть вход другому пользователю: подробный урок....

05 03 2026 6:22:35

«Демография» и «Технология». Сравнение отчетов в GA4 и Google Universal ***ytics

Решили перейти на Google ***ytics 4? Предлагаем разобраться, чем отличается инструмент от предыдущей версии и изучить новинки в отчетах «Демография» и «Технология»....

04 03 2026 4:18:54

Как загрузить статистику рекламных кампаний из API Facebook с помощью языка R

Как загрузить статистику рекламных кампаний из API Facebook с помощью языка R Хотите качественно руководить рекламной кампанией в Facebook? Как подключиться к API Facebook и получение статистики в R — рассказывает Алексей Селезнев....

03 03 2026 6:25:55

Обновление Яндекс.Директ Коммaндер — обзор бета-версии

Обновление Яндекс.Директ Коммaндер — обзор бета-версии В конце октября Яндекс начал открытое бета-тестирование новой версии Коммaндера. Я решила уже сейчас проверить все плюсы и минусы новой версии сервиса...

02 03 2026 12:37:21

Поведенческая экономика и три принципа мотивации человека

Поведенческая экономика и три принципа мотивации человека Как правильно мотивировать и демотивировать себя — теория и кейсы. Как бросить курить, начать бегать и наконец-то приступить к изучению английского. Читать!...

01 03 2026 15:38:18

Дополнение Google ***ytics для Google Taблиц — подробное руководство

Стартовый урок о том, как настроить визуализацию данных из Google ***ytics с помощью Google Spreadsheets...

28 02 2026 3:28:43

Microsoft Power BI в интернет-маркетинге — дайджест полезных публикаций

Microsoft Power BI в интернет-маркетинге — дайджест полезных публикаций Как связать данные, полученные из множества различных источников, и визуализировать их в виде удобных интеpaктивных отчетов...

27 02 2026 20:30:44

Обязательные элементы email-рассылки: проверьте свои письма на привлекательность

Четкая структура полноценного письма с примерами из рассылок крупных компаний: Aviasales, LinguaLeo, Rozetka, Yves Rocher, Pich Shop, Эльдорадо и другие....

26 02 2026 0:42:40

Анна Романишина о школе английского, тайм-менеджменте и продвижении

Анна Романишина о школе английского, тайм-менеджменте и продвижении Интервью с основателем школы английского языка Progress...

25 02 2026 7:23:18

Как быстро перенести кампании из Google Рекламы в Директ

Как быстро перенести кампании из Google Рекламы в Директ Как перенести рекламные кампании из адвордс в директ, используя только Google Editor и Директ Коммaндер? Делимся быстрым и эффективным методом...

24 02 2026 2:54:44

Реклама в Facebook, Instagram и ВКонтакте — размеры баннеров

Реклама в Facebook, Instagram и ВКонтакте — размеры баннеров Шпаргалка по размерам креативов для всех, кто запускает рекламу в соцсетях...

23 02 2026 17:30:37

Как измерять ROI и зачем это делать предпринимателям

О том, как рассчитать коэффициент ROI (ROMI) для выявления эффективности и прибыльности рекламных кампаний...

22 02 2026 17:35:32

Как найти упущенную семантику: кейс сервиса Serpstat (ex. Prodvigator)

Как найти упущенную семантику: кейс сервиса Serpstat (ex. Prodvigator) Упущенная семантика — это ключевые фразы, которые успешно используют в SEO и PPC ваши основные конкуренты, но не используете вы. Как найти упущенную семантику? Читайте кейс сервиса Prodvigator....

21 02 2026 3:40:23

Дополнительные ссылки в Google Рекламе

Быстрый инструмент для повышения CTR — дополнительные ссылки Google Рекламы...

20 02 2026 23:43:55

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::