Как вычислить TF-IDF запроса?


Как вычислить tf-idf для запроса? Я понимаю, как вычислить tf-idf для набора документов со следующими определениями:

Tf = вхождения в документе / общее количество слов в документе

Idf = log (#documents / #documents, где встречается термин

Но я не понимаю, как это соотносится с запросами.

Например , я читаю ресурс , в котором указаны значения запроса "life learning"

Life | tf = .5 / idf = 1.405507153 | tf_idf = 0.702753576
обучение | tf = .5 / idf = 1.405507153 / tf_idf = 0.702753576

Значения tf я понимаю, каждый член появляется только один раз из двух возможных членов, таким образом 1/2, но я понятия не имею, откуда происходит idf.
Я бы подумал, что #documents = 1 и occurrence = 1, log (1) = 0, поэтому idf будет 0, но это, похоже, не так. Основано ли оно на тех документах, которыми вы пользуетесь? Как вы вычисляете tf-idf для запроса?

2 7

2 ответа:

Только tf (life) зависит от самого запроса. Однако idf запроса зависит от исходных документов, поэтому idf(life) = 1+ ln(3/2) ~= 1.405507153. Именно поэтому tf-idf определяется как умножение локальной составляющей (частоты термина) с глобальной составляющей (частотой обратного документа).

Предположим, что ваш запрослучшее страхование автомобиля , ваш общий словарь содержитавтомобиль, лучший, авто, страхование и у вас есть N=1,000,000 документы. Поэтому ваш запрос выглядит примерно так:

Введите описание изображения здесь

И одним из ваших документов может быть:

Введите описание изображения здесь

Теперь вычислитекосинусное подобие между TF-IDF вашего Query и Document.