что такое idf в seo

TF-IDF и алгоритмы поиска

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

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

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

Формула расчета TF-IDF

Показатель TF рассчитывается как отношение количества вхождений слова документ к количеству слов в документе.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

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

Показатель IDF равен логарифму отношения количества документов в коллекции к количеству документов в коллекции, в которых встречается заданное слово.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

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

Общий же показатель TF-IDF является произведением TF и IDF.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

Примеры расчета показателя

Расчет для тематического слова

Для первого примера расчета TF-IDF возьмём документ из 10000 слов в котором слово “пропан” встречается 25 раз, а коллекция состоит из 2 миллионов документов, в 2000 из которых также встречается данное слово.

TF = 25 ÷ 10000 = 0,0025

TF-IDF = 0,0025 × 3 = 0,0075

Расчет для союза

Для второго примера расчета TF-IDF возьмём тот же документ из 10000 слов в котором союз “но” встречается 30 раз, а коллекция по-прежнему состоит из 2 миллионов документов, в 200000 из которых также встречается данное слово.

TF = 30 ÷ 10000 = 0,003

TF-IDF = 0,003 × 1 = 0,003

Сравнение расчетов

Так как мы использовали идентичные документ и коллекцию, можем сравнить семантический вес слов: 0,0075 > 0,003, следовательно слово «пропан» имеет больше веса, чем союз «но», что справедливо.

Как улучшить показатель TF-IDF

Стоит ли вообще работать с такой старой методикой оценки текстов? Конечно! Алгоритм TF-IDF является основой информационного поиска. Он уже давно интегрирован в формулу ранжирования Яндекс и Google, а теперь и лёг в основу более продвинутых алгоритмов вроде векторного анализа текста.

Не переживайте об использовании стоп-слов в текстах, показатель TF-IDF их успешно фильтрует и без вас.

Старайтесь использовать в тексте слова с наибольшим семантическим весом. Например, это могут быть профессиональные термины вашей тематики.

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

Источник

TF-IDF: действительно ли это может помочь SEO продвижению?

Одни скажут: TF-IDF поднимет ваш контент в выдаче на небывалые высоты.

Другие говорят: TF-IDF устарел, и не стоит акцентировать на нем особого внимания при продвижении.

Истина, как всегда, посередине. TF-IDF не играет главную роль в оптимизации, но имеет ряд достоинств, о которых стоит поговорить.

Статья была переведена и адаптированна с этого ресурса:
https://www.searchenginejournal.com/tf-idf-can-it-really-help-your-seo/331075/

TF-IDF: что это такое?

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

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

Вручную, конечно, можно сосчитать, сколько раз ключевая фраза «TF-IDF» повторяется в каждом из текстов. Но при машинном подсчете учитывается большее количество факторов, в том числе, длина текста.

Так возникает понятие — плотность ключевых слов. Это соотношение ключей с общим количеством слов в статье. Плотность ранее была одним из главных показателей для анализа контента.

Плотность ключевых слов и TF-IDF

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

Для этого нужен показатель TF-IDF: чтобы сравнить частоту использования ключа в нужном тексте с другими текстами в поиске. Это позволяет корректировать расчеты, получать точные данные.

Формула расчетов:

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

Google и TF-IDF

Как известно, Google не использует TF-IDF для ранжирования. Однако поисковая система Гугл обращается к этому алгоритму, если нужно удалить стоп-слова и функциональные слова в поисковом запросе и содержимом страницы.

TF-IDF является вспомогательным алгоритмом, но не участвует в анализе документов и не влияет на ранжирование напрямую. В первую очередь потому, что TF-IDF не может определять смысловые отношения между словами. Для этого Google использует другие, более совершенные алгоритмы для семантического поиска.

Семантический поиск и то, что с ним связано

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

Рассмотрим на конкретном примере:

Форель богата омега-3 жирными кислотами.

Мясо форели имеет нежный ореховый вкус.

При выборе форели обращайте внимание на цвет, он должен быть красно-оранжевым.

Гугл видит семантически схожие тексты. Для определения контекста он может посмотреть другие тексты, например, такие:

Лосось превосходно сочетается с белым вином.

К макаронам по вкусу как нельзя лучше подойдет нежное мясо лосося.

Кожа лосося полезна, поэтому сохраняйте ее, когда готовите.

Что здесь сравнивает Google?

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

Как вы можете использовать эту информацию?

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

Включите TF-IDF в SEO-продвижение в 3 этапа.

1.Написание текстов

На этом этапе вы воплощаете в жизнь идеи, которые пришли на этапе создания контент-плана.

2. Подключение инструмента TF-IDF

Ряд SEO-инструментов имеет схожие принципы работы. Вы указываете URL и ключевики, приложение начинает проверку страниц. Оно находит те страницы, которые появляются в выдаче Google по указанному ключевому слову, далее происходит анализ и расчет TF-IDF.

Seobility — один из основных инструментов, которые работают по одному ключевому слову. SEO PowerSuite, WebSite Auditor, Ryte или Text Tools работают по схожему принципу. Для меня наиболее удобен SEO PowerSuite.

3. Ключевые слова

Обратите внимание на ключевые слова, часто используемые в текстах у ваших конкурентов.
Это может дать вам ряд свежих идей. В том числе — при составлении контент-плана в будущем.

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

Источник

Ранжирование текстов по похожести на опорные тексты при помощи модели TF-IDF в реализации GENSM

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

Бывает так, что критерии поиска текстов слишком сложны, чтобы обойтись регулярными выражениями. В таких случаях на помощь приходит ML. Если из списка текстов выбрать самый подходящий для нас, можно выяснить похожесть всех остальных текстов на этот. Похожесть(similarity) это численная мера, чем выше – тем более текст похож, поэтому при сортировке по убыванию по этому параметру мы увидим наиболее подходящие нам тексты из выборки.

В качестве примера возьмем любой набор текстов. Здесь http://study.mokoron.com/ можно скачать небольшое csv с твитами. В реальной работе это могут быть разного рода комментарии, ответы от техподдержки, запросы пользователей. Так или иначе, импортировав все нужные библиотеки, загрузим в pandas наш список текстов и взглянем на первые из них:

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

Результат выполнения выглядит так:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

Этого иногда бывает достаточно, но даже если нет, такую предварительную работу всегда стоит проводить для облегчения фильтрации. Если мы точно знаем, что в тексте встретятся слова «бумажный носитель», но нам точно не подойдет «платежный документ», мы добавим «бума.*носит» и «платежн.*документ» и в дальнейшем отфильтруем их так, как нам надо.

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

Первым делом выделим тексты, по которым будет проводиться сравнение, далее называя их «опорные тексты». Скорее всего, после первого этапа поисков этот список расширится, поскольку модель предложит дополнительные варианты подходящих текстов. В качестве примера просто возьмем первые 5 твитов, главное помнить, что эти тексты так же должны быть в общем наборе.

Теперь токенизируем все тексты в нашем датасете. На этом этапе осуществляется обработка текстов, который можно провести множеством способов при помощи множества библиотек. Самые распространённые способы включают в себя:

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

Понижение регистра слов до строчных. Большинство библиотек и чистый python сам по себе могут это делать. Некоторые, могут еще и удалить диакритические знаки, например gensim.

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

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

В нашем примере мы применили только приведение к строчным буквам и удаление ударений в параметрах функции gensim.tokenize: lowercase=True, deacc=True.

Создадим словарь слов, которые есть во всем нашем наборе текстов:

Каждое новое слово получает свой номер. Для дальнейшего использования номера слов в словаре походят намного лучше, чем сами слова. Теперь нужно создать корпус, превратив наши токенизированные тексты в векторы (называются bow – bag of words – мешок слов). Вектор в данном случае — список пар значений «номер слова в словаре : количество таких слов в отдельном тексте».

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

Именно этим займется модель tf-idf. Сама по себе аббревиатура TF-IDF расшифровывается как TF — term frequency, IDF — inverse document frequency, то есть отношение частоты употребления слова в отдельном тексте к частоте употребления слова во всех документах. Построенная на основе такой меры модель прекрасно подходит для поиска похожих текстов, поскольку позволяет сравнивать совокупные меры текстов между собой, строя матрицу похожести.

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

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

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

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

На этом этапе python уже не нужен, продолжать работать удобнее в excel:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

Проверка результата и поиск дополнительных текстов и слов для улучшения алгоритма комфортно проходит в Excel, за счет использования фильтров и сортировок.

Вот пример, отсортируем результат по похожести на самый первый опорный текст (он, разумеется, окажется на самом первом месте при сортировке):

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

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

После нахождения нужных текстов самые подходящие из них можно отправить в начало скрипта, добавив в список texts_to_compare, уточняя или углубляя поиск.

Источник

Семантический поиск: от простого сходства Жаккара к сложному SBERT

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

В материале, переводом которого мы решили поделиться к старту курса о машинном и глубоком обучении, простым языком рассказывается о семантическом поиске, статья охватывает шесть его методов; начиная с простых сходства по Жаккару, алгоритма шинглов и расстояния Левенштейна, автор переходит к поиску с разреженными векторами — TF-IDF и BM25 и заканчивает современными представлениями плотных векторов и Sentence-BERT. Простые примеры сопровождаются кодом и иллюстрациями, а в конце вы найдёте ссылки на соответствующие блокноты Jupyter.

Поиск сходства — одна из самых быстрорастущих областей в ИИ и машинном обучении. По своей сути, это процесс сопоставления релевантных частей информации друг с другом. Велика вероятность, что вы нашли эту статью через поисковую систему — скорее всего, Google. Возможно, вы искали что-то вроде «what is semantic similarity search?» или «traditional vs vector similarity search». Google обработал ваш запрос и использовал многие основные принципы поиска по сходству, о которых рассказывается в этой статье.

Два видео о двух классах подходов

Традиционный поиск

Мы начинаем с лагеря традиций и там находим нескольких ключевых игроков:

Сходство Жаккара.

Алгоритм шинглов.

Расстояние Левенштейна.

Все это показатели отлично работают при поиске сходства, из них мы рассмотрим три самых популярных: сходство по Жаккару, алгоритм шинглов и расстояние Левенштейна.

Сходство Жаккара

Сходство Жаккара — это простая, но иногда мощная метрика сходства. Даны две последовательности A и B: находим число общих элементов в них и делим найденное число на количество элементов обеих последовательностей.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoСходство Жаккара измеряет пересечение между двумя последовательностями по сравнению с объединением двух последовательностей

Пример: даны две последовательности целых чисел, запишем:

Здесь мы определили два общих неодинаковых целых числа, 3 и 4 — между двумя последовательностями с общим количеством десяти целых чисел в обеих, где восемь чисел являются уникальными значениями — 2/8 даёт нам оценку сходства по Жаккарду 0,25. Ту же операцию можно выполнить и для текстовых данных: всё, что мы делаем, — заменяем целые числа на токены.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoСходство по Жаккару, рассчитанное между двумя предложениями a и b

Мы обнаружили, что, как и ожидалось, предложения b и c набрали гораздо больше баллов. Конечно, это не лучшее решение — два предложения, в которых нет ничего общего, кроме слов ‘the’, ‘a’, ‘is’ и т. д., могут получить высокие оценки Жаккара, несмотря на то, что они неодинаковы по смыслу. Эти недостатки могут быть частично устранены с помощью методов предварительной обработки, таких как удаление стоп-слов, стемминг/лемматизация и т. д. Однако, как мы скоро увидим, некоторые методы позволяют полностью избежать этих проблем.

Алгоритм шинглов

Другая похожая техника — алгоритм использует точно такую же логику пересечения/объединения — но с «шинглом». 2-шингловое предложение a будет выглядеть так:

После можно применить тот же расчёт пересечения/объединения между разбитыми на шинглы предложениями:

При помощи двух шинглов находим три совпадающих шингла между предложениями b и c, в результате сходство составляет 0,125.

Расстояние Левенштейна

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

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoФормула расстояния Левенштейна

На вид она довольно сложна; если вы её поняли, это прекрасно! Если нет, не волнуйтесь — мы разберём её. Переменные a и b представляют две наши строки, i и j — позиции символов в a и b соответственно. Итак, даны строки:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo«Levenshtein» и неправильно написанное «Livinshten»

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoИндексируем само слово, начиная с 1 до его длины, нулевой индекс означает «ничего» (подробнее об этом — далее).

Это легко! Прекрасный способ понять логику этой формулы — визуализировать алгоритм Вагнера — Фишера, рассчитывающий расстояние Левенштейна при помощи простой матрицы. Мы берём два слова a и b и размещаем их по обеим осям нашей матрицы, включая символ ничего как пустое пространство:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoПустая матрица Вагнера-Фишера — мы будем работать с ней для вычисления расстояния Левенштейна между ‘Levenshtein’ и ‘Livinshten’.

Код инициализации пустой матрицы Вагнера — Фишера:

Переберём все позиции в матрице и применим ту сложную формулу, которую видели ранее. Первый шаг в нашей формуле if min(i, j) = 0 — здесь мы уточняем, не равны ли i и j нулю? Если да, переходим к функции max(i, j), которая присваивает текущей позиции в нашей матрице больше из двух значений — i и j:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoНачнём справа, вдоль рёбер, где i и/или j равно 0, значение в матрице будет заполнено max(i, j)

Код операций min(i, j) == 0, за которой следует визуализированная выше max(i, j).

С внешними краями нашей матрицы мы разобрались, но нам всё ещё нужно вычислить внутренние значения — именно там будет проходить оптимальный путь. Вернёмся к if min(i, j) = 0 — что, если ни одно из них не равно 0? Затем переходим к сложной части уравнения в разделе min <. Нам нужно вычислить значение для каждой строки, а после взять минимальное значение. Сейчас эти значения известны — они находятся в нашей матрице:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoДля каждой новой позиции берём минимальное значение из трёх соседних позиций (обведено кружком вверху слева)

Эта операция в цикле по всей матрице выглядит так:

Полная реализация расчёта расстояния Левенштейна при помощи матрицы Вагнера — Фишера.

Векторное сходство

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

В тандеме с некоторыми реализациями приблизительных ближайших соседей (ANN) эти векторные методы в мире поиска сходства, если говорить терминами программирования, — минимально жизнеспособные продукты. Рассмотрим подходы на основе TF-IDF, BM25 и BERT, поскольку они являются наиболее распространёнными и охватывают как разреженные, так и плотные векторные представления.

1. TF-IDF

Почтенный дедушка векторного поиска сходства, родившийся ещё в 1970-х годах. Он состоит из двух частей: Term Frequency (TF) и Inverse Document Frequency (IDF). Компонент TF подсчитывает, сколько раз термин встречается в документе, и делит его на общее количество терминов этого же документа.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoКомпонент частоты термина (TF) TF-IDF подсчитывает частоту нашего запроса («bananas») и делит её на частоту всех лексем

Это первая половина нашего расчёта, мы имеем частоту запроса в рамках текущего документа f(q, D) в числителе и частоту всех терминов в рамках текущего документа f(t, D) в знаменатели дроби. TF — хороший показатель, но не позволяет нам провести различие между распространёнными и необычными словами. Если бы мы искали слово «the», используя только TF, мы бы присвоили этому предложению ту же релевантность, что и при поиске «bananas». Это хорошо, пока мы не начнём сравнивать документы или искать что-то с помощью длинных запросов. Мы не хотим, чтобы такие слова, как ‘the’, ‘is’ или ‘it’, были оценены так же высоко, как ‘bananas’ или ‘street’.

В идеале хочется, чтобы совпадения между более редкими словами оценивались выше. Для этого мы можем умножить TF на второй член — IDF. Обратная частота документа измеряет, насколько часто встречается слово во всех наших документах.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoКомпонент обратной частоты документов (IDF) TF-IDF подсчитывает количество документов, содержащих наш запрос.

Здесь три предложения. Вычислив IDF для нашего распространённого слова ‘is’, получаем гораздо меньшее число, чем в случае более редкого слова ‘forest’. Если бы после мы искали оба слова ‘is’ и ‘forest’, то объединили бы TF и IDF следующим образом:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo

Мы вычисляем оценки TF(‘is’, D) и TF(‘forest’, D) для документов a, b и c. Значение IDF относится ко всем документам, поэтому IDF(‘is’) и IDF(‘forest’) вычисляются только один раз. Затем мы получаем значения TF-IDF для обоих слов в каждом документе путём умножения компонентов TF и IDF. Предложение a набирает наибольшее количество баллов для ‘forest’, а ‘is’ всегда набирает 0, поскольку IDF(‘is’) равно 0.

Это замечательно, но где здесь применяется векторное сходства? Итак, мы берём наш словарный запас (большой список всех слов в нашем наборе данных) и вычисляем TF-IDF для каждого слова.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoМы вычисляем значение TF-IDF каждого слова словаря, чтобы создать вектор TF-IDF. Этот процесс повторяется в каждом документе

Чтобы сформировать векторы TF-IDF, мы можем собрать это воедино:

Отсюда мы получаем вектор TF-IDF. Стоит отметить, что словарь легко может иметь более 20 000 слов, поэтому созданные этим методом векторы невероятно разрежены, а это означает, что закодировать какой-либо семантический смысл мы не можем.

2. BM25

Преемник TF-IDF, Okapi BM25, является результатом оптимизации TF-IDF в первую очередь для нормализации результатов на основе длины документа. TF-IDF — отличный инструмент, но он может давать сомнительные результаты, когда мы начинаем сравнивать несколько упоминаний. Если мы возьмём две статьи по 500 слов и обнаружим, что «Черчилль» в статье А упоминается 6 раз, а в статье Б — 12 раз, должны ли мы считать статью А в два раза менее релевантной? Скорее всего, нет. BM25 решает эту проблему путём модификации TF-IDF:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoФормула BM25

Уравнение выглядит довольно неприятно, но это не что иное, как наша формула TF-IDF с несколькими новыми параметрами! Давайте сравним два компонента TF:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoTF-часть BM25 (слева) по сравнению с TF-частью TF-IDF (справа)

И затем часть IDF, которая даже не вводит никаких новых параметров — она просто переставляет IDF из TF-IDF.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoIDF часть BM25 (слева) в сравнении с IDF TF-IDF (справа)

Итак, каков результат этой модификации? Если взять последовательность из 12 лексем и постепенно подавать в неё всё больше и больше «подходящих» лексем, то получим следующие результаты:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seo что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoСравнение алгоритмов TF-IDF (вверху) и BM25 (внизу) с использованием предложения из 12 лексем и возрастающего числа релевантных лексем (ось x)

Показатель TF-IDF линейно увеличивается с ростом числа релевантных лексем. Таким образом, если частота удваивается — увеличивается и показатель TF-IDF. Звучит круто! Но как реализовать это на Python? Опять же напишем простую и понятную реализацию, как с TF-IDF.

Мы использовали параметры по умолчанию для k и b, и наши результаты выглядят многообещающе. Запрос ‘purple’ соответствует только предложению a, а ‘bananas’ набирает приемлемые баллы и для b, и для c, но для c — немного выше благодаря меньшему количеству слов. Чтобы построить векторы на основе этих данных, сделаем то же самое, что и с TF-IDF.

Опять же, как и в случае с векторами TF-IDF, эти векторы разрежены. Мы не сможем кодировать семантическое [смысловое] значение, вместо этого сосредоточимся на синтаксисе.

Теперь давайте посмотрим, как можно начать рассматривать семантику.

3. BERT

Каждый плотный вектор обычно содержит 768 значений, и мы обычно имеем 512 таких векторов для каждого закодированного BERT предложения. Эти векторы содержат то, что мы можем рассматривать как числовые представления языка. Эти векторы также возможно извлечь (если этого захочется) из разных слоёв, но обычно из последнего слоя. Теперь, имея два правильно закодированных плотных вектора, мы можем использовать метрику сходства, такую как косинусное сходство, чтобы рассчитать теперь уже семантическое сходство. Более выровненные векторы семантически схожи, и наоборот.

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoМеньший угол между векторами (рассчитанный с помощью косинусного сходства) означает, что они более выровнены. Для плотных векторов это коррелирует с большим семантическим сходством

Рассмотрим оба варианта, начиная с подхода через transformers и PyTorch, чтобы получить интуитивное представление о построении векторов. Если вы уже использовали библиотеку трансформаторов HF, первые несколько шагов покажутся вам очень знакомыми: инициализируем SBERT и токенизатор, токенизируем наш текст и обработаем токены моделью.

Мы добавили сюда новое предложение, предложение g несёт тот же семантический смысл, что и b, — без тех же ключевых слов. Из-за отсутствия общих слов все наши предыдущие методы не смогли бы найти сходство между этими двумя последовательностями — запомните это на будущее.

У нас есть векторы длины 768, но это не векторы предложений, так как мы имеем векторное представление каждой лексемы в последовательности (поскольку мы работаем SBERT, их здесь 128, а в случае BERT их 512). Для создания вектора предложений нам необходимо выполнить вычислить среднее значение.

Первое, что мы делаем, — умножаем каждое значение в тензоре embeddings на соответствующее значение attention_mask. Маска attention_mask содержит единицы там, где у нас есть «настоящие токены» (например, не токен заполнения), и нули в других местах — эта операция позволяет нам игнорировать ненастоящие токены.

И вот наши векторы предложений, при помощи которых мы можем измерить сходство, вычислив косинусное сходство между всеми векторами.

Визуализировав массив, можно легко определить предложения с более высоким уровнем сходства:

что такое idf в seo. Смотреть фото что такое idf в seo. Смотреть картинку что такое idf в seo. Картинка про что такое idf в seo. Фото что такое idf в seoТепловая карта, показывающая косинусное сходство между нашими векторами предложений SBERT: обведена оценка между предложениями b и g

Теперь вспомните замечание о том, что предложения b и g имеют по сути одинаковый смысл, но не имеют ни одного одинакового ключевого слова. Мы надеемся, что SBERT с его превосходными семантическими представлениями языка определит эти два предложения как похожие — и вот, пожалуйста, сходство между ними составляет 0,66 балла (обведено выше). Итак, альтернативный (простой) подход заключается в применении SBERT. Чтобы получить точно такой же результат, как выше, напишем:

Что, конечно, гораздо проще. На этом завершаем прогулку по истории с Жаккаром, Левенштейном и Bert!

[1] Market Capitalization of Alphabet (GOOG), Companies Market Cap.

[2] N. Reimers, I. Gurevych, Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (2019), Proceedings of the 2019 Conference on Empirical Methods in 2019.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *