Алгоритм "TF-IDF" - написать девушку с нуля (1)

искусственный интеллект

«Это 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

Справочная статья