TF-IDF
Написать 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, разработанная для оценки релевантности документов в
поисковых системах. Вот как это работает:
- Оценка частотности термина
(TF): В отличие от обычногоTF-IDF,BM25использует модель оценки частотности термина, которая более чувствительна к различиям в частоте терминов. Она определяется как:
где:
-
- частота термина в документе .
-
- длина документа .
-
- средняя длина документа в корпусе.
-
и - настраиваемые параметры.
-
Оценка обратной частотности документа
(IDF):IDFвBM25оценивает важность термина в контексте всего корпуса документов, как и в TF-IDF. -
Расчет релевантности: Релевантность документа для запроса вычисляется как сумма
IDF-взвешенных значенийTFдля всех терминов запроса:
BM25 позволяет лучше учитывать частоту терминов и длину документов
в оценке их релевантности, что делает его эффективным методом для поиска и
ранжирования документов.
Плюсы/минусы TF-IDF, Bag of words.
TF-IDF:
Плюсы:
-
Учитывает важность слова в контексте всей коллекции документов.
-
Позволяет выделить наиболее информативные слова, отфильтровывая часто встречающиеся общие слова.
-
Хорошо работает с длинными текстами и большими коллекциями документов.
Минусы:
-
Не учитывает порядок слов в тексте и их взаимосвязь.
-
Может иметь проблемы с редкими словами, которые могут получить завышенные веса из-за низкой обратной частоты встречаемости.
Bag of Words:
Плюсы:
-
Простота и понятность концепции.
-
Может быть эффективен для коротких текстов и простых задач.
-
Хорошо работает с часто встречающимися словами.
Минусы:
-
Не учитывает порядок слов и их семантическую структуру.
-
Может приводить к разреженным матрицам при большом словаре или коллекции документов.
-
Не учитывает важность слов в контексте всей коллекции.