Your AI powered learning assistant

3 Векторных метода поиска сходства (TF-IDF, BM25, SBERT)

Intro

00:00:00

Изучение методов поиска сходства на основе векторов Рассматриваются три метода поиска сходства на основе векторов: TF-IDF, BM25 и Sentence BERT. Рассказывается об их работе и интуиции, лежащей в их основе. Реализация каждого метода на Python.

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

TF-IDF

00:01:37

Понимание компонентов TF-IDF TF-IDF состоит из двух компонентов: частоты использования термина (tf) и обратной частоты использования документа (idf). TF измеряет частоту появления запроса в документе, в то время как IDF вычисляет редкость слова во всех документах. Сочетание TF и IDF помогает расставить приоритеты между уникальными словами, а не общими, с точки зрения соответствия запросу.

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

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

BM25

00:11:44

BM25: Оптимизированная версия TF-IDF BM25 - это оптимизированная версия TF-IDF, которая решает проблему линейного увеличения количества баллов в зависимости от частоты использования документов. В отличие от TF-IDF, где удвоение частоты слов удваивает количество баллов, BM25 нормализует это значение, учитывая длину документа и настраиваемые параметры, такие как k и b. Алгоритм включает в себя корректировку частоты использования терминов в зависимости от длины документа и компонентов idf, аналогичных TF-IDF, но с небольшими изменениями.

Реализация алгоритма BM25 на Python При реализации алгоритма BM25 на Python мы вычисляем частоту использования терминов, используя настраиваемые параметры, такие как k и b, а также среднюю длину документа (dl). Мы также вычисляем компоненты idf, разделяя общее количество документов на документы, содержащие запросы. Несмотря на незначительные различия, такие как использование логарифмической базы между BM25 и TF-IDF, общее сравнение показывает, что, в то время как TFID линейно увеличивается с частотой слов, BM 2 быстро увеличивается, а затем выравнивается для более реалистичной оценки релевантности.

SBERT

00:20:30

SBERT: Преобразование языка в плотные векторы Экспертный алгоритм использует плотные представления языка, в отличие от разреженных векторов, таких как TF-IDF и BM25. Плотные векторы содержат больше информации в меньшем пространстве, что позволяет получить осмысленное представление языка с учетом сходства между такими словами, как "привет" и "hello". Используя уровни кодирования BERT, как запросы, так и документы обрабатываются для получения плотных векторов, которые сравниваются с использованием косинусоидального сходства для измерения их близости.

Использование трансформаторов предложений для обеспечения семантического сходства В видео рассказывается об использовании библиотеки sentence transformers, разработанной компанией Hugging Face's transformers. Благодаря использованию таких моделей, как Sentence-BERT (СБЕРТ), семантическое значение при определении сходства имеет приоритет над точным соответствием слов. Благодаря визуализации с использованием matplotlib эффективность SBERT демонстрируется за счет точного определения семантического сходства даже при различии слов.