赞
踩
Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助!
让机器帮助我们在海量的文本中快速找到关键信息,这种技术称为——话题建模(topic modeling)。话题建模的方法有许多种,潜在语义索引(LSI),概率潜在语义分析(pLSA),潜狄利克雷分布(LDA)等等方法。
在我们进行话题建模之前先准备好一段文字,这部分内容在我前面几篇NLP初探的文章中有讲到:
'今年前五个月我国制造业新增贷款同比增长10.1%银保监会最新统计,今年以来我国贷款投向结构进一步优化,今年前5个月,新增贷款的一半投向了基础设施建设、制造业、批发零售业和服务业等领域。其中制造业新增贷款1.4万亿元,同比增长10.1%,制造业中长期贷款和信用贷款增长明显加快。对湖北等地免费线上技能培训延长至8月底人力资源社会保障部日前表示,“国家人事人才培训网”等6家线上培训平台面向湖北、“三区三州”深度贫困地区等地的免费线上技能培训课程和直播活动将延长至8月底。线下人力资源社会保障部还将组织“技能大师扶贫组”深入贫困地区对口帮扶。安徽261个重点项目集中开工总投资超1200亿元今天(6月20日),安徽省261个重大项目集中开工,总投资超过1200亿元。新开工项目覆盖安徽16个市,涉及智能家电、新能源电池、餐厨油烟监测等战略性新兴产业以及传统产业升级改造。湖南省2020年抗洪抢险应急演练举行今天,国家综合性消防救援队伍、驻湘部队、医疗救援社会救援力量等共计1800多人,在湖南长沙进行了2020年抗洪抢险应急演练。演练过程中,直升机、冲锋舟、无人机等特种救援装备齐上阵,实战化检验抗洪抢险应急能力。精彩日环食天象明日在全球多地上演天文预报显示,6月21日,精彩的日环食天象将在全球多地上演。在我国,西藏、四川、重庆、贵州、湖南、江西、福建、台湾等地的部分地区将自西向东先后出现日环食景观,全国其他地区的人们可以看到日偏食。'
在经过结巴分词以及停用词的筛选后,变成如下:
- import jieba
- message = "今年前五个月我国制造业新增贷款同比增长10.1%银保监会最新统计,今年以来我国贷款投向结构进一步优化,今年前5个月,新增贷款的一半投向了基础设施建设、制造业、批发零售业和服务业等领域。其中制造业新增贷款1.4万亿元,同比增长10.1%,制造业中长期贷款和信用贷款增长明显加快。对湖北等地免费线上技能培训延长至8月底人力资源社会保障部日前表示,“国家人事人才培训网”等6家线上培训平台面向湖北、“三区三州”深度贫困地区等地的免费线上技能培训课程和直播活动将延长至8月底。线下人力资源社会保障部还将组织“技能大师扶贫组”深入贫困地区对口帮扶。安徽261个重点项目集中开工总投资超1200亿元今天(6月20日),安徽省261个重大项目集中开工,总投资超过1200亿元。新开工项目覆盖安徽16个市,涉及智能家电、新能源电池、餐厨油烟监测等战略性新兴产业以及传统产业升级改造。湖南省2020年抗洪抢险应急演练举行今天,国家综合性消防救援队伍、驻湘部队、医疗救援社会救援力量等共计1800多人,在湖南长沙进行了2020年抗洪抢险应急演练。演练过程中,直升机、冲锋舟、无人机等特种救援装备齐上阵,实战化检验抗洪抢险应急能力。精彩日环食天象明日在全球多地上演天文预报显示,6月21日,精彩的日环食天象将在全球多地上演。在我国,西藏、四川、重庆、贵州、湖南、江西、福建、台湾等地的部分地区将自西向东先后出现日环食景观,全国其他地区的人们可以看到日偏食。"
- word = ' '.join(jieba.cut(message))
- words = ''
- stopwords = [line.strip() for line in open('stopwords.txt',encoding='UTF-8').readlines()]
- for w in word:
- if w not in stopwords:
- words = words + w
- words
'年 前 月 国 制造业 新增 贷款 增长 银 保监 新 统计 年 国 贷款 投 结构 进步 优化 年 前 月 新增 贷款 投 基础设施 建设 制造业 批发 售业 服务业 领域 中 制造业 新增 贷款 万亿元 增长 制造业 中 长期贷款 信贷款 增长 明显 加 湖北 免费 线 技 培训 延长 月底 力资源 社保障部 日前 表示 国家 事 培训网 家线 培训 平台 面 湖北 区 州 深度 贫困区 免费 线 技 培训 课程 直播 动 延长 月底 线 力资源 社保障部 组织 技 师 扶贫 组 深入 贫困区 口 帮扶 安徽 重点项目 集中 开工 总 投资 超 亿元 天 月 日 安徽省 重项目 集中 开工 总 投资 超 亿元 新开工 项目 覆盖 安徽 市 涉 智 家电 新源 电池 餐厨 油烟 监测 战性 新兴产业 统产业 升级 改造 湖南省 年 抗洪抢险 应急 演练 举行 天 国家 综合性 消防 救援 队伍 驻湘 部队 医疗 救援 社 救援 力量 计 湖南 长沙 进行 年 抗洪抢险 应急 演练 演练 程 中 直升机 锋舟 机 特 救援 装备 阵 实战 化 检验 抗洪抢险 应急 力 精彩 日环食 天象 明日 全球 演 天文 预报 显示 月 日 精彩 日环食 天象 全球 演 国 西藏 川 重庆 贵州 湖南 江西 福建 台湾 部分 区 西东 先 现 日环食 景观 全国 区 日偏食 '
下面我们来进行话题建模:
1.需要先进行文本向量化
- from sklearn.decomposition import LatentDirichletAllocation
- from sklearn.feature_extraction.text import TfidfVectorizer
- ## 文本向量化
- with open('message.txt','w') as f:
- f.write(words) #将上一步的分好词的文本保存为一个TXT文档
- f = open('message.txt','r')
- tf = TfidfVectorizer(ngram_range=(1,1))
- x_train = tf.fit_transform(f)
- x_train.toarray()
2.使用LDA模型进行话题建模
接下来我们通过LDA模型来让机器从文档中提取出指定数量的话题,并且告诉我们每个话题包含的高频词有哪些:
- ## 定义一个打印话题建模的函数
- def print_topics(model, feature_names, n_top_words):
- for topic_idx, topic in enumerate(model.components_):
- message = 'topic #%d' % topic_idx
- message = message + ' '.join([feature_names[i] for i in topic.argsort()[:-n_top_words-1:-1]])
- print(message)
- lda = LatentDirichletAllocation(n_components=10)
- lda.fit(x_train)
- n_top_words = 10
- ## 调用打印函数
- print_topics(lda,tf.get_feature_names(),n_top_words)
最后我们来看看结果,一共打印了10个话题,每个话题有10个高频词:
topic #0制造业 救援 贷款 新增 开工 国家 增长 演练 应急 湖南 topic #1售业 覆盖 检验 福建 统产业 监测 演练 医疗 培训网 集中 topic #2明日 天象 湖南省 景观 西藏 月底 重点项目 驻湘 精彩 优化 topic #3贫困区 消防 实战 日前 台湾 力资源 新兴产业 直升机 福建 保监 topic #4日前 装备 锋舟 直升机 天文 投资 服务业 万亿元 培训网 进步 topic #5贵州 领域 预报 电池 批发 救援 队伍 直升机 力资源 深度 topic #6表示 日环食 领域 国家 救援 抗洪抢险 消防 湖北 驻湘 结构 topic #7重点项目 部分 结构 监测 平台 扶贫 湖北 全球 基础设施 显示 topic #8重点项目 景观 增长 平台 进行 进步 统计 表示 医疗 扶贫 topic #9天象 预报 深入 月底 战性 安徽 保监 直播 明日 信贷款
好啦,今天的文章就分享到这里啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。