如何从当前语料库生成自定义的逆文档频率(IDF)文件(三)

第一篇:https://blog.csdn.net/qq_34333481/article/details/84105246

第二篇:https://blog.csdn.net/qq_34333481/article/details/84235921

一个可以运行的例子

'''all_dict = dict()  # 每个单词在所有文章中出现的次数。其每个键的值是一直在+1的。
temp_dict = dict()
#  记录当前这一篇文章中出现的所有单词,因为处理过程对每篇文章进行遍历,所以需要一个变量来记录当前文章的一些值。
# 即它的所有键的值为1.
'''
import math
all_dict = dict() # 在for循环外面,可看作全局变量
total = 0  # 记录文章的个数。
arcticle_list = ['张三','李四','张李']  # 看作三篇文章,每篇文章两个单词。
for article in arcticle_list:
    total += 1
    temp_list = list()
    for word in article:
        temp_list.append(word)
    words = set(temp_list)  # 当前文章包含的单词。
    temp_dict = dict()  # 在for循环里面,看作局部变量。每次循环都从0开始。
    for word in words:
        temp_dict[word] = 1  # 当前文章的单词转换为 单词:1 的字典。
    for key in temp_dict:
        # print(key)
        num = all_dict.get(key, 0)  # 只有这一步是需要逻辑思考一下的。如何把当前文章的单词a 和之前文章的单词a合并到一起
                                    # 通过get()方法取出已经保存的值,然后加1,便完成了当前文章中对单词a的处理。
        all_dict[key] = num + 1
print(all_dict)
print(total)
idf_dict = dict()  # idf字典
for key in all_dict:
    w = key
    p = '%.10f' % (math.log10(total / (all_dict[key])))
    idf_dict[w] = p
print(idf_dict)

 

上一篇:【ESP32-IDF】03 -内存管理


下一篇:ESP32-SOLO-1 arduino 开发环境搭建