文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

困惑度、主题一致性,lda模型找出主题相关词

2023-09-10 08:10

关注

困惑度perplexity:句子的概率的倒数。如果句子的概率越大,说明这句话越符合人话的规律,即p(句子),pp困惑度越小。模型对该句子就越不困惑。
在这里插入图片描述
在这里插入图片描述
通俗一点解释下就是,困惑度表示的对于一篇文章来说,我们有多不确定它是属于某个主题的。即主题的个数越多,模型的困惑度就越低,但是注意一点,当主题数很多的时候,生成的模型往往会过拟合,所以不能单纯依靠困惑度来判断一个模型的好坏。这时候我们的另一个判断标准就有作用了。biubiu~一致性!
困惑度可视化:

def perplexity_visible_model(self, topic_num, data_num):        '''        @description: 绘制困惑度-主题数目曲线        @param {type}         @return:         '''        # texts = self.fenci_data()        _, corpus = self.weibo_lda()        x_list = []        y_list = []        for i in range(1,topic_num):            model_name = './lda_{}_{}.model'.format(i, data_num)            try:                lda = models.ldamodel.LdaModel.load(model_name)-                perplexity = lda.log_perplexity(corpus)                print(perplexity)                x_list.append(i)                y_list.append(perplexity)            except Exception as e:                print(e)        plt.xlabel('num topics')        plt.ylabel('perplexity score')        plt.legend(('perplexity_values'), loc='best')        plt.show()

在这里插入图片描述

主题一致性:coherence。更高的一致性分数表示更好的aspect可解释性,意味着更有意义,还有语义上更连贯。

def visible_model(self, topic_num, data_num):        '''        @description: 可视化模型        @param :topic_num:主题的数量        @param :data_num:数据的量        @return: 可视化lda模型        '''        dictionary, _ = self.weibo_lda()        texts = self.fenci_data()        x_list = []        y_list = []        for i in range(1,topic_num):            model_name = './lda_{}_{}.model'.format(i, data_num)            try:                lda = models.ldamodel.LdaModel.load(model_name)                cv_tmp = CoherenceModel(model=lda, texts=texts, dictionary=dictionary, coherence='c_v')                x_list.append(i)                y_list.append(cv_tmp.get_coherence())            except:                print('没有这个模型:{}'.format(model_name))        plt.plot(x_list, y_list)        plt.xlabel('num topics')        plt.ylabel('coherence score')        plt.legend(('coherence_values'), loc='best')        plt.show()

在这里插入图片描述
可借鉴网址:
https://zhuanlan.zhihu.com/p/106982034
实战:

#找到最佳k通过主题一致性得分去找 import tomotopy as tptp.isadef find_k(docs,min_k=1,max_k=20,min_df=2):    #min_df 词语最少出现在两个文档中    import matplotlib.pyplot as plt    scores = []    for k in range(min_k,max_k):        mdl = tp.LDAModel(min_df = min_df,k = k,seed = 555)        #print("mdl",mdl)        for words in docs:            if words:                mdl.add_doc(words)        mdl.train(20)        coh = tp.coherence.Coherence(mdl)        scores.append(coh.get_score())    plt.plot(range(min_k,max_k),scores)    plt.xlabel("number of topics")    plt.ylabel("coherence")    plt.show()find_k(docs =df['words'],min_k=1,max_k=40,min_df=2)                

在这里插入图片描述
通过图形,我暂时将主题定为10个。其中的tomotopy可见网址:tomotopy | 速度最快的LDA主题模型

来源地址:https://blog.csdn.net/stay_foolish12/article/details/127240167

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯