程序计算速度已经有效提高了,现在大概只需要2-3秒的计算时间就能提取出输入词条的关键词,不过代码还是不太美观,于是将它进行封装
class TfIdf(object):
# 四个参数分别是:训练好的idf字典,默认idf字典,处理后的待提取文本, 关键词数量
def init(self, idf_dic, default_idf, word_list):
self.idf_dic, self.default_idf = idf_dic, default_idf
self.word_list = word_list
self.tf_dic = self.get_tf_dic() # 统计tf值
def get_tf_dic(self):
# 统计tf值
tf_dic = {}
for word in self.word_list:
tf_dic[word] = tf_dic.get(word, 0.0) + 1.0
tt_count = len(self.word_list)
for k, v in tf_dic.items():
tf_dic[k] = float(v) / tt_count # 根据tf求值公式
return tf_dic
def get_tfidf(self):
# 计算tf-idf值
tfidf_dic = {}
for word in self.word_list:
idf = self.idf_dic.get(word, self.default_idf)
tf = self.tf_dic.get(word, 0)
tfidf = tf * idf
tfidf_dic[word] = tfidf
tfidf_dic.items()
# 根据tf-idf排序,去排名前keyword_num的词作为关键词
i = 0
Li = []
for k, v in sorted(tfidf_dic.items(), key=functools.cmp_to_key(cmp), reverse=True):
Li.append(k)
return Li
2021-07-15
最新推荐文章于 2021-07-18 23:02:21 发布