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



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

Как отфильтровать внутренний трафик в Google ***ytics

Как отфильтровать внутренний трафик в Google ***ytics Фильтруем свой трафик от сотрудников в Google ***ytics...

27 03 2025 21:56:25

Метрики вовлеченности — ER или ERR? Как считать Engagement rate в Instagram и Facebook

Метрики вовлеченности — ER или ERR? Как считать Engagement rate в Instagram и Facebook Простой и понятный разбор двух формул для расчета коэффициента вовлеченности...

26 03 2025 19:15:12

Дополнительные ценности Netpeak — что вы получаете при заказе [SEO 2.0] вместе с поисковым продвижением

Дополнительные ценности Netpeak — что вы получаете при заказе [SEO 2.0] вместе с поисковым продвижением В коробку [SEO 2.0] вместе с самим поисковым продвижением входят дополнительные ценности Netpeak: унифицированные действия по увеличению продаж, улучшения удобства работы и преимущества бренда Netpeak...

25 03 2025 15:37:16

Исследование о влиянии отзывов в интернете на решение о покупке

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

24 03 2025 20:33:29

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

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

23 03 2025 5:39:50

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

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

22 03 2025 0:42:33

Как быстро подобрать темы для информационных статей

Как быстро подобрать темы для информационных статей Как за один час собрать самые популярные темы для информационных статей с помощью Serpstat и Key Collector?...

21 03 2025 14:23:41

Старт нового рейтинга зарплат Serpstat: как коронакризис повлиял на заработок интернет-маркетологов в 2020

Старт нового рейтинга зарплат Serpstat: как коронакризис повлиял на заработок интернет-маркетологов в 2020 Узнайте зарплату интернет-маркетологов с новым рейтингом от Serpstat....

20 03 2025 21:28:11

Топ ошибок новичков в Google Рекламе

Топ ошибок новичков в Google Рекламе Топ-8 ошибок новичков в Google Рекламе: как сэкономить деньги при планировании рекламной кампании....

19 03 2025 16:58:21

Денис Довгаль — интервью о видеоконтенте и удаленке до пандемии

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

18 03 2025 5:14:20

Кейс по продвижению интернет-магазина отопительного оборудования: ROMI 86%

Кейс по продвижению интернет-магазина отопительного оборудования: ROMI 86% Через тернии к кейсу. SEO-продвижение интернет-магазина отопительного оборудования с оплатой за трафик...

17 03 2025 2:47:47

Как работать с API Яндекс.Метрики с помощью языка R

Как работать с API Яндекс.Метрики с помощью языка R Интерфейс прикладного программирования для работы с аккаунтами десятка сайтов....

16 03 2025 3:57:37

Как раскрутить телеграм-канал в 2022 — 14 актуальных способов продвижения

Как раскрутить телеграм-канал в 2022 — 14 актуальных способов продвижения Хотите говорить с клиентами? Пишите им в телеге. Для этого важно продвижение телеграм-канала. Что и как делать для раскрутки — подробная инструкция....

15 03 2025 14:14:54

Как не слить бюджет на клики? Все, что нужно знать о кликфроде

Как не слить бюджет на клики? Все, что нужно знать о кликфроде Как избежать скликивания — инструкция...

14 03 2025 1:35:45

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

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

13 03 2025 16:46:26

Более двух месяцев не могли запустить рекламу, а потом снизили стоимость заказа на 50% — игровой кейс

Более двух месяцев не могли запустить рекламу, а потом снизили стоимость заказа на 50% — игровой кейс Также повысили количество транзакций на 191% (по сравнению с аналогичным периодом прошлого года)....

12 03 2025 11:46:10

Краткий курс машинного обучения, или Как создать нейронную сеть для решения задачи по скорингу

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

11 03 2025 2:46:39

Как создать рекламную видеозаставку с помощью Bumper Machine

Как создать рекламную видеозаставку с помощью Bumper Machine Создание даже короткого ролика может стоить дорого. Поэтому можно использовать бесплатный инструмент Bumper Machine от Google....

09 03 2025 21:52:40

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане во втором квартале 2018 года

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане во втором квартале 2018 года Данные о стоимости клика в наиболее популярных рекламных интернет-площадках страны....

08 03 2025 18:17:32

Черная пятница 2021 в Европе и Украине. Как изменились традиционные даты распродаж и топы бестселлеров

Черная пятница 2021 в Европе и Украине. Как изменились традиционные даты распродаж и топы бестселлеров В этом году часть пользователей предпочла вернуться к привычным покупкам в оффлайн-магазинах....

07 03 2025 20:45:25

Песочницы контента: как публиковать статьи и получать за это клиентов

Песочницы контента: как публиковать статьи и получать за это клиентов Как получить трафик из песочниц контента в популярных изданиях....

06 03 2025 5:40:30

Как оценить эффективность рекламы в TikTok? Пиксель TikTok в помощь

Как оценить эффективность рекламы в TikTok? Пиксель TikTok в помощь Настройка пикселя TikTok — короткий и понятный мануал. Устанавливаем пиксель вручную: вставка кода на сайт и интеграция через Install pixel code by 3rd party tool. Читать дальше....

05 03 2025 3:23:11

Кейс по контекстной рекламе новостного сайта: качественный трафик за $0,02

Кейс по контекстной рекламе новостного сайта: качественный трафик за $0,02 В этом кейсе я не смогу похвастаться ROMI (возврат маркетинговых инвестиций), так как его герои — это новостные порталы. Основная задача — трафик. Но не просто трафик, а трафик по низкой стоимости....

04 03 2025 0:44:54

Коллекция шуток Netpeak или Генератор мемов

Коллекция шуток Netpeak или Генератор мемов Недавно у нас появился свой генератор мемов :) Во многих компаниях смешные слова и фразы стараются запомнить и передать следующим поколениям сотрудников. В Netpeak же долго работали над секретным проектом и... Читайте!...

03 03 2025 22:56:27

Как увеличить коэффициент конверсии до 3,53% благодаря массовым рассылкам — кейс Artbooks

Как увеличить коэффициент конверсии до 3,53% благодаря массовым рассылкам — кейс Artbooks Мы запустили email с нуля и стали получать стабильный ежемecячный доход....

02 03 2025 16:28:42

Как настроить языковую версию сайта

Если выполнить настройку не корректно, поисковик воспримет материалы как дубли контента....

01 03 2025 0:28:17

Создание простой темы для WordPress

Простые пошаговые советы о том, как самому сделать верстку шаблона Wordpress. От вас не требуется знание PHP, но хорошо если вы владеете Photoshop и CSS для создания дизайна. Узнать больше!...

28 02 2025 19:43:51

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

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

27 02 2025 9:21:43

Пять важных «зачем» в работе PPC-специалиста над продвинутыми проектами

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

26 02 2025 4:59:43

Что такое вечные ссылки и как продвигать сайт с их помощью

Что такое вечные ссылки и как продвигать сайт с их помощью Ссылки называются вечными, потому что их внедряют один раз и навсегда, но это не значит, что такие ссылки однажды не удалят (что поведет к потере трафика). Узнать больше!...

25 02 2025 20:49:14

Как найти путь к 250 миллионам пользователей за рубежом — обзор возможностей Pinterest

Как найти путь к 250 миллионам пользователей за рубежом — обзор возможностей Pinterest в поисках нового источника трафика расскажем о Pinterest — современной поисковой сети c акцентом на визуальном контенте...

24 02 2025 3:45:15

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

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

23 02 2025 10:25:47

Как настроить Facebook Business Manager для удобной работы

Facebook + Instagram, Business Manager + основная бизнес-страница на Facebook, BM + рекламный аккаунт и так далее....

22 02 2025 5:36:28

Инсайты Google Business Profile: от настройки до оптимизации

Инсайты Google Business Profile: от настройки до оптимизации Как зарегистрироваться и пользоваться аккаунтом в Google Business Profile: руководство для интернет-маркетологов и владельцев бизнеса...

21 02 2025 14:58:25

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

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

20 02 2025 17:54:17

SEO-продвижение для СМИ — рост органического трафика на 569%, аудитории — в пять раз

SEO-продвижение для СМИ — рост органического трафика на 569%, аудитории — в пять раз Продвижение казахстанского онлайн-издания, новостника informburo.kz....

19 02 2025 8:46:10

Как быстро снизить стоимость конверсий в нише элитных автоуслуг — кейс Аверс-центр

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

18 02 2025 21:43:59

Топ-50 самых дорогих ключевых слов Google Рекламы в Казахстане

Топ-50 самых дорогих ключевых слов Google Рекламы в Казахстане Как правильно распределить рекламный бюджет? Читайте топ-50 самых дорогих ключевых слов Google Рекламы в Казахстане по версии Serpstat...

17 02 2025 22:47:31

Что объединяет в себе понятие ремаркетинг

Что объединяет в себе понятие ремаркетинг Подробнейшая статья об эффективном использовании ремаркетинга. Мотаем на ус!...

16 02 2025 12:32:39

MVP в разработке позиционирования стартапа — на примере Serpstat

MVP в разработке позиционирования стартапа — на примере Serpstat Метод бoмжа в маркетинге. Как разработать позиционирование стартапа при ограниченных ресурсах...

15 02 2025 6:18:48

Как защитить аккаунт в Instagram от взлома

Безопасность Instagram — что делать, если заметили попытку взломщиков украсть аккаунт, и как вернуть аккаунт после взлома....

14 02 2025 13:59:39

«Эмоциональный интеллект в бизнесе» Дэниела Гоулмана

«Эмоциональный интеллект в бизнесе» Дэниела Гоулмана Как развить в себе такой EQ, как хочется, и далее использовать его для достижения успеха. Рецензия на книгу Дэниела Гоулмана «Эмоциональный интеллект в бизнесе»....

13 02 2025 20:24:13

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

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

12 02 2025 0:15:51

Как работать с Open Graph

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

11 02 2025 12:58:20

Техноанархизм и chindogu как источник идей

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

10 02 2025 15:27:42

Как не сломать работу автостратегий Google, когда на сайте произошел сбой — используем «Исключение данных»

Как не сломать работу автостратегий Google, когда на сайте произошел сбой — используем «Исключение данных» Качество передаваемых данных напрямую отражается на качестве решений, принимаемых для бизнеса. Как защититься от таких ошибок?...

09 02 2025 8:46:22

Качество связи в телефонии для продаж — как проверить и исправить

Качество связи в телефонии для продаж — как проверить и исправить Какую связь можно назвать «качественной» и как улучшить работу телефонии — советы от платформы Ringostat в новом посте....

08 02 2025 15:34:41

Кейс по контекстной рекламе в тематике «трудоустройство»

Кейс по контекстной рекламе в тематике «трудоустройство» Конкректная цель — конкретные результаты трудоустройства...

07 02 2025 2:12:40

Как написать обзор товара

Как написать обзор товара Структура обзора, правила написания и важные хаpaктеристики этого формата. Подача информации в обзоре и запрещенные методы, которые отпугнут клиентов. Узнать больше!...

06 02 2025 1:46:24

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