python实现TF-IDF

import math
class TFIDf:
    def __init__(self):
        self.doc = [
            ['I','love','you', 'my','dear'],
            ['my','god','I','like','you'],
            ['good','morning'],
            ['good','afternoon']
        ]
        self.vocab = []
        self.dict = {}
        self._tf = []
        self._idf = []
        
    def _getvocab(self):
        for item in self.doc:
            for word in item:
                self.dict[word] = self.dict.get(word,0) + 1
        self.vocab = list(self.dict.keys())
    def tf(self):
        self._getvocab()
        self._tf = []
        for i in self.vocab:
            self._tf.append(self.dict[i])
        
    def idf(self):
        self.tf()
        for word in self.vocab:
            cnt = 0
            for item in self.doc:
                if word in item:
                    cnt += 1
            self._idf.append(math.log(len(self.doc)  / cnt ) + 1)
    def tfidf(self):
        self.idf()
        tf = self._tf
        idf = self._idf
        self.tfidf = []
        for i,j in zip(tf,idf):
            self.tfidf.append(i*j)
        for i in range(len(self.tfidf)):
            print('word',self.vocab[i],'tf',self._tf[i],'idf',self._idf[i])
x = TFIDf()
x.tfidf()
        
           
        
    

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖无为

感谢你们的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值