Из sklearn TfidfTransformer
;
# perform idf smoothing if required
df += int(self.smooth_idf)
n_samples += int(self.smooth_idf)
# log+1 instead of log makes sure terms with zero idf don't get
# suppressed entirely.
idf = np.log(n_samples / df) + 1
df
и n_samples
увеличиваются на единицу, если smooth_idf
равно True
.
Итак, мы добавляем один ки делитель и знаменатель, или мы не меняем ни одного из них
Поскольку мы также увеличиваем делитель, мы никогда не получим отрицательные значения.
В этом примере мы добавляем +1
в журнал.Поскольку после этого шага idf
преобразуется в разреженную матрицу, а в разреженной матрице пропускаются нули.Итак, мы хотим иметь значение, отличное от 0
для каждого термина.
Подробнее о smooth_idf из документации;
smooth_idf : boolean, default=True
Smooth idf weights by adding one to document frequencies, as if an
extra document was seen containing every term in the collection
exactly once. Prevents zero divisions.