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



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

Как мы продвигали приложение в Instagram и получили CPI в два раза ниже, чем в Facebook

Как мы продвигали приложение в Instagram и получили CPI в два раза ниже, чем в Facebook Case по продвижению в Instagram. В любой непонятной ситуации — масштабируйте рекламные инструменты...

02 11 2026 3:56:38

Миграция с Google AdWords API на Google Ads API: подробный мануал

Миграция с Google AdWords API на Google Ads API: подробный мануал Как и зачем мигрировать со старой на новую версию API на языке R. С пакета RAdwords на rgoogleads. Руководство от Алексея Селезнева. Читать дальше!...

01 11 2026 20:30:58

White paper: что за маркетинговый зверь?

Хороший пост с примерами продающих «Белых книг»....

31 10 2026 20:27:29

Как ускорить сайт с помощью сервиса CDN — краш-тест Айри

Как ускорить сайт с помощью сервиса CDN — краш-тест Айри Как трафик CDN повлиял на систему интернет-магазина — палим кейсы...

30 10 2026 9:12:30

Лучшие дудл-игры от Google для обеденного перерыва

Лучшие дудл-игры от Google для обеденного перерыва Топ doodle games от Google — от менее достойных к самым крутым....

29 10 2026 10:51:55

Контекст-стратегия: купил и полетел

Чтобы привлечь представителей малого и среднего бизнеса, мы разработали стратегии по контекстной рекламе. Это открывает двери агентства Netpeak проектам с самым скромным бюджетом...

28 10 2026 10:45:18

Как превратиться в робота и повысить продуктивность — советы для CEO

Как превратиться в робота и повысить продуктивность — советы для CEO Нет прокрастинации! Советы для личной эффективности от руководителя двух стартапов...

27 10 2026 19:46:41

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

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

26 10 2026 14:59:44

Удаленная работа после пандемии — трудности Apple и Google

Удаленная работа после пандемии — трудности Apple и Google Последствия удаленки на уровне крупного бизнеса. Как сотрудники и топ-менеджмент не могут договориться. Спopные вопросы, ответы на которые ещё предстоит найти. Узнать больше....

25 10 2026 12:55:37

Как работают смарт-баннеры в Яндекс.Директ — кейс интернет-магазина товаров для сада и огорода

Как работают смарт-баннеры в Яндекс.Директ — кейс интернет-магазина товаров для сада и огорода Решили написать про новый формат рекламы — баннерный...

24 10 2026 18:56:56

Google BigQuery — зачем нужна облачная база данных

Google BigQuery — зачем нужна облачная база данных Как бесплатно пользоваться преимуществами, особенностями и дополнительными инструментами сервиса...

23 10 2026 15:23:30

Как начать работу с BigData — загружаем данные в Google BigQuery

Как начать работу с BigData — загружаем данные в Google BigQuery Начинаем работать с облачным сервисом хранения Google BigQuery...

22 10 2026 19:49:47

Лучшие примеры ошибки 404

Лучшие примеры ошибки 404 Ошибка на странице 404 может выглядеть креативно. Страница не найдена и не может быть найдена, потому что она в розыске, утеряна, украдена ниндзей, путь заснежен и дороги дальше нет, а принцесса находится в другом замке. О чем это?...

21 10 2026 18:28:18

Кейс по SEO-продвижению сайта в тематике грузовые перевозки — прирост конверсий в звонки в 4,41 раза

Кейс по SEO-продвижению сайта в тематике грузовые перевозки — прирост конверсий в звонки в 4,41 раза Кейс в тематике «грузоперевозки»: как быстрое внедрение доработок помогло привлечь качественный трафик на новый сайт...

20 10 2026 8:22:50

Времена меняются: что будет с Википедией в 2030 году?

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

19 10 2026 1:51:39

Как открыть офис в Индии и не облажаться

История Affise от фаундера компании, рассказанная на SaaS Nation....

18 10 2026 5:53:16

Размеры картинок для социальных сетей: Facebook, ВК, Twitter, Instagram, YouTube, Pinterest, LinkedIn, Tumblr, OK

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

17 10 2026 16:27:54

Как подключить API Google Search Console к Google Таблицам

Как подключить API Google Search Console к Google Таблицам Новая инструкция, которую можно применять к любым задачам в Google Таблицах....

16 10 2026 14:40:26

Запускаем блоги на орбиту — МКС от Netpeak

Запускаем блоги на орбиту — МКС от Netpeak Грамотный контент важен для всех, но особенно — для аутсорсов и стартапов в B2B. Если вы согласны с этим, давайте делать медиа....

15 10 2026 12:11:23

Исследования рынка — новая услуга Netpeak

Исследования рынка — новая услуга Netpeak Предложение для крупных и средних бизнес-проектов по эффективному использованию больших бюджетов при запуске на новых рынках...

14 10 2026 18:50:59

Как перевести свой аккаунт с Google ***ytics на Universal ***ytics

Как перевести свой аккаунт с Google ***ytics на Universal ***ytics Читайте простой мануал о том, как перейти на Universal ***ytics и не поломать весь сбор данных...

13 10 2026 20:16:17

Основные виды контента и правила оформления в зависимости от вида

Контент может информировать, вовлекать и продавать, при этом для каждой цели нужен свой тип контента...

12 10 2026 21:43:56

Внутренняя кухня SEO: как починить А/В-тестирование в Google ***ytics с помощью Google Tag Manager. Кейс UniSender

Внутренняя кухня SEO: как починить А/В-тестирование в Google ***ytics с помощью Google Tag Manager. Кейс UniSender О проблеме с передачей данных об A/B-тестах в Google ***ytics...

11 10 2026 3:29:11

Фандрайзинг — руководство по привлечению инвестиций в стартап

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

10 10 2026 3:11:36

Новая функция Google Рекламы — общий бюджет

Новая функция Google Рекламы — общий бюджет Распределение бюджета на кампании в Google Рекламе. Обозревает Григорий Крутий....

09 10 2026 23:24:33

Как все успеть — фишки тайм-менеджмента при подготовке текстов

Как все успеть — фишки тайм-менеджмента при подготовке текстов На вопрос «как все успеть?» хочется ответить что-то вроде «никак». Особенно, если дело касается задач, связанных с творчеством. Но можно и не срывать дедлайны. Читать дальше....

08 10 2026 21:14:20

О рекламе в Telegram — что пошло не так

О рекламе в Telegram — что пошло не так Если вы автор телеграм-канала, то стоит задуматься об альтернативных контент-платформах. Мнение...

07 10 2026 22:44:13

Интервью с Владимиром Федориным

Интервью с Владимиром Федориным Сооснователь и главред Forbes Ukraine о вовлечении читателей в смысловое поле бизнеса...

06 10 2026 8:12:57

Аутсорсинг в Украине — интервью с Женей Розинским о способах развития IT-нации

Аутсорсинг в Украине — интервью с Женей Розинским о способах развития IT-нации Айти эксперт Женя Розинский о том, почему нацию айти развивают продуктовые бизнесы, а не outsourcing сервисы...

05 10 2026 12:33:40

Что делать, если приложение удалили из Google Play или App Store

Что делать, если приложение удалили из Google Play или App Store Есть ли шанс на апелляцию...

04 10 2026 4:30:42

Кейс по продвижению интернет-магазина детской одежды, обуви и товаров: ROMI 319%

Кейс по продвижению интернет-магазина детской одежды, обуви и товаров: ROMI 319% Виктория Игнатьева опубликовала новый кейс по продвижению интернет-магазина детской одежды, обуви и товаров: ROMI (возврат маркетинговых инвестиций) 319%....

03 10 2026 6:37:46

Как улучшить UX сайта — 12 советов по юзабилити

Как улучшить UX сайта — 12 советов по юзабилити Какие фишки влияют на видимость сайтов? Советы по юзабилити от SEO-специалиста....

02 10 2026 15:35:49

Семь улучшений Netpeak: SEO, PPC и английская версия блога. Выпуск первый

Семь улучшений Netpeak: SEO, PPC и английская версия блога. Выпуск первый Сегодня мы открываем новую регулярную серию постов, в которых будем стараться раз в квартал рассказывать про семь важных улучшений Netpeak в работе с клиентами. Сейчас мы максимально сфокусированы на SEO и PPC....

01 10 2026 8:51:26

Как настроить таргетинг для рекламы в Instagram и Facebook

Как настроить таргетинг для рекламы в Instagram и Facebook Запускаем первую таргетированную рекламу. Мы составили инструкцию для начинающих таргетолов, а также для SMM-специалистов, которым регулярно нужно рекламировать товары и услуги. Читайте подробнее!...

30 09 2026 23:13:29

Как запустить рекламную кампанию Call-Only для мобильных устройств

Как запустить рекламную кампанию Call-Only для мобильных устройств Учим правильно платить за верхние строчки показов объявления: настройка быстрых звонков из поисковых объявлений «Только номер телефона» Google Ads...

29 09 2026 20:27:13

Продвижение музыки в интернете

Продвижение музыки в интернете Раскрутка музыки онлайн: способы, методы, нюансы и примеры...

28 09 2026 19:10:39

«Чёрная пятница» для интернет-магазинов США и Рунета

«Чёрная пятница» для интернет-магазинов США и Рунета Игроков интернета России, Уанета и Казнета зарубежные сайты coблaзняют семизначными результатами продаж во время «черной пятницы» и «киберпонедельника»....

27 09 2026 18:35:10

На что обратить внимание при выборе движка для сайта

На что обратить внимание при выборе движка для сайта Готовые коробочные решения — отличная идея, которая решает много задач, а ещё это относительно недорого. Но такой вариант подойдет далеко не всем. Узнать больше!...

26 09 2026 15:11:10

Как отслеживать клики по телефонным номерам

Как отслеживать клики по телефонным номерам Быстрый и бесплатный способ настройки целей через Google Tag Manager....

25 09 2026 17:41:11

История успеха avtokrisla.com: окупили инвестиции в email-маркетинг на третий месяц работы

История успеха avtokrisla.com: окупили инвестиции в email-маркетинг на третий месяц работы На третий месяц работы мы вышли на положительный ROMI, на четвертый — ROMI превысил 800%....

24 09 2026 6:38:55

Чек-лист SMM-стратегии: готовимся к продвижению в соцсетях

Чек-лист SMM-стратегии: готовимся к продвижению в соцсетях 14 пунктов, которые помогут вам лучше изучить свой бизнес и подготовить эффективную SMM-стратегию...

23 09 2026 21:36:27

Блог Netpeak 2.0 — мы всё поменяли, и вот почему

Блог Netpeak 2.0 — мы всё поменяли, и вот почему Блог на новом движке и с новым дизайном, перетянувший в себя огромное количество постов и комментариев за Х лет своей работы...

22 09 2026 17:17:29

Как настроить передачу уведомлений из Google Calendar в Telegram

Как настроить передачу уведомлений из Google Calendar в Telegram Мануал по созданию удобного планировщика повторяющихся действий....

21 09 2026 14:19:54

Действие зеркальных нейронов

Действие зеркальных нейронов зеркальные нейроны и сознание. как они влияют на наше поведение?...

20 09 2026 7:21:49

Как платить за рекламные аккаунты в Украине, России и Казахстане

Как платить за рекламные аккаунты в Украине, России и Казахстане Подробно об оплате аккаунтов и налогообложении рекламы в Украине, России, Казахстане....

19 09 2026 9:41:38

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

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

18 09 2026 9:19:25

Главные секреты планировщика ключевых слов Google

Главные секреты планировщика ключевых слов Google Небольшой набор секретов по работе с Планировщиком ключевых слов гугла...

17 09 2026 21:52:55

Как собрать семантическое ядро и расширить структуру сайта: пошаговое руководство

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

16 09 2026 18:12:39

Как установить пиксель Facebook и Instagram — отслеживаем целевые действия

Как установить пиксель Facebook и Instagram — отслеживаем целевые действия Пиксель Facebook — инструмент аналитики рекламной системы, который можно использовать и для Instagram....

15 09 2026 15:47:10

Масштабный редизайн блога UniSender — рост органического трафика

Масштабный редизайн блога UniSender — рост органического трафика Как за полгода обновить корпоративный блог, зачем это может быть нужно. О том, как начинали с сегментации, внедряли SEO-рекомендации, оптимизировали ЧПУ, трaнcлитерацию, пагинацию и структуру блога вплоть до конкретной работы со статьями, рейтингами и их страницами...

14 09 2026 12:14:15

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