sklearn实现lda主题模型LatentDirichletAllocation
sklearn实现lda主题模型LatentDirichletAllocation
- 1. 数据集
- 2. 数据读取
- 3. 停用词,分词
- 4. 对文章转换为词频向量
- 5. lda模型
- 6. 预测
本文通过LDA算法挖掘新闻文章的主题
源码位置
https://github.com/lilihongjava/leeblog_python/tree/master/lda
代码大体流程
if __name__ == '__main__':df = pd.read_csv('./data/cnews.csv')data = df["content"]data_list = data.values.tolist()data_list = list_seg_depart(data_list)print(data_list)cv_file = "./CountVectorizer.pkl"cnt_data_list = count_frequency(data_list, cv_file)model_file = "./lda_model.pk"docres = lda_fit_transform(model_file, cnt_data_list)# 文档所属每个类别的概率LDA_corpus = np.array(docres)print('类别所属概率:\n', LDA_corpus)# 预测pre_list = ["北美票房综述:《速度与激情4》王牌归位(图)本周综述2009年的第一个“首映性话题”正式诞生!回归系列原点的《速度与激情4》(Fast and Furious),以约7251万美元的夸张成绩高调亮相(该数据打破多项纪录,后文详述),瞬间把影市煮沸!!!Top 12的总和继续攀升近10%,大盘累计约1.52亿$。这不仅是今年春季档的最火爆周末、自今年冬季情人节档期(总统纪念日周末)以来的最卖座周末,更刷新了影史同期的最好成绩,甚至成为整个4月份的历代最畅销周末(此前的纪录保持者是2005年4月第一周末《地狱男爵1》坐庄时的1.14亿$)。“2010奥斯卡战线”继续前进。伍迪·艾伦的新片《管用就好》(Whatever Works)和佩德罗·阿莫多瓦的新片《破碎的拥抱》(Broken Embraces)内部试映均获一致好评。另外还有“《口是心非》(Duplicity,托尼·吉尔洛伊执导)的朱莉亚·罗伯茨有望入围金球奖”、“拉斯·冯·特里尔的新片《反基督》(Antichrist)和昆汀·塔伦蒂诺的新片《无良杂牌军》(Inglourious Basterds)均会参赛戛纳电影节”等重磅传闻。同时,关于第81届奥斯卡颁奖典礼的最后一则内幕也在这星期大白于天下。值得一提的还有,“2009奥斯卡终极大盘点”本周完结,最后为您细数本届颁奖典礼的六大看点,以此收尾~ 目录:一、北美票房榜二、新片《速度与激情4》、《冒险乐园》、《大而无当》、《放牛班欢乐颂》、《异形入侵》、《猎杀大行动》、《倒霉蛋也有春天》三、2010奥斯卡战线(二)本周流言[09年总第15期]四、2009奥斯卡终极大盘点(六)五、预告片推荐+下周预告状元郎《速度与激情4》(Fast and Furious)一举推倒上星期领衔的CG动画《怪兽大战外星人》(Monsters Vs. Aliens),在远远不如对手强势的3461家院线内,以单馆平均近21000$的超高亩产,收割到约7251万$的巨大丰收。各位读者朋友们想必也看出来了——对比8500万$的预算,如此秀逸的数字,即便放在暑期档依旧惊人。《速度与激情》系列的前两部平均1.3亿$,在第一部结束后文·迪塞尔走人、而第二部独挑大梁的保罗·沃克也在第三部开机前逃之夭夭,于是第三部最终仅有6000万$出头,还不如最新一集首映三天捞得多。言归正传,回头看《速与激4》的7251万$首映值,该成绩是:《速度与激情》系列的历代最高首映(远超二代的5047万$);“赛车电影”的影史历代最高首映(远超《赛车总动员》的6012万$);本年度迄今的最高首映(远超《怪兽大战外星人》的5932万$和《守望者》的5521万$);4月份的影史历代最高首映(远超《愤怒管理》的4222万$和《恐怖电影4》的4022万$);春季档的影史历代最高首映(超越《斯巴达300勇士》的7089万$和《冰河世纪2》的6803万$)。……不仅如此,《速度与激情》甚至能在“PG-13作品”内排进影视历代第19位,与《辛普森一家》、《王牌大贱谍3》、《指环王3:王者归来》、《侏罗纪公园2:失落的世界》等猛片称兄道弟。更令人咋舌的是,该片仅在首映当日便进账3011万$,虽然只在影史首映成绩中排名第21位,却改写了整个春季档(3月/4月)的历史,是“春季首发作品”的影史历代最火爆开画日,同样把《斯巴达300勇士》等一干手下败将抛在身后。尽管周六较之周五跳水约19%,显示不出强韧的后劲——但哪怕首映数字占最终收益的50%,《速度与激情4》仍能创造系列的最高战绩。本来,受第三集票房大惨败的影响,环球对本作已无信心,面对5月底的《飞屋历险记》(Up)和6月底的《变形金刚2:卷土重来》(Transformers: Revenge of the Fallen)的前后夹击,决意退避三舍。因此,早早安排《速度与激情4》从暑期档的6月上旬一路逃奔至此。熟料映期提前后柳暗花明、喜从天降,一举书写了本年度迄今为止的最华丽首映。看来文·迪塞尔、保罗·沃克、米切尔·罗德里格兹、乔丹娜·布雷斯特“四大元老”同时回归的魅力果然不同凡响。热情不减当年的初代粉丝蜂拥而来不说;对《极速赛车手》的卡通路线大失所望的现实主义影迷们,也在第二款预告片的感召下摩肩接踵地迈进映厅。30岁以下的男性观众几乎占据七成以上,难怪《灾难先知》、《12回合》、《飓风营救》、《守望者》等同样主攻相应客源的动作片纷纷大幅跳水。2005年的《超级奶爸》大卖后惨遭《判我有罪》和《巴比伦纪元》两连败的文·迪塞尔、2006年的《南极大冒险》热映后不幸摊上《夺命枪火》和《父辈的旗帜》两度票房砸锅的保罗·沃克、《速度与激情1》结束后只能在TV不朽剧《迷失》中偶尔客串的米切尔·罗德里格兹、2006年暑期搞砸系列第三部而被踢回独立制片界的导演林诣彬……。综观诸位落魄的剧组核心阵容,可知《速度与激情4》本星期的爆棚,着实救活了一大批人,在此谨向各位道一声——恭喜发财!!!按系列的一般规律,下星期跌破55%几乎是板上钉钉的劫数。可尽管如此,本片仍有一定几率连庄——只要《汉娜·蒙塔纳》(Hannah Montana The Movie)那个黄花闺女不“爆发”——实现《守望者》和《怪兽大战外星人》未竟的愿望。保守估计,《速度与激情4》至少有望进账1.5亿$,至于更高的数字则暂不宜过分乐观。再来看滑落榜眼的《怪兽大战外星人》。不得了,本片的制作成本竟高达1.75亿$,真是一条可怕的新闻!!!上周末在IMAX巨幕影厅疯狂席卷2500万$(首映总计5932万$)的头条记忆犹新,转眼便被天价预算这一瓢冷水浇飞。尽管该片本周末已顺利突破1亿$关卡,但无论《冰河世纪2》还是《马达加斯加2》的同期数据,都已把《怪兽大战外星人》远远甩在身后。再结合《冰2》最终1.95亿$、《马2》最终1.8亿$的实际情况,……也就是说,《怪战外》冲击2亿$的梦想果然如我上周所言,破灭了!?虽然这星期受了新人王《速度与激情4》不少气,但我坚信,凭借全家共赏的绵长内力,《怪兽大战外星人》的总销量很可能反超新科状元——至于最终的着陆点,还是保持上周的看法,八成会在1.5亿$至1.8亿$之间吧。梦工厂的各位粉丝们,千万别忘了到我国院线去支持这部CG卡通片,尽管3D眼镜有点烦人,但作品本身绝对十分娱乐!上周探花《康涅狄格鬼屋事件》的“出口调查”反映出一个重大现象。虽然是恐怖片,却有近62%的观众是17岁至24岁的年轻女性。原来去年末至今的恐怖热浪,原动力竟是女性粉丝。究竟是《暮光之城》培养的结果,还是TV小腐剧《神秘力量》的两大男主角先后出入《血腥情人节》和《黑色星期五》刺激而成?……总之,此话题值得玩味。Top 12的其他各位也没什么好说,大家不妨自己看数据。惟有本周亮相的新片《冒险乐园》(Adventureland)令人心疼,枉有超越《太坏了》的高媒体评价和来自《暮光之城》的人气女主角,依然在讨喜的《怪兽大战外星人》、《寻找伴郎》、《地球奶爸》等强敌的围追堵截下运营惨淡。首映周末仅在1862家电影院攫金601万$的战果已足够丧气,更悲情的是,与反响奇佳的现实相对应的居然是“周五>周六>周日”的短命销售曲线,但愿下星期的走势能有所好转,不然还真挺奇怪的。"]pre_list = list_seg_depart(pre_list)pre_cnt_data_list = count_frequency(pre_list, cv_file)pre_docres = lda_fit_transform(model_file, pre_cnt_data_list)print('预测数据概率:\n', np.array(pre_docres))
1. 数据集
cnews.csv,包含新闻标题和新闻内容
2. 数据读取
获取新闻内容,转换为list
df = pd.read_csv('./data/cnews.csv')data = df["content"]data_list = data.values.tolist()
3. 停用词,分词
代码入口
data_list = list_seg_depart(data_list)
获取停用词
def list_seg_depart(list_seg):sw = stopwords_list()return [seg_depart(x, sw) for x in list_seg]
提供jieba对句子进行中文分词,并且通过re.match过滤,保留中文、数字、英文
# 对句子进行中文分词
def seg_depart(sentence, stopwords):sentence_depart = jieba.cut(sentence.strip())out_str = ''# 去停用词for word in sentence_depart:# keep English, digital and Chinese ^A-Z^a-z^0-9^\u4e00-\u9fa5if word not in stopwords and not re.match(r'[^A-Z^a-z^0-9^\u4e00-\u9fa5]', word):out_str += wordout_str += " "return out_str
4. 对文章转换为词频向量
代码入口
cv_file = "./CountVectorizer.pkl"cnt_data_list = count_frequency(data_list, cv_file)
通过CountVectorizer把文章词频向量,这里通过joblib.dump保存CountVectorizer,下次使用直接加载,不用再fit。这里要注意在加载时,应当调用cnt_vector.transform方法,而不是fit_transform
# 词频向量
def count_frequency(corpus, in_file):if os.path.exists(in_file):cnt_vector = joblib.load(in_file)cnt_tf = cnt_vector.transform(corpus)else:cnt_vector = CountVectorizer()cnt_tf = cnt_vector.fit_transform(corpus)print('主题词袋:', len(cnt_vector.get_feature_names()))joblib.dump(cnt_vector, in_file)return cnt_tf
5. lda模型
入口代码
model_file = "./lda_model.pk"docres = lda_fit_transform(model_file, cnt_data_list)
lda模型,这里判断了模型是否存在,如果存在,则调用 lda.transform方法,用于预测。如果不存在,则进行fit_transform方法
# lda模型
def lda_fit_transform(in_model, model_in_data):if os.path.exists(in_model):lda = joblib.load(in_model)res = lda.transform(model_in_data)else:# LDA主题模型lda = LatentDirichletAllocation(n_components=2, # 主题个数# max_iter=5, # EM算法的最大迭代次数# learning_method='online',learning_offset=50., # 仅仅在算法使用online时有意义,取值要大于1。用来减小前面训练样本批次对最终模型的影响random_state=0)res = lda.fit_transform(model_in_data)joblib.dump(lda, in_model)return res
6. 预测
代码入口
# 预测pre_list = ["北美票房综述:《速度与激情4》王牌归位(图)本周综述2009年的第一个“首映性话题”正式诞生!回归系列原点的《速度与激情4》(Fast and Furious),以约7251万美元的夸张成绩高调亮相(该数据打破多项纪录,后文详述),瞬间把影市煮沸!!!Top 12的总和继续攀升近10%,大盘累计约1.52亿$。这不仅是今年春季档的最火爆周末、自今年冬季情人节档期(总统纪念日周末)以来的最卖座周末,更刷新了影史同期的最好成绩,甚至成为整个4月份的历代最畅销周末(此前的纪录保持者是2005年4月第一周末《地狱男爵1》坐庄时的1.14亿$)。“2010奥斯卡战线”继续前进。伍迪·艾伦的新片《管用就好》(Whatever Works)和佩德罗·阿莫多瓦的新片《破碎的拥抱》(Broken Embraces)内部试映均获一致好评。另外还有“《口是心非》(Duplicity,托尼·吉尔洛伊执导)的朱莉亚·罗伯茨有望入围金球奖”、“拉斯·冯·特里尔的新片《反基督》(Antichrist)和昆汀·塔伦蒂诺的新片《无良杂牌军》(Inglourious Basterds)均会参赛戛纳电影节”等重磅传闻。同时,关于第81届奥斯卡颁奖典礼的最后一则内幕也在这星期大白于天下。值得一提的还有,“2009奥斯卡终极大盘点”本周完结,最后为您细数本届颁奖典礼的六大看点,以此收尾~ 目录:一、北美票房榜二、新片《速度与激情4》、《冒险乐园》、《大而无当》、《放牛班欢乐颂》、《异形入侵》、《猎杀大行动》、《倒霉蛋也有春天》三、2010奥斯卡战线(二)本周流言[09年总第15期]四、2009奥斯卡终极大盘点(六)五、预告片推荐+下周预告状元郎《速度与激情4》(Fast and Furious)一举推倒上星期领衔的CG动画《怪兽大战外星人》(Monsters Vs. Aliens),在远远不如对手强势的3461家院线内,以单馆平均近21000$的超高亩产,收割到约7251万$的巨大丰收。各位读者朋友们想必也看出来了——对比8500万$的预算,如此秀逸的数字,即便放在暑期档依旧惊人。《速度与激情》系列的前两部平均1.3亿$,在第一部结束后文·迪塞尔走人、而第二部独挑大梁的保罗·沃克也在第三部开机前逃之夭夭,于是第三部最终仅有6000万$出头,还不如最新一集首映三天捞得多。言归正传,回头看《速与激4》的7251万$首映值,该成绩是:《速度与激情》系列的历代最高首映(远超二代的5047万$);“赛车电影”的影史历代最高首映(远超《赛车总动员》的6012万$);本年度迄今的最高首映(远超《怪兽大战外星人》的5932万$和《守望者》的5521万$);4月份的影史历代最高首映(远超《愤怒管理》的4222万$和《恐怖电影4》的4022万$);春季档的影史历代最高首映(超越《斯巴达300勇士》的7089万$和《冰河世纪2》的6803万$)。……不仅如此,《速度与激情》甚至能在“PG-13作品”内排进影视历代第19位,与《辛普森一家》、《王牌大贱谍3》、《指环王3:王者归来》、《侏罗纪公园2:失落的世界》等猛片称兄道弟。更令人咋舌的是,该片仅在首映当日便进账3011万$,虽然只在影史首映成绩中排名第21位,却改写了整个春季档(3月/4月)的历史,是“春季首发作品”的影史历代最火爆开画日,同样把《斯巴达300勇士》等一干手下败将抛在身后。尽管周六较之周五跳水约19%,显示不出强韧的后劲——但哪怕首映数字占最终收益的50%,《速度与激情4》仍能创造系列的最高战绩。本来,受第三集票房大惨败的影响,环球对本作已无信心,面对5月底的《飞屋历险记》(Up)和6月底的《变形金刚2:卷土重来》(Transformers: Revenge of the Fallen)的前后夹击,决意退避三舍。因此,早早安排《速度与激情4》从暑期档的6月上旬一路逃奔至此。熟料映期提前后柳暗花明、喜从天降,一举书写了本年度迄今为止的最华丽首映。看来文·迪塞尔、保罗·沃克、米切尔·罗德里格兹、乔丹娜·布雷斯特“四大元老”同时回归的魅力果然不同凡响。热情不减当年的初代粉丝蜂拥而来不说;对《极速赛车手》的卡通路线大失所望的现实主义影迷们,也在第二款预告片的感召下摩肩接踵地迈进映厅。30岁以下的男性观众几乎占据七成以上,难怪《灾难先知》、《12回合》、《飓风营救》、《守望者》等同样主攻相应客源的动作片纷纷大幅跳水。2005年的《超级奶爸》大卖后惨遭《判我有罪》和《巴比伦纪元》两连败的文·迪塞尔、2006年的《南极大冒险》热映后不幸摊上《夺命枪火》和《父辈的旗帜》两度票房砸锅的保罗·沃克、《速度与激情1》结束后只能在TV不朽剧《迷失》中偶尔客串的米切尔·罗德里格兹、2006年暑期搞砸系列第三部而被踢回独立制片界的导演林诣彬……。综观诸位落魄的剧组核心阵容,可知《速度与激情4》本星期的爆棚,着实救活了一大批人,在此谨向各位道一声——恭喜发财!!!按系列的一般规律,下星期跌破55%几乎是板上钉钉的劫数。可尽管如此,本片仍有一定几率连庄——只要《汉娜·蒙塔纳》(Hannah Montana The Movie)那个黄花闺女不“爆发”——实现《守望者》和《怪兽大战外星人》未竟的愿望。保守估计,《速度与激情4》至少有望进账1.5亿$,至于更高的数字则暂不宜过分乐观。再来看滑落榜眼的《怪兽大战外星人》。不得了,本片的制作成本竟高达1.75亿$,真是一条可怕的新闻!!!上周末在IMAX巨幕影厅疯狂席卷2500万$(首映总计5932万$)的头条记忆犹新,转眼便被天价预算这一瓢冷水浇飞。尽管该片本周末已顺利突破1亿$关卡,但无论《冰河世纪2》还是《马达加斯加2》的同期数据,都已把《怪兽大战外星人》远远甩在身后。再结合《冰2》最终1.95亿$、《马2》最终1.8亿$的实际情况,……也就是说,《怪战外》冲击2亿$的梦想果然如我上周所言,破灭了!?虽然这星期受了新人王《速度与激情4》不少气,但我坚信,凭借全家共赏的绵长内力,《怪兽大战外星人》的总销量很可能反超新科状元——至于最终的着陆点,还是保持上周的看法,八成会在1.5亿$至1.8亿$之间吧。梦工厂的各位粉丝们,千万别忘了到我国院线去支持这部CG卡通片,尽管3D眼镜有点烦人,但作品本身绝对十分娱乐!上周探花《康涅狄格鬼屋事件》的“出口调查”反映出一个重大现象。虽然是恐怖片,却有近62%的观众是17岁至24岁的年轻女性。原来去年末至今的恐怖热浪,原动力竟是女性粉丝。究竟是《暮光之城》培养的结果,还是TV小腐剧《神秘力量》的两大男主角先后出入《血腥情人节》和《黑色星期五》刺激而成?……总之,此话题值得玩味。Top 12的其他各位也没什么好说,大家不妨自己看数据。惟有本周亮相的新片《冒险乐园》(Adventureland)令人心疼,枉有超越《太坏了》的高媒体评价和来自《暮光之城》的人气女主角,依然在讨喜的《怪兽大战外星人》、《寻找伴郎》、《地球奶爸》等强敌的围追堵截下运营惨淡。首映周末仅在1862家电影院攫金601万$的战果已足够丧气,更悲情的是,与反响奇佳的现实相对应的居然是“周五>周六>周日”的短命销售曲线,但愿下星期的走势能有所好转,不然还真挺奇怪的。"]pre_list = list_seg_depart(pre_list)pre_cnt_data_list = count_frequency(pre_list, cv_file)pre_docres = lda_fit_transform(model_file, pre_cnt_data_list)print('预测数据概率:\n', np.array(pre_docres))
预测的文章,一样要经过分词、停用词、词频统计,最后进行lda预测,输出主题的概率
sklearn实现lda主题模型LatentDirichletAllocation相关推荐
- 基于sklearn实现LDA主题模型(附实战案例)
目录 LDA主题模型 1.LDA主题模型原理 2.LDA主题模型推演过程 3.sklearn实现LDA主题模型(实战) 3.1数据集介绍 3.2导入数据 3.3分词处理 3.4文本向量化 3.5构建L ...
- 【带你玩转主题模型Topic Model】—— 之 利用sklearn 实现Latetnt Dirichlet Allocation(LDA)主题模型
写在前面的话 9月份的第一篇blog, 正好是开学季,作为一个学生,hahahha, 我还是正正经经的贡献一篇认为比较干货的文章给大家吧. 我自己是花了很多时间去看懂LDA的算法了,当然了这篇文章不涉 ...
- LDA主题模型及python实现
LDA(Latent Dirichlet Allocation)中文翻译为:潜在狄利克雷分布.LDA主题模型是一种文档生成模型,是一种非监督机器学习技术.它认为一篇文档是有多个主题的,而每个主题又对应 ...
- 【python-sklearn】中文文本处理LDA主题模型分析
数据集和资料: 链接:LDA主题模型 提取码:rlns 数据概览 代码: import os import pandas as pd import re import jieba import jie ...
- 《学术小白的学习之路 07》自然语言处理之 LDA主题模型 01
本文主要是学习参考杨秀璋老师的博客,笔记总结与记忆. 原文链接 文章目录 书山有路勤为径,学海无涯苦作舟(行行代码要手敲) 零.吃水不忘挖井人 一.LDA主题模型 1.1简介 1.2安装 二.LDA主 ...
- 词典构造方法之LDA主题模型
词典构造方法之LDA主题模型 主题模型LDA原理理解 LDA是一种非监督学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息.它采用了词 ...
- 网易云评论进行LDA主题模型分析
网易云评论进行LDA主题模型分析 前言 这个项目是在学校参加竞赛下与另一个同学一起做的,我负责的是对评论进行LDA主题模型的分析.写这篇文章是想记录一下学习过程,有什么地方描述的不对还请大家多多指教, ...
- lda主题模型的可视化_把LDA主题模型作为自己的硕士课题,有什么可以做的?
经典的LDA主题模型实现了文本的软聚类的工作,将文档转化为基于主题的数值向量,每个维度上的主题概率取值就是对特定主题的聚类中心的隶属度.由于LDA主题模型提出较早,所以作为基础模型有了很多改进和创新, ...
- 【机器学习】基于LDA主题模型的人脸识别专利分析
作者 | Soren Gran 编译 | VK 来源 | Towards Data Science 介绍 作为一名数据科学家,文本数据提出了一个独特的挑战:虽然金融.年龄和温度数据可以立即被注入线性回 ...
- [Pyhon疫情大数据分析] 三.新闻信息抓取及词云可视化、文本聚类和LDA主题模型文本挖掘
思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图显示.情感分析.舆情分析.主题挖掘.威胁情报溯源.知识图谱.预测预警及AI和NL ...
最新文章
- 浅谈MySQL存储引擎-InnoDBMyISAM
- 针对蓝牙4.0 BLE通讯过程的逆向和攻击
- 数据库报错: SQLCODE: -418, SQLSTATE: 42610, SQLERRMC: null
- c语言五子棋linux,在linux下ubuntu的五子棋游戏c语言代码.doc
- linux之用openssl命令Base64编码解码、md5/sha1摘要、AES/DES3加密解密
- junit junit_JSON的JUnit Hamcrest Matcher
- Eclipse的部署项目时的配置
- 全国哀悼日网站页面变成灰色的filter方法
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP-net)
- ORACLE GOLDENGATE: WHAT IS ADD TRANDATA REALLY DOING?
- 数字图像处理 冈萨雷斯(第四版)距离测度
- “出色”IT项目经理的5大关键能力
- 用python在树莓派上编程,你可以将项目扩展到令人难以置信的规模
- 打算做知识付费,所有了解一下视频加密
- 欧洲中世纪名剑兵器谱
- 第一次sql注入的教训与思考
- 2023山西大学计算机考研信息汇总
- 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组(GO,PHP)
- 浅谈偏光镜使用与选购[机器视觉系列]
- 吉时利万用表DMM6500