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. Из минусов - очень большая вычислительная сложность метода.



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

Как строить диаграммы в отдельных ячейках Excel и таблицах Google

Как строить диаграммы в отдельных ячейках Excel и таблицах Google Что такое спарклайны, об организации прострaнcтва на рабочем листе и оптимизации времени на изучение данных в экселе и таблицах Google...

02 11 2026 17:55:47

Сколько стоят услуги копирайтера

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

01 11 2026 11:16:42

Как обнаружить и снять лишнюю ссылочную массу

Как обнаружить и снять лишнюю ссылочную массу Ссылки нужно не только наращивать, но и постоянно посещать и мониторить качество уже существующих....

31 10 2026 8:34:42

10 неочевидных функций приложения для скриншотов KISS

10 неочевидных функций приложения для скриншотов KISS Опции скриншутера, которые упростят вам жизнь....

30 10 2026 0:53:46

Сeкc и эpoтика, магия, тренер-олень, и даже ребус! Апрельская реклама с блоком 18+

Чем шокировала, радовала и удивляла реклама в социальных сетях и контекстная в Google в апреле 2021 года...

29 10 2026 9:58:59

Как меняются привычки пользователей и что с этим делать рекламодателям — исследование WordStream

Как меняются привычки пользователей и что с этим делать рекламодателям — исследование WordStream Эффективность рекламы в поиске падает, но растут YouTube, контекстно-медийная сеть и другие платформы...

28 10 2026 23:51:19

Как оформлять Google Таблицы, чтобы с вами хотели работать

Как оформлять Google Таблицы, чтобы с вами хотели работать 10 базовых правил оформления онлайн-таблиц. Оформление — основа таблицы. Как работать со столбцами и ячейками, комментариями и примечаниями, делать корректные цветовые выделения. Читайте далее....

27 10 2026 13:11:31

Ringostat — это коллтрекинг, телефония и сквозная аналитика

Современные платформы телефонии и коллтрекинга — это не только про звонки. С Ringostat вы узнаете, откуда пришел клиент, как менеджер ему ответил и какая реклама «принесла» деньги....

26 10 2026 5:17:25

Гайд по форматам видеокампаний YouTube

Гайд по форматам видеокампаний YouTube Рекламные кампании для брендинга, роста вовлечения пользователей, продаж, лояльности. Какой формат выбрать, чтобы получить необходимое целевое действие. Узнать!...

25 10 2026 18:40:55

Как отслеживать внутренний поиск по сайту

Как отслеживать внутренний поиск по сайту Настройка аналитики для пустого поиска, а также поиска по методам GET и POST...

24 10 2026 1:58:31

Продвижение детской костюмерной Colombina.ua — рост заявок на 227% в сезон

Кейс детской костюмерной Colombina.ua — как продвигать проект с ярко выраженной сезонностью....

23 10 2026 0:49:26

Агентство Netpeak вышло на рынок Болгарии

Агентство Netpeak вышло на рынок Болгарии Агентство интернет-маркетинга Netpeak вышла на новые рекламные горизонты и приобрело 51% доли болгарской компании Optimization.bg....

22 10 2026 15:21:26

Мир К-pор: механика фанатских соцсетей — от популярности к монетизации

K-pop заpaбатывает деньги: как и сколько...

21 10 2026 4:29:14

Как переселить стартап в Кpaков: советы от Ярослава Легенчука

Как переселить стартап в Кpaков: советы от Ярослава Легенчука Ярослав Легенчук поделился историей успешного «переезда» площадки IT-продукта из Рунета в страны ЕС...

20 10 2026 1:50:53

Контекстная реклама для продажи квартир в Киеве — как увеличить количество конверсий на 75%

Контекстная реклама для продажи квартир в Киеве — как увеличить количество конверсий на 75% Исправляем ошибки в рекламных кампаниях, аналитике и бюджете...

19 10 2026 9:32:38

Праздничные рассылки: примеры триггерных рассылок к праздникам

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

18 10 2026 10:17:16

Netpeak Spider — помощник при составлении технического аудита сайта

Netpeak Spider — помощник при составлении технического аудита сайта Мы запустили еще один полезный инструмент: Netpeak Spider....

17 10 2026 2:53:14

Внутренняя кухня SEO: как Netpeak продвигает UniSender — первые 5 шагов

Внутренняя кухня SEO: как Netpeak продвигает UniSender — первые 5 шагов Начинаем серию постов в режиме реалити-шоу о подробностях продвижения крупного игрока бизнеса email- и sms-рассылок — компании UniSender....

16 10 2026 14:27:21

Владимир Меркушев о фишках Казнета и рецепте успеха в сети

Об особенностях реализации интернет-проектов в Великобритании, России и Казахстане и фишках успешного ведения бизнеса онлайн мы побеседовали с Владимиром Меркушевым — руководителем интернет-проектов успешной казахстанской компании Kolesa.kz....

15 10 2026 11:12:41

Всемогущая функция Query — подробное руководство

Как пользоваться одной из самых важных функций Google Таблиц — подробное руководство по Query...

14 10 2026 4:24:54

Как оптимизировать страницы фильтров — руководство для новичков

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

13 10 2026 11:36:17

Особенности доменов второго уровня

Ликбез по важным понятиям, без которых нельзя начинать бизнес в интернете. Что такое домены второго и третьего уровня, чем они отличаются. Узнать больше!...

12 10 2026 22:32:50

Библиотеки JavaScript для Google ***ytics: в чем разница между ***ytics.js, gtag.js и ga.js

Библиотеки JavaScript для Google ***ytics: в чем разница между ***ytics.js, gtag.js и ga.js Почему стоит внимательно относиться к выбору библиотеки JavaScript....

11 10 2026 19:50:59

Как увеличить продажи на 75% с помощью внутренней оптимизации сайта — кейс maxi.az

Как увеличить продажи на 75% с помощью внутренней оптимизации сайта — кейс maxi.az Увеличение трафика из поисковых систем Азербайджана на 30% за три месяца. И он продолжает расти...

10 10 2026 16:12:20

16 советов для продуктового бизнеса от спикеров конференции SaaS Nation

16 советов для продуктового бизнеса от спикеров конференции SaaS Nation Истории бизнеса и советы от Игоря Жаданова (Readdle), Александра Галкина (Competera) и Рагнара Саас (Pipedrive)...

09 10 2026 21:21:18

Сколько заpaбатывают маркетологи — ежегодное исследование Serpstat

Сколько заpaбатывают маркетологи — ежегодное исследование Serpstat Как распредляются зарплаты по грейдам и специализации: ежегодное исследование Serpstat....

08 10 2026 23:34:44

Как мы подняли МRR с нуля до 24 тысяч долларов без бюджета, комaнды и маркетинговой стратегии

Как мы подняли МRR с нуля до 24 тысяч долларов без бюджета, комaнды и маркетинговой стратегии Опыт стартапа Paperform для стартаперов, которые боятся начать из-за ограниченного бюджета и/или отсутствия знаний в маркетинге. Надеемся, эта история вдохновит предпринимателей и поможет меньше сомневаться на счет запуска без бюджета....

07 10 2026 22:47:48

Как анализировать внешнюю ссылочную массу: обзор сервисов и программ

Как анализировать внешнюю ссылочную массу: обзор сервисов и программ Делайте анализ ссылочной массы хотя бы раз в месяц — и будет вам счастье....

06 10 2026 14:39:47

Как настроить Facebook Business Manager для продвижения мобильного приложения

Как настроить Facebook Business Manager для продвижения мобильного приложения Как зарегистрироваться в приложении Facebook Business Manager и грамотно сделать и настроить аккаунт...

05 10 2026 23:25:24

Как продвигать премиум-продукты — аутрич кейс бренда High-End акустики Copra

Как продвигать премиум-продукты — аутрич кейс бренда High-End акустики Copra Кейс о том, как написать большинству дилеров премиальных акустических систем в Европе и ничего не продать. И почему это кейс, а не антикейс....

04 10 2026 7:39:12

«Металл профиль» — как мы запустили кастомный коннектор для загрузки данных из API Google ***ytics в Microsoft SQL Server

«Металл профиль» — как мы запустили кастомный коннектор для загрузки данных из API Google ***ytics в Microsoft SQL Server Узнаем расширенную информацию о посещениях сайта с помощью языка R — кейс Netpeak...

03 10 2026 20:40:56

Рейтинг CPA-сетей в Украине — лучшие партнерки по мнению читателей

Рейтинг CPA-сетей в Украине — лучшие партнерки по мнению читателей Лидеров определили открытым голосованием. В ТОП-списки вошли CPA-сети, которые набрали больше всего голосов суммарно и по отдельным критериям....

02 10 2026 2:59:44

Как запустить контекстную рекламу в Японии и не сойти с ума

Как вести успешную рекламную кампанию в Японии, не зная языка....

01 10 2026 4:54:53

Как узнать сколько стоит ваш сайт

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

30 09 2026 12:27:20

Как найти лидеров мнений в Twitter с помощью NodeXL

Как найти лидеров мнений в Twitter с помощью NodeXL Как найти в Twitter лидеров мнений и сети ботов с помощью надстройки для Excel...

29 09 2026 9:29:37

Симулятор ставок кампании в Google Рекламе

Сергeй Бахарь неустанно исследует Google Рекламу и рассказывает о новинках нашим читателям....

28 09 2026 11:23:19

Как продвигать мобильное приложение: опыт Андреаса Рётля на примере Journi

Как продвигать мобильное приложение: опыт Андреаса Рётля на примере Journi Андреас Рётль о продвижении Journi: как трое выпускников Стэнфордского университета создали приложение для сторителлинга с 25 000 пользователями в 100 странах....

27 09 2026 17:15:16

Выход на новый рынок, рост видимости сайта в 5 раз и +20% небрендового трафика ежемecячно — кейс Decathlon

Выход на новый рынок, рост видимости сайта в 5 раз и +20% небрендового трафика ежемecячно — кейс Decathlon Начинали с SEO на этапе разработки нового сайта. Узнать больше!...

26 09 2026 23:23:33

Очистка Twitter от ботов и спаммеров

Очистка Twitter от ботов и спаммеров Чтобы раскрутить себя в Твиттер иногда нужно чистить списки фолловеров и это намного проще, чем кажется :)...

25 09 2026 11:32:18

Как настроить вычисляемые показатели в Google ***ytics

Как настроить вычисляемые показатели в Google ***ytics Для эффективной оценки работы кампаний не обойтись без вычисляемых показателей. Они экономят время PPC-специалиста и позволяют правильно анализировать рекламные кампании....

24 09 2026 4:11:45

Что такое умные торговые кампании и как они работают

Спойлер: чтобы получить наилучший результат с наименьшими усилиями и затратами времени....

23 09 2026 7:17:31

Анализ ссылочной массы — подробное руководство

Анализ ссылочной массы — подробное руководство Как найти, нарастить и проанализировать ссылочную массу...

22 09 2026 13:53:46

Как получить контакты клиентов в Facebook с помощью чат-бота ManyChat

Инструкция по интеграции рекламной кампании с чат-ботом...

21 09 2026 3:51:29

Бесплатное и платное обучение в сфере интернет-маркетинга: SEO, контекстная реклама, язык R

Бесплатное и платное обучение в сфере интернет-маркетинга: SEO, контекстная реклама, язык R Обучение SEO, PPC, курс по изучению языка R, академии Netpeak Software, Serpstat и другие. Список обновляется....

20 09 2026 0:34:36

Энн Смарти: о правилах эффективного блоггинга и сюрпризах от Google

Энн Смарти: о правилах эффективного блоггинга и сюрпризах от Google Энн Смарти (Ann Smarty), пожалуй, самая известная публичная личность в мире контент-маркетинга и поискового продвижения. За несколько лет она прошла путь от SEO-блогера до главного редактора авторитетного Search Engine Journal и CEO одного из самых популя...

19 09 2026 21:47:55

Семь массовых сбоев, оставивших миллионы людей без привычных сервисов

Семь массовых сбоев, оставивших миллионы людей без привычных сервисов Пожар в дата-центре, неудачные обновления и то самое падение Facebook....

18 09 2026 6:16:54

Как сделать гифку из видео — два способа для новичков

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

17 09 2026 4:34:14

Когортный анализ в Google ***ytics: пошаговая инструкция

Когортный анализ в Google ***ytics: пошаговая инструкция Когорта в google ***ytics позволяет снять любые претензии в духе «прошел уже целый месяц, где результаты»....

16 09 2026 10:17:36

Продвижение сайта VIN-кодов в США по низкочастотным запросам: рост трафика на 681% за 6 месяцев

Продвижение сайта VIN-кодов в США по низкочастотным запросам: рост трафика на 681% за 6 месяцев Кейс SEO-продвижения в США: рост трафика сайта с помощью низкочастотных запросов....

15 09 2026 17:50:24

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

Сколько стоил клик в Google Ads в Казахстане во втором квартале 2020 года — исследование Netpeak Зная стоимость клика в вашей тематике или регионе, коэффициент конверсии на сайте, вы можете оценить объем необходимых в рекламу инвестиций и прогнозировать стоимость конверсии. Узнать больше!...

14 09 2026 16:11:10

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