秒懂TF IDF 代码实现

TF-IDF算法步骤:

1) 计算词频:

词频 = 某个词在文章中出现的次数
考虑到文章有长短之分,考虑到不同文章之间的比较,将词频进行标准化
词频 = 某个词在文章中出现的次数/文章的总词数
或者 词频 = 某个词在文章中出现的次数/该文出现次数最多的词出现的次数

2) 计算逆文档频率

需要一个语料库(corpus)来模拟语言的使用环境。
逆文档频率 = log(语料库的文档总数/(包含该词的文档数 + 1))

3) 计算TF-IDF

TF-IDF = 词频(TF)* 逆文档频率(IDF)

#语料库content_clean 已经删除过停用词的语料库
test_str_list = content_clean[3002] #随便选择一条语料库中的文章作为测试的文本
word_count_dict = {} #计算测试文本中每个词的词频
for word in test_str_list:
    word_count_dict[word] = word_count_dict.get(word,0)+1

#词频标准化
word_num = len(test_str_list)
word_standar_dict = {}
for i in word_count_dict:
    word_standar_dict[i] = word_count_dict[i]/word_num
    
corpus_num = len(content_clean) #语料库文章总数

def lookfor_paper_num(word):#寻找测试文本中每个词汇在多少篇文献中出现过
    count = 0
    for paper in content_clean:
        if word in paper:
            count+=1
    return count

tf_idf = {} #存储tf_idf的值

for i in word_standar_dict:
    tf_idf[i]=word_standar_dict[i]*math.log(corpus_num/(lookfor_paper_num(i)+1))
    
#排序输出
for i in sorted(tf_idf.items(),key=lambda x:x[1],reverse=True):
    print(i)

测试结果:
测试文本:
光鲜亮丽、薪资较高的女主播一直是令人艳羡的职业。台上一分钟,台下十年功,一起来盘点央视16位美女主播成功秘诀是什么?N易プ×嗣恳淮位会,不辜负每一次对我的选择。我沉迷于工作。追求事业的女人是美丽的。我生活当中所有的快乐、所有的满足感、所有的幸福感几乎都是在舞台上获取的,当舞台上的灯光亮起的时候,当镜头对准你,当无数双眼睛看着你的时候,那一刻特别的欣慰。一旦离开这个环境,生活的一切都变得好像不那么重要了,我可以素面朝天出门,随便吃一点东西。我狂热地迷恋从一个舞台到另一个舞台的感觉,已经到了像飞蛾扑火一样的狂热。每天睡上几个小时,就会精力百倍。我的外表给人的感觉是稳重,但我内心深处的那种力量却生生不息。仿佛生命所有的一切都是为了那一刻。我喜欢这种压力之后的完美释放,即使精力到达极限。P∽柿希阂丫是央视“一姐”的董卿,毕业于上海戏剧学院,1995年初涉电视,逐步形成了清新大方、亲切自然、文化气息浓郁的主持风格,无论在专栏节目还是在大型晚会中都能体现出良好的个人素养和专业水准。含蓄内敛的气质赋予了她收放自如的大气和沉稳,以及一份积淀了淡定与自信的美丽。现主持《欢乐中国行》、《魅力中国》

输出结果
(‘舞台’, 0.10330761169090742)
(‘女主播’, 0.09939216228751277)
(‘狂热’, 0.08358479122753996)
(‘那一刻’, 0.08178388269582765)
(‘精力’, 0.06363810977257751)
(‘美丽’, 0.06062054817571321)
(‘央视’, 0.05812742988400046)

你可能感兴趣的:(数据分析&文本挖掘)