Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

TF-IDF

Все темы Data Scientist

Написать TF-IDF функцию.

Решение:
import math

def tfidf(term, document, corpus):
    # TF (Term Frequency) - частота термина в документе
    tf = document.count(term) / len(document)

    # IDF (Inverse Document Frequency) - обратная частота документа с термином
    num_documents_with_term = sum(1 for doc in corpus if term in doc)
    idf = math.log(len(corpus) / (1 + num_documents_with_term))

    return tf * idf

# Пример использования:
corpus = [
    "This is the first document.",
    "This document is the second document.",
    "And this is the third one.",
    "Is this the first document?",
]

documents = [doc.lower().split() for doc in corpus]

term = "document"
for i, doc in enumerate(documents):
    print(f"TF-IDF for term '{term}' in document {i+1}: {tfidf(term, doc, documents)}")

Рассказать про модификацию TF-IDF под названием BM25 как работает?

BM25 (Best Matching 25) - это улучшенная версия TF-IDF, разработанная для оценки релевантности документов в поисковых системах. Вот как это работает:

  1. Оценка частотности термина (TF): В отличие от обычного TF-IDF, BM25 использует модель оценки частотности термина, которая более чувствительна к различиям в частоте терминов. Она определяется как:
TF(q,d)=f(q,d)(k1+1)f(q,d)+k1(1b+bdavgdl)TF(q, d) = \frac{f(q, d) \cdot (k_1 + 1)}{f(q, d) + k_1 \cdot \left(1 - b + b \cdot \frac{|d|}{avgdl}\right)}

где:

  • f(q,d)f(q, d) - частота термина qq в документе dd.

  • d|d| - длина документа dd.

  • avgdlavgdl - средняя длина документа в корпусе.

  • k1k_1 и bb - настраиваемые параметры.

  1. Оценка обратной частотности документа (IDF): IDF в BM25 оценивает важность термина в контексте всего корпуса документов, как и в TF-IDF.

  2. Расчет релевантности: Релевантность документа для запроса вычисляется как сумма IDF-взвешенных значений TF для всех терминов запроса:

BM25(q,d)=qiqIDF(qi)TF(qi,d)\text{BM25}(q, d) = \sum_{q_i \in q} \text{IDF}(q_i) \cdot \text{TF}(q_i, d)

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


Плюсы/минусы TF-IDF, Bag of words.

TF-IDF:

Плюсы:

  1. Учитывает важность слова в контексте всей коллекции документов.

  2. Позволяет выделить наиболее информативные слова, отфильтровывая часто встречающиеся общие слова.

  3. Хорошо работает с длинными текстами и большими коллекциями документов.

Минусы:

  1. Не учитывает порядок слов в тексте и их взаимосвязь.

  2. Может иметь проблемы с редкими словами, которые могут получить завышенные веса из-за низкой обратной частоты встречаемости.

Bag of Words:

Плюсы:

  1. Простота и понятность концепции.

  2. Может быть эффективен для коротких текстов и простых задач.

  3. Хорошо работает с часто встречающимися словами.

Минусы:

  1. Не учитывает порядок слов и их семантическую структуру.

  2. Может приводить к разреженным матрицам при большом словаре или коллекции документов.

  3. Не учитывает важность слов в контексте всей коллекции.

Эта страница была полезной?