<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>这是一个NLP参赛项目的主题分析环节的代码,总体的工程代码已经上传至github,可以直接下载使用。</p>
讯享网
https://github.com/stay-leave/weibo-public-opinion-analysis
现在将思路分享给大家。
LDA主题模型是Blei等人于2003年提出的一种文档主题生成模型,包括文档、主题和词项3个层级结构。LDA常被用于识别语料中潜在的主题信息。
LDA认为第m篇文档的生成方式如下:
1.对每个主题k∈[1,K],生成“主题-词项”分布 φ⃗ k∼Dir(β⃗ );
2.生成文档m的“文档-主题”分布ϑ⃗ m∼Dir(α⃗ );
3.生成文档m的长度Nm∼Poiss(ξ);
4.对文档m中的每个词n∈[1,Nm],生成当前位置的所属主题 zm,n∼Mult(ϑ⃗ m);
5.根据之前生成的主题分布,生成当前位置的词的相应词项 wm,n∼Mult(φ⃗ zm,n)。
因此,我们的工作是要进行逆推导,从若干词项中找出文档的能够代表文档主题的。

讯享网
使用Python的开源第三方库Gensim对热搜博文进行LDA主题分析。
微博数据的清洗异常复杂,清洗代码如下:
讯享网
清洗完了之后,进行文本分词,代码如下:
导入分词文件:

讯享网
构建词典及向量空间:
这里使用主题一致性指数和困惑度指数来确定合理的主题数目。
讯享网
对于一篇文档,我们使用上面的LDA只能是一次确定一个主题数的模型,无法选择若干主题数间**的主题,这里使用暴力搜索,确定**模型。
讯享网
展示每个模型的结果:
主题关键词输出:
0 0.023*“产能” + 0.017*“适合” + 0.016*“电子” + 0.015*“程序” + 0.015*“调度” + 0.014*“变异” + 0.014*“认购” + 0.013*“佩戴” + 0.013*“产业化” + 0.013*“收入”
1 0.023*“肺炎” + 0.019*“人群” + 0.018*“重点” + 0.018*“冷链” + 0.017*“物品” + 0.016*“社区” + 0.015*“装卸” + 0.015*“北京市” + 0.015*“视频” + 0.015*“工作者”
2 0.024*“几针” + 0.018*“新冠病毒” + 0.017*“疫苗接种” + 0.017*“医疗” + 0.016*“科兴” + 0.015*“上海” + 0.014*“上市” + 0.014*“科主任” + 0.013*“探访” + 0.012*“中上”
3 0.019*“抗体” + 0.019*“感染” + 0.015*“全球” + 0.014*“药物” + 0.014*“介绍” + 0.014*“显示” + 0.014*“联合” + 0.014*“距离” + 0.013*“观察” + 0.013*“民众”
4 0.018*“计划” + 0.016*“包括” + 0.015*“国药” + 0.015*“总统” + 0.015*“英国” + 0.015*“整体” + 0.012*“全市” + 0.012*“时间” + 0.012*“新冠疫苗” + 0.011*“累计”
5 0.026*“临床试验” + 0.023*“免疫” + 0.022*“孕妇” + 0.022*“间隔” + 0.022*“糖尿病” + 0.021*“高血压” + 0.021*“年龄段” + 0.021*“新冠病毒” + 0.021*“妇女” + 0.019*“适合”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/203924.html