TF/IDF 算法

阅读: 评论:0

TF/IDF 算法

TF/IDF 算法

第一关

# 停用词表加载方法

def get_stopword_list():

    # 停用词表存储路径,每一行为一个词,按行读取进行加载

    # 进行编码转换确保匹配准确率

    stop_word_path = './'

    stopword_list = [sw.replace('n', '') for sw in open(stop_word_path,encoding='utf-8').readlines()]

    return stopword_list

if __name__ == '__main__':

    text=input()

    result=""

    # 任务:使用停用词表去掉text文本中的停用词,并将结果保存至result变量

    # ********** Begin *********#

    stopword_list=get_stopword_list()

    for s in text:

        if s not in stopword_list:

            result+=s

        

    

    # ********** End **********#

    print(result,end="")

第2关

#本程序的作用是通过TF/IDF算法完成对文本的关键词提取,输出前十个关键词。

import math

import jieba

import jieba.posseg as psg

from gensim import corpora, models

from jieba import analyse

import functools

class TfIdf(object):

    # 四个参数分别是:训练好的idf字典,默认idf值,处理后的待提取文本,关键词数量

    def __init__(self, idf_dic, default_idf, word_list, keyword_num):

        self.word_list = word_list

        self.idf_dic, self.default_idf = idf_dic, default_idf

        self.tf_dic = _tf_dic()

        self.keyword_num = keyword_num

        

    def get_tf_dic(self):

        tf_dic = {}

    # 任务:完成word_list的tf值的统计函数,将结果存储到tf_dic变量中

    # ********** Begin *******

        for word in self.word_list:

            tf_dic[word] = (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     

        

            

    # ********** End **********#

        return tf_dic

    # 按公式计算tf-idf

    def get_tfidf(self):

        tfidf_dic = {}

        for word in self.word_list:

            idf = self.(word, self.default_idf)

            tf = self.(word, 0)

            tfidf = tf * idf

            tfidf_dic[word] = tfidf

        tfidf_dic.items()

        # 根据tf-idf排序,去排名前keyword_num的词作为关键词

        for k, v in sorted(tfidf_dic.items(), key&#p_to_key(cmp), reverse=True)[:self.keyword_num]:

            print(k + "/ ", end='')

        print()

        

        

#排序函数,用于topK关键词的按值排序

def cmp(e1, e2):

    import numpy as np

    res = np.sign(e1[1] - e2[1])

    if res != 0:

        return res

    else:

        a = e1[0] + e2[0]

        b = e2[0] + e1[0]

        if a > b:

            return 1

        elif a == b:

            return 0

        else:

            return -1

本文发布于:2024-02-05 01:03:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170720516961638.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   TF   IDF
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23