主题建模-corpora语料库-PCA进行降维

news2024/11/22 21:59:29

https://colab.research.google.com/drive/1F-1Ej7T2xnUKXSmDPjjOChNbBTvQlpnM?usp=sharing

考试

https://colab.research.google.com/drive/1hSRxzFL9cx7PYrHYZeEnT3jRSn8LmQcx?usp=sharing

第一题要求

  1. 聚类选定的新闻数据。此时,请考虑以下事项。(2分:每项0.5分)
  • 创建并应用您自己的停用词处理列表。(0.5 分)
  • 执行内聚聚类时,请使用 Ward 技术以外的技术。(0.5 分)
  • 使用轮廓分数来确定理想的簇数。(0.5 分)
  • 使用散点图可视化聚类结果。(PCA 或 TSNE)(0.5 分)

你今天会学到什么

1.文档聚类

2.主题建模

2.主题建模

主题建模是使用表示文档中潜在主题的词。

它是一种自然语言处理技术,可以自动选择和呈现文档中的文档。

给定大量文档,很难找出这些文档涵盖的主题。

这是一个有用的技能。

但是,需要一个人在分析时判断目标文档分为多少个主题

另外,主题模型呈现的主题并没有作为完美主题提供,

由于它是从文档中提取的关键词,因此主题的解释留给了人类。

主题建模基于长文档而不是短文档(句子),例如推文或评论。

他们往往会给出有意义的结果。

主题模型也对应词袋型,因为它不考虑词的顺序。

在刚刚学习的聚类中,一个文档被归为一个簇。

在主题建模中,一个文档可以有多个主题。

在这种实践中,各种主题建模技术之一

让我们看看一种称为Latent Dirichlet Allocation (LDA)的技术

为此,使用了一个名为gensim的主题建模 Python 库,

为了可视化结果,我们将使用一个名为pyLDAvis的库。

  • gensim:用于构建主题模型的 Python 库
models.ldamodel – Latent Dirichlet Allocation — gensim
  • pyLDAvis:用于可视化主题模型结果的 Python 库
Welcome to pyLDAvis’s documentation! — pyLDAvis 2.1.2 documentation

在主题建模实践中,对200篇经济文章进行韩文预处理后,

让我们创建一个主题模型并可视化结果是什么。

您还将学习如何确定主题的数量。

代码解析

import warnings
warnings.filterwarnings("ignore")
warnings.filterwarnings("ignore", category=DeprecationWarning)

import glob
news_file = []
for file in glob.glob('/content/econ_news/*NewsData.txt'):
# print(file)
news_file.append(file)
news_file.sort()
news_file

from konlpy.tag import Okt
okt = Okt()
stopwords = ['가가', '가지', '각각', '거나', '게다가', '경우', '관련', '그동안', '기자', '다른',
'다만', '다시', '다음', '당시', '대상', '대신', '대해', '더욱', '따라서', '때문',
'또한', '라며', '로부터', '로서', '만약', '만큼', '면서', '모두', '모든', '반면',
'별로', '사이', '생각', '앞서', '앵커', '얘기', '여기', '여부', '우리', '위해',
'이란', '이번', '이후', '일부', '작년', '정도', '지금', '지난', '지난달', '지난해',
'최근', '통해', '현재']
news_raw_texts = [] # 뉴스 기시 본문을 담는 리스트
news_nouns = [] # 명사 리스트 획득
news_data = [] # tfidf.vectorizer에 입력할 데이터
for file in news_file:
with open(file, 'r') as f:
news_text = f.read()
news_raw_texts.append(news_text)
noun_list = okt.nouns(news_text)
cleaned_nouns = [n for n in noun_list if (len(n) > 1) and (n not in stopwords)] # 한 글자로 된 명사를 제거 & stopwords 제거
news_data.append(' '.join(cleaned_nouns))
news_nouns.append(cleaned_nouns)
len(news_nouns)

import glob

news_file = [] # 存储经济新闻文本文件名的列表
for file in glob.glob('/content/econ_news/*NewsData.txt'): # 获取所有以 "NewsData.txt"结尾的文件的文件名
news_file.append(file)

#---

from konlpy.tag import Okt

okt = Okt() # 初始化Konlpy的Okt分词器

# 设置需要去除的停用词
stopwords = ['가가', '가지', '각각', '거나', '게다가', '경우', '관련', '그동안', '기자', '다른',
'다만', '다시', '다음', '당시', '대상', '대신', '대해', '더욱', '따라서', '때문',
'또한', '라며', '로부터', '로서', '만약', '만큼', '면서', '모두', '모든', '반면',
'별로', '사이', '생각', '앞서', '앵커', '얘기', '여기', '여부', '우리', '위해',
'이란', '이번', '이후', '일부', '작년', '정도', '지금', '지난', '지난달', '지난해',
'최근', '통해', '현재']

news_raw_texts = [] # 存储新闻文本的列表
news_nouns = [] # 存储新闻文本中提取出的名词的列表
news_data = [] # 存储将新闻文本中提取出的名词转化为字符串的列表,以便传递给tfidf.vectorizer

# 遍历每一个新闻文件
for file in news_file:
with open(file, 'r') as f:
news_text = f.read() # 读取新闻文本
news_raw_texts.append(news_text) # 将新闻文本存入news_raw_texts列表中
noun_list = okt.nouns(news_text) # 使用Okt分词器对新闻文本进行分词,并只保留名词
cleaned_nouns = [n for n in noun_list if (len(n) > 1) and (n not in stopwords)] # 去除长度为1的名词和停用词
news_data.append(' '.join(cleaned_nouns)) # 将处理后的名词列表转化为以空格分隔的字符串,以便传递给tfidf.vectorizer
news_nouns.append(cleaned_nouns) # 将处理后的名词列表存入news_nouns列表中

#---

corpora语料库




from gensim import corpora
dictionary = corpora.Dictionary(news_nouns) # 使用gensim库的corpora模块创建一个词典
corpus = [dictionary.doc2bow(text) for text in news_nouns] #
这段代码的作用是使用gensim库的corpora模块将文档中的名词列表news_nouns转换为字典dictionary,然后使用该字典 将语料库corpus创建出来
在这里,corpus是一个包含每个文档的 单词索引和词频信息的列表的列表。例如,corpus[1]是一个包含第二篇新闻单词索引和词频信息的列表。
因此,print(corpus[1])的代码输出了第二篇新闻的索引和词频信息。在Python中,索引从0开始,因此第一篇文档的索引是0。

PCA进行降维

以下是使用散点图可视化聚类结果的示例代码,其中使用了PCA进行降维:

import matplotlib.pyplot as plt

from sklearn.decomposition import PCA

# 假设有聚类结果的数据集或特征集

cluster_data = ...

# 使用PCA进行降维

pca = PCA(n_components=2)

reduced_features = pca.fit_transform(cluster_data)

# 假设每个数据点对应的聚类标签为labels

labels = ...

# 绘制散点图

plt.scatter(reduced_features[:, 0], reduced_features[:, 1], c=labels)

plt.xlabel("Component 1")

plt.ylabel("Component 2")

plt.title("Clustering Results")

plt.show()

在这段代码中,首先导入matplotlib.pyplotsklearn.decomposition.PCA。然后,假设有一个聚类结果的数据集或特征集存储在cluster_data中。接下来,使用PCA进行降维,将数据集降低到2维。通过创建PCA对象并调用fit_transform方法,将cluster_data转换为降维后的特征矩阵reduced_features

假设每个数据点对应的聚类标签存储在labels中。最后,使用plt.scatter绘制散点图,将降维后的特征矩阵的第一维和第二维作为横纵坐标,通过指定c参数为labels,将不同聚类标签的数据点着色。

请注意,在使用此代码之前,需要根据实际情况提供合适的数据集或特征集,并根据需要选择PCA或TSNE进行降维。

可用于分析舆情主题,自然语言处理,非常高级

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法篇——贪心算法大集合(js版)

455.分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有…

Vue收集表单数据和过滤器

目录 收集表单数据 收集表单数据总结 过滤器 过滤器小结 收集表单数据 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--vue--><script src"https://cdn.sta…

【C#】GridControl日期字段显示时分秒

系列文章 【C#】单号生成器&#xff08;编号规则、固定字符、流水号、产生业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器&#xff08;开始日期、结束日期&#xff09; 本文链接&#xff1a;h…

Vue3+elementPlus 表格提示宽度设置无效问题

网上都说这样改 但是我的改了无效&#xff01; 试了下这样就可以了 <style lang"css">.el-popper {font-size: 14px;max-width: 600px; } </style>

【springboot test】springboot 单元测试配置文件加载顺序及覆盖关系

springboot test 配置文件加载顺序及覆盖关系 参照目录结构:1.配置文件加载基础原则:2.application.yml主配置文件加载原则:3.application.yml中指定spring.profiles.active:xxx时,xxx的加载原则:4.使用ActiveProfiles("yyy")时:5.其他自定义配置文件,如xxx.properti…

为什么需要防雷接地,防雷接地的作用是什么

为什么需要电气接地&#xff1f; 您是否曾经在工作条件下使用任何电器时接触过电击&#xff1f;几乎每个人的答案都是肯定的&#xff0c;有时这些电击是轻微的&#xff0c;但有时会对电气和电子设备造成损坏&#xff0c;并可能危及生命。为防止对人的生命和电器造成任何损害&a…

网络计算模式(一)

CDN网络概念 CDN&#xff1a;Content Delivery Network&#xff0c;即内容分发网络。 其目的是通过在现有的Internet中增加一层新的网络架构&#xff0c;将网站的内容发布到最接近用户的网络“边缘”。使用户可以就近取得所需的内容&#xff0c;解决Internet网络拥挤的状况&a…

盘点十大机器人公众号

原创 | 文BFT机器人 一、机器人大讲堂 公众号定位&#xff1a;引领行业发展的新媒体平台 更新频率&#xff1a;1篇主推3篇副推/每日更新 文章内容&#xff1a; 1. 行业市场新动态&#xff08;常作为主推&#xff09; 吸引关注科技市场动态的客户群体 2. 项目、政策 吸引需…

DI93A HESG440355R3为什么电容器分为多种?只有一种电容器不行吗?

​ DI93A HESG440355R3为什么电容器分为多种&#xff1f;只有一种电容器不行吗&#xff1f; 电子产品由不同的电子元件组成&#xff0c;包括电容器、电感器、电阻器、线圈、发电机等&#xff0c;其中电容器是常见的电子元件。电容器按照类别分为多种电容器&#xff0c;常见的有…

Barra模型因子的构建及应用系列十之Leverage因子

一、摘要 在前期的Barra模型系列文章中&#xff0c;我们构建了Size因子、Beta因子、Momentum因子、Residual Volatility因子、NonLinear Size因子、Book-to-Price因子、Liquidity因子、Earning_Yeild因子和Growth因子 &#xff0c;并分别创建了对应的单因子策略&#xff0c;其…

基于Java的医护人员排班系统设计与实现【附源码】

角色分为管理员、医生、护士 登录、注册页面&#xff1a; 工号、姓名、科室、密码、电话、性别、邮箱 管理员功能&#xff1a; 1、个人中心&#xff1a;个人信息、修改密码。 2、科室信息&#xff1a;增删改查&#xff0c;每个科室要有科室人员。 3、医生信息&#xff1a;增删改…

通过chatGPT学习:L2网络和L3网络?

下面的总结是通过chatGPT4进行的。 1、 L2网络和L3网络 L2网络和L3网络是计算机网络中的两种不同的网络类型&#xff0c;它们有一些不同的特点和应用场景。 L2网络&#xff0c;也被称为数据链路层网络&#xff0c; 主要是通过物理地址&#xff08;MAC地址&#xff09;来转发…

.Net6 导出excel使用aspose.cells23.5.0

一、测试代码 internal class Program { static void Main(string[] args) { WorkbookDesigner wb new WorkbookDesigner(new Workbook()); var style new CellsFactory().CreateStyle(); style.Borders.SetColor(C…

计算机视觉——day 92 基于跨领域协作学习的单图像去雨

基于跨领域协作学习的单图像去雨 1. Introduction3. Proposed method3.1 网络架构 4. Experiments and results4.1 数据集和指标4.3 合成图像的结果4.8 建模复杂度和运行时间 5. Conclusion 1. Introduction 深度卷积神经网络(DCNN)在图像解析任务中取得了优异的性能。然而&am…

量化投资 无套利 No-arbitrage

文章目录 量化投资 无套利 No-arbitrageState of Nature市场域 Market Span 套利 Arbitrage无套利和正线性定价规则 No-arbitrage and Positive Linear Pricing RuleImplication 1: One-price PrincipleImplication 2: PositivityImplication 3: AdditivityImplication 4: Homo…

QGIS Desktop与QGIS Server 下载安装

QGIS是一款开源的地理信息系统软件&#xff0c;全称为Quantum GIS。它提供了一系列强大的GIS功能&#xff0c;可以用于浏览、编辑、分析和处理各种地理空间信息。QGIS支持多种矢量、栅格和数据库数据格式&#xff0c;包括ESRI Shapefile、GeoJSON、GML、PostGIS、Oracle Spatia…

基于Kubernetes集群构建大中型企业CICD应用平台(8)--通过jenkins把从远程拉取的代码推送执行其他主机上,然后进行镜像打包并进行部署

一、配置Maven构建代码 代码拉取到Jenkins本地后&#xff0c;需要在Jenkins中对代码进行构建&#xff0c;这里需要Maven的环境&#xff0c;而Maven需要Java的环境&#xff0c;接下来需要在Jenkins中安装JDK和Maven&#xff0c;并且配置到Jenkins服务。 - 准备JDK、Maven压缩包…

Appuploader 常见错误及解决方法

转载&#xff1a;Appuploader 常见错误及解决方法 Appuploader是一款用于上传、管理和分享iOS应用的客户端工具。使用Appuploader可以让您更加便捷地管理和分享您的应用程序&#xff0c;同时也能够提高工作效率。本文将介绍一些常见的Appuploader错误及其解决方法。 1.登录失…

软考算法-算法篇

软考算法 一&#xff1a;故事背景二&#xff1a;分治法2.1 概念2.2 题目描述2.3 代码实现2.4 总结提升 三&#xff1a;回溯法3.1 概念3.2 题目描述3.3 代码实现3.3.1 TreeNode 类3.3.2 将数组处理成二叉树结构并且返回根节点3.3.3 进行搜索 3.4 总结提升 四&#xff1a;回溯法-…

【数据分析之道-Matplotlib(四)】Matplotlib散点图

文章目录 专栏导读1、Matplotlib散点图语法2、Matplotlib散点图设置图标大小3、Matplotlib散点图自定义点颜色4、Matplotlib散点图设置两组散点图5、Matplotlib散点图使用随机数来设置散点图6、Matplotlib散点图显示颜色条 Colormap 专栏导读 ✍ 作者简介&#xff1a;i阿极&…