«Это 14-й день моего участия в ноябрьском испытании обновлений. Подробную информацию об этом событии см.:Вызов последнего обновления 2021 г."
Что такое TF-IDF?
Алгоритм TF-IDF (термин Frequency-Inverse Document Frequency, термин частотно-обратная частота документа) является широко используемой технологией взвешивания для поиска информации и интеллектуального анализа текста. TF-IDF — это статистический метод оценки важности слова для набора документов или одного из документов в корпусе. Важность слова возрастает пропорционально количеству раз, которое оно появляется в документе. Но при этом он будет уменьшаться обратно пропорционально его частоте в корпусе. Различные формы взвешивания TF-IDF часто применяются поисковыми системами в качестве меры или рейтинга степени релевантности между документами и пользовательскими запросами.
Алгоритм Описание
Предположим, у нас теперь есть статья «Дзен и методы обслуживания мотоциклов», и мы хотим знать, какие ключевые слова статьи.
Во-первых, мы намерены извлечь词频(TF)
, намеревается оценивать ключевые слова по частоте встречаемости слов. Но после статистики мы обнаружили, что слова с наибольшей частотностью слов - это '',' 'Да', 'Бар' и другие слова, которые мы часто видим. Эти слова явно не полезны для статистики статьи, нам нужно фильтровать и фильтровать эти слова, эти слова называются停用词(Stop Words)
.
Отфильтровав стоп-слова, мы нашли слова, которые чаще всего встречаются в статье, а именно «Дзен», «Мотоцикл», «Техническое обслуживание» и так далее. Но если частоты этих слов одинаковы, значит ли это, что они одинаково важны как ключевые слова? Конечно, нет, мы можем обнаружить, что в других статьях «дзен» встречается реже, чем «мотоцикл», «техническое обслуживание» и другие слова, поэтому мы можем думать, что «дзен» важнее в этой статье. Ключевые слова.
Как было сказано выше, чтобы судить о важности слова относительно артикля, помимо частотности слова, о ней нужно судить еще и по частоте слова в других документах, а ее значимость обратно пропорциональна ей. . Указание этой степени важности по отношению к частоте появления в других статьях является逆文档频率(IDF)
в расчете词频TF
и逆文档频率(IDF)
Затем умножьте эти два результатаTF*IDF
, результатTF-IDF
. Чем больше значение TF-IDF для слова, тем важнее это слово по отношению к статье и тем выше его важность как ключевого слова.
В итоге,TF-IDF
Алгоритм — это алгоритм, который оценивает важность слова в соответствующей статье на основе того, как часто оно встречается в соответствующей статье и как часто встречается в других статьях. Его важность пропорциональна частоте появления в статье и обратно пропорциональна частоте появления в других статьях.
Шаг алгоритма
Рассчитать частоту слов
Рассчитать обратную частоту документа
На данный момент нам нужен корпус для вычисления обратной частотности слова в документе по отношению к другим статьям в корпусе. Обратная частота документа обратно пропорциональна частоте появления термина в других документах.
Рассчитать TF-IDF
Код
def TF_IDF(sentence, docs):
tf = dict()
idf = dict()
tf_idf = dict()
stop_words = ["是", "的", "呢", "吧", "啊", "呢"]
# 计算TF
words_cnt = dict()
for w in sentence:
if w in stop_words: # 过滤停词
continue
words_cnt[w] = words_cnt.get(w, 0) + 1
for w in words_cnt:
tf[w] = words_cnt[w] / sum(words_cnt.values())
# 计算IDF
words_cnt_in_docs = dict()
for w in words_cnt:
words_cnt_in_docs[w] = 0
for doc in docs:
if w in doc:
words_cnt_in_docs[w] += 1
for w in words_cnt_in_docs:
idf[w] = math.log(len(docs)/(words_cnt_in_docs[w]+1))
# 计算TF-IDF
for w in words_cnt:
tf_idf[w] = tf[w] * idf[w]
return tf_idf