Как преодолеть недостаток обратной частоты документов (IDF)

#search-engine #information-retrieval

#поисковая система #поиск информации

Вопрос:

Пожалуйста, скажите мне, как преодолеть проблему отрицательного взвешивания в IDF. Может кто-нибудь привести небольшой пример?

Комментарии:

1. Отрицательный вес? Как это должно произойти?

2. @qqilihq IDF демонстрирует потенциально серьезные недостатки при использовании его для терминов, встречающихся более чем в половине документов корпуса. IDF этих терминов отрицательный, поэтому для любых двух почти идентичных документов, один из которых содержит термин, а другой его не содержит, последний, возможно, получит больший балл. Это означает, что термины, встречающиеся более чем в половине корпуса, будут вносить отрицательный вклад в итоговую оценку документа.

Ответ №1:

IDF определяется как N / n (t), где n (t) — количество документов, в которых встречается термин «t», а N — общее количество документов в коллекции. Иногда вокруг этой доли применяется log().

Пожалуйста, обратите внимание, что эта доля N / n (t) всегда > = 1. Для слова, которое встречается во всех документах, вероятным случаем которого является английское слово «the», значение idf равно 1. Даже если вокруг этой доли применяется логарифм, значение всегда равно> = нулю. (Вспомните график функции log, которая монотонно увеличивается от -inf до inf с log(x)<0, если x<1 log(1) =0 и log(x)> 0, если x>1).

Таким образом, стандартное определение idf не может быть отрицательным.

Ответ №2:

Ответ, данный Debasis, полностью правильный. Однако отрицательный idf все равно может привести к результату, если к делителю добавляется небольшой член 1, чтобы избежать ошибок деления на ноль. Одним из источников, который предполагает это, является статья Википедии о tf-idf . Проблема в том, что операция регистрации затем приводит к отрицательному значению, если количество встречаемости n (t) равно количеству документов N (т. Е. Оно появляется во всех из них). Я только что столкнулся с этой проблемой при реализации tf-idf для игрушечной задачи, где количество документов N = 3 и количество встречаемости 3 обычно = 0, но в результате idf -0.287682072451781 из-за 1 поправочный член увеличил делитель до 4, > чем количество документов. Возможно, это было причиной отрицательных весов, с которыми столкнулась операционная система. Я решил опубликовать это на случай, если кто-то еще снова столкнется с этой изначально непонятной проблемой. Исправление простое: удалите термин 1 и найдите другой способ избежать ошибок деления на ноль.