TF-IDF算法 原理、算法公式解释、实现

TF-IDF算法的原理:

TF的意思:词频

TF计算方法:
tf的算法

IDF的意思:全文本库中该词的逆文本率

IDF的计算方法:
IDF的算法

TF-IDF的算法:
TF-IDF算法

实现过程:
# by miaomiaomiao
'''
函数说明:文本统计
Parameters:
    paper_txt:文本
Returns:
    txt_formed:统计结果
'''
def txt_forming(paper_txt):
    txt_formed={}
    for i in paper_txt:
        txt_formed[i]=0
    for i in paper_txt:
        txt_formed[i]+=1
    return txt_formed


'''
函数说明:该文本中该词的词频统计
Parameters:
     word:该词
     paper:该文本
Returns:
     tf_value:归一化词频结果
'''
def TF(word,paper):
    paper=txt_forming(paper)
    times=0
    if word in paper:
        times+=(paper[word])
    all_times=0
    for i in paper.values():
        all_times+=i
    tf_value=times/all_times
    return tf_value

'''
函数说明:该词在全文本库中逆文本log指数
Parameters:
     word:该词
     paper_base:文本集合
     log_bottom:将idf值log化底
Returns:
     idf_value:归一化词频结果
'''
def IDF(word,paper_base,log_bottom=10):
    '''在文本库中每个文本中找该词,如果不在里面就+1'''
    n=len(paper_base)
    count=0
    for i in paper_base:
        if word in i:
            count+=1
    idf_value=math.log(n/(count+1),log_bottom)
    return idf_value



'''
函数说明:该文本中该词的词频统计
Parameters:
     word:该词
     paper:该文本
     paper_base:文本集合
     log_bottom:将idf值log化底
Returns:
     tf_idf_value:TF-IDF值
'''
def TF_IDF(word,paper,paper_base,log_bottom=10):
    tf_value=TF(word,paper)
    idf_value=IDF(word,paper_base,log_bottom)
    tf_idf_value=tf_value*idf_value
#     print(tf_value,idf_value)
    return tf_idf_value

'''
函数说明:TF-IDF化文本集合
Parameters:
     paper_base:文本集合
     log_bottom:将idf值log化底
Returns:
     datas__TF_IDF:TF-IDF化列表
'''
def tf_idf_base(paper_base,log_bottom=10):
    datas__TF_IDF=[]
    for paper in papersBase:
        tf_idf={}
        for word in paper:
            tf_idf[word]=TF_IDF(word,paper,paper_base,log_bottom)
        datas__TF_IDF.append(tf_idf)
    return datas__TF_IDF

over.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值