关于数据科学的文本分析案例

news2024/11/24 19:57:43

在本文中,我们尝试通过进行一些文本挖掘来发现数据科学相关概念。我们将从一篇关于数据科学的文本开始,从中提取关键字,然后尝试可视化结果。
作为文本,将使用维基百科的数据科学页面:

url = 'https://en.wikipedia.org/wiki/Data_science'

步骤1 获取数据

import requests

text = requests.get(url).content.decode('utf-8')
print(text[:1000])

'''
<!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Data science - Wikipedia</title>
<script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":!1,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"1a104647-90de-485a-b88a-1406e889a5d1","wgCSPNonce":!1,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":!1,"wgNamespaceNumber":0,"wgPageName":"Data_science","wgTitle":"Data science","wgCurRevisionId":1038046078,"wgRevisionId":1038046078,"wgArticleId":35458904,"wgIsArticle":!0,"wgIsRedirect":!1,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 maint: others","Articles with short description","Short description matches Wikidata","Use dmy dates from December 2012","Information science","Computer occupations"
'''

步骤2 转换数据

下一步是将数据转换为适合处理的形式。在我们的例子中,我们已经从页面下载了HTML源代码,我们需要将其转换为纯文本。
有很多方法可以做到这一点。我们将使用来自 Python 的最简单的内置 HTMLParser 对象。我们需要对 HTMLParser 类进行子类化,并定义将收集 HTML 标签内所有文本的代码, 除了"script",“style” 标签。

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    script = False
    res = ""
    def handle_starttag(self, tag, attrs):
        if tag.lower() in ["script","style"]:
            self.script = True
    def handle_endtag(self, tag):
        if tag.lower() in ["script","style"]:
            self.script = False
    def handle_data(self, data):
        if str.strip(data)=="" or self.script:
            return
        self.res += ' '+data.replace('[ edit ]','')

parser = MyHTMLParser()
parser.feed(text)
text = parser.res
print(text[:1000])

'''
 Data science - Wikipedia Data science From Wikipedia, the free encyclopedia Jump to navigation Jump to search Interdisciplinary field of study focused on deriving knowledge and insights from data Not to be confused with  information science . The existence of  Comet NEOWISE  (here depicted as a series of red dots) was discovered by analyzing  astronomical survey  data acquired by a  space telescope , the  Wide-field Infrared Survey Explorer . Part of a series on Machine learning and  data mining Problems Classification Clustering Regression Anomaly detection AutoML Association rules Reinforcement learning Structured prediction Feature engineering Feature learning Online learning Semi-supervised learning Unsupervised learning Learning to rank Grammar induction Supervised learning ( classification  •  regression ) Decision trees Ensembles Bagging Boosting Random forest k -NN Linear regression Naive Bayes Artificial neural networks Logistic regression Perceptron Relevance vector machine 
'''

步骤3 得到结果

最重要的一步是将我们的数据转化为某种形式,我们可以从中得出结果。在我们的例子中,我们想从文本中提取关键字,看看哪些关键字更有意义。
我们将使用名为RAKE的Python库进行关键字提取。首先,让我们安装这个库,以防它不存在:

import sys
!{sys.executable} -m pip install nlp_rake

'''
Requirement already satisfied: nlp_rake in c:\winapp\miniconda3\lib\site-packages (0.0.2)
Requirement already satisfied: numpy>=1.14.4 in c:\winapp\miniconda3\lib\site-packages (from nlp_rake) (1.19.5)
Requirement already satisfied: pyrsistent>=0.14.2 in c:\winapp\miniconda3\lib\site-packages (from nlp_rake) (0.17.3)
Requirement already satisfied: regex>=2018.6.6 in c:\winapp\miniconda3\lib\site-packages (from nlp_rake) (2021.8.3)
Requirement already satisfied: langdetect>=1.0.8 in c:\winapp\miniconda3\lib\site-packages (from nlp_rake) (1.0.9)
Requirement already satisfied: six in c:\winapp\miniconda3\lib\site-packages (from langdetect>=1.0.8->nlp_rake) (1.16.0)
C:\winapp\Miniconda3\lib\site-packages\secretstorage\dhcrypto.py:16: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
C:\winapp\Miniconda3\lib\site-packages\secretstorage\util.py:25: CryptographyDeprecationWarning: int_from_bytes is deprecated, use int.from_bytes instead
  from cryptography.utils import int_from_bytes
WARNING: Ignoring invalid distribution -umpy (c:\winapp\miniconda3\lib\site-packages)
WARNING: Ignoring invalid distribution -umpy (c:\winapp\miniconda3\lib\site-packages)
WARNING: Ignoring invalid distribution -umpy (c:\winapp\miniconda3\lib\site-packages)
WARNING: Ignoring invalid distribution -umpy (c:\winapp\miniconda3\lib\site-packages)
WARNING: Ignoring invalid distribution -umpy (c:\winapp\miniconda3\lib\site-packages)
'''

主要功能可从 Rake 对象获得,我们可以使用一些参数对其进行自定义。在我们的例子中,我们将关键字的最小长度设置为 5 个字符,将文档中关键字的最小频率设置为 3,将关键字中的最大单词数设置为 2。随意使用其他值并观察结果。

import nlp_rake
extractor = nlp_rake.Rake(max_words=2,min_freq=3,min_chars=5)
res = extractor.apply(text)
res

'''
[('machine learning', 4.0),
 ('big data', 4.0),
 ('data scientist', 4.0),
 ('21st century', 4.0),
 ('data science', 3.909090909090909),
 ('computer science', 3.909090909090909),
 ('information science', 3.797979797979798),
 ('data analysis', 3.666666666666667),
 ('application domains', 3.6),
 ('science', 1.9090909090909092),
 ('field', 1.25),
 ('statistics', 1.2272727272727273),
 ('classification', 1.2),
 ('techniques', 1.1666666666666667),
 ('datasets', 1.0),
 ('education', 1.0),
 ('archived', 1.0),
 ('original', 1.0),
 ('chikio', 1.0),
 ('forbes', 1.0)]
'''

我们获得了一个列表术语以及相关的重要性程度。如您所见,最相关的学科(例如机器学习和大数据)出现在列表中排名靠前的位置。

步骤4 可视化结果

人们可以以视觉形式最好地解释数据。因此,可视化数据以得出一些见解通常是有意义的。我们可以在 Python 中使用 matplotlib 库来绘制关键字及其相关性的简单分布:

import matplotlib.pyplot as plt

def plot(pair_list):
    k,v = zip(*pair_list)
    plt.bar(range(len(k)),v)
    plt.xticks(range(len(k)),k,rotation='vertical')
    plt.show()

plot(res)

在这里插入图片描述
然而,还有更好的方法来可视化单词频率 - 使用词云。我们需要安装另一个库来从关键字列表中绘制词云。

!{sys.executable} -m pip install wordcloud

WordCloud对象负责接收原始文本或预先计算的单词列表及其频率,以及返回和图像,然后可以使用matplotlib显示:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

wc = WordCloud(background_color='white',width=800,height=600)
plt.figure(figsize=(15,7))
plt.imshow(wc.generate_from_frequencies({ k:v for k,v in res }))

在这里插入图片描述

我们也可以将原始文本传递给 WordCloud - 让我们看看我们是否能够得到类似的结果:

plt.figure(figsize=(15,7))
plt.imshow(wc.generate(text))

在这里插入图片描述

wc.generate(text).to_file('images/ds_wordcloud.png')

'''
<wordcloud.wordcloud.WordCloud at 0x224b99d76a0>
'''

您可以看到词云现在看起来更令人印象深刻,但它也包含很多噪音(例如,不相关的单词,例如检索到)。此外,我们得到的由两个词组成的关键字更少,例如数据科学家或计算机科学。这是因为RAKE算法在从文本中选择好的关键字方面做得更好。这个例子说明了数据预处理和清理的重要性,因为最后的清晰图片将使我们能够做出更好的决策。

在这个练习中,我们经历了一个简单的过程,以关键字和词云的形式从维基百科文本中提取一些含义。这个例子非常简单,但它很好地展示了数据科学家在处理数据时将采取的所有典型步骤,从数据采集到可视化。

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

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

相关文章

Java 高级应用-多线程-(二)线程安全问题及解决

当我们使用多个线程访问同一资源&#xff08;可以是同一个变量、同一个文件、同一条 记录等&#xff09;的时候&#xff0c;若多个线程只有读操作&#xff0c;那么不会发生线程安全问题。但是如 果多个线程中对资源有读和写的操作&#xff0c;就容易出现线程安全问题。 5.1 同…

四段论提问让ChatGPT更懂你心!

用户故事是描述客户需求的方法&#xff0c;通常记为四段论的格式&#xff1a; 角色&#xff0d;功能&#xff0d;目的&#xff0d;验收标准。 如&#xff1a; 作为一个家庭主妇&#xff0c;我需要一个30平方米的餐厅&#xff0c;用以招待10位客人聚餐。 我希望这个餐厅&…

Spring/SpringBoot与RabbitMQ整合

具体代码 依赖&#xff1a; <dependencies><!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.0</v…

定薪17K*15,阿里测开岗上岸面经分享....

先简单介绍一下我自己吧&#xff0c;等会大家以为我是什么学历狂人&#xff0c;技术大牛&#xff0c;我毕业于广东一个普通本科院校&#xff0c;绝对不是什么双一流大学&#xff0c;大家不要有距离感&#xff0c;这也是我为什么来分享的原因&#xff0c;因为我觉得我这段经验还…

github SSH 生成和使用(详细)

通过ssh连接github&#xff0c;可以有效的提升安全性 1.设置位置 2.生成ssh密钥&#xff08;windows&#xff09; 打开git bash&#xff0c;输入以下命名&#xff0c;把your_emailexample.com换成自己的github账号 ssh-keygen -t rsa -b 4096 -C "your_emailexample.co…

【计算几何】判断多边形边界顺逆时针 C++代码实现

文章目录 一、多边形边界顺序二、数学原理2.1 Green公式2.2 鞋带公式 三、代码实现 一、多边形边界顺序 多边形可以由一个点集 { v 1 , v 2 , . . . , v n } \{v_1,v_2,...,v_n\} {v1​,v2​,...,vn​} 表示&#xff0c;构成多边形的点集确定&#xff0c;多边形边界的顺序也就…

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题

InsCode AI 创作助手围绕《程序员应如何应付AI带来的影响》为主题 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&a…

Fabric模块功能介绍(一)

主要有5个模块,分别是peer、orderer、cryptogen、configtxgen、configtxlator 模块功能peer主节点模块&#xff0c;负责存储区块链数据、运行维护链码orderer交易打包&#xff0c;排序模块cryptogen组织和证书生成模块configtxgen区块和交易生成模块configtxlator区块和交易解…

【小程序开发日记】django学习笔记4

在没有学完django的情况下匆匆上阵。。。 这次的任务主要是管理数据库并实现浏览的功能。 首先介绍一下微信小程序连接后端的接口&#xff1a;wx.request 基本上输入后会比较经常使用的就是这几个参数。 接下来明确一下这次的工作&#xff1a; 我需要管理两个数据库&#x…

Python - numpy basic

目录 数组array的创建 1 通过list创建array 2 通过list创建二维数组 3 通过arange函数创建 等差数组 4 通过zeros函数创建 零矩阵 5 通过eyes函数创建 单位矩阵 数组array的访问 1 访问形状/元素个数/数据类型 2 访问一维数组的位置/范围 3 访问二维数组的位置/范围 4…

Unity Emisson 自发光属性全局照明

给想要自发光的物体&#xff0c;选择Unity自带Standard Shader。然后勾选Emisson 如下图&#xff1a; 属性&#xff1a; Color指定发光的颜色和强度。单击 Color 框可打开 HDR Color 拾色器。在此处可以更改光照的颜色和发光的强度 (Intensity)。要指定材质的哪些区域发光&…

蓝库云:让销售人员搭配客服工单系统,已成销售企业必备的组合

让销售人员搭配客服工单系统&#xff0c;已成了众多销售企业必备的组合&#xff0c;这不但可以大大提高客户满意度和转化率&#xff0c;还有效跟踪客户及时收到客户的反馈&#xff0c;从而进一步优化产品及策略。站在企业的角度来说企业也可以可以进行数据分析和优化&#xff0…

Mybaits Oracle CLob类型处理

问题描述: 使用的是Oracle 数据库, 表中有一个字段类型为clob类型 问题 : 当使用mybatis查询返回map类型时, 该字段的值为clob对象,而不是数据库里面的字符串 解决方案: 1.手动进行转换,把clob类型转换为字符串(这种比较简单) if(map.get("MAIN_BIZ") instanceo…

【Linux】iptables 防火墙(SNAT/DNAT)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、SNAT 原理与应用二、SNAT转换三、DNAT的介绍1.DNAT概述2.DNAT转换前提条件 四、DNAT转换五、防火墙规则的备份和还原六、tcpdump抓包工具的运用 一、SNAT 原理与…

【Java 方法重写】@Override 注解,一般用法,重写的具体要求

&#x1f340; 博主&#xff1a;_LJaXi Or 東方幻想郷 &#x1f338; 专栏&#xff1a; Java | 从入门到入坟 从前有一只小鸟&#xff0c;它的父母都是优秀的飞行员&#xff0c;它也很想成为一名出色的飞行员。于是&#xff0c;它开始学习飞行技巧&#xff0c;不断练习&#xf…

微信支付, 小程序,公众号, 商户号 需要进行的配置

目录 一 微信公众号1.1 公众号基础信息配置1.2 白名单配置1.3 公众号开发人员配置1.4 域名授权配置1.5 服务器配置 二 微信小程序2.1 开发设置2.2 域名设置2.3 开发者管理2.4 版本管理 三 微信商户号3.1 支付服务3.2 授权域名3.3 配置API安全,支付证书申请3.4 设置支付信息3.5 …

CSDN上海城市开发者社区线下活动纪实

引言 5月27号中午&#xff0c;很高兴能和现CSDN副总裁、前微软 Azure 工程团队首席研发经理、技术畅销书《编程之美》及《构建之法》的作者邹欣邹老师&#xff0c;以及CSDN的 “上海城市开发者社区” 的部分成员齐聚一堂&#xff0c;参加CSDN上海城市开发者社区自5月初成立以来…

在windows环境下使用winsw将jar包注册为服务(实现开机自启和配置日志输出模式)

前言 Windows系统使用java -jar m命令行运行Java项目会弹出黑窗。首先容易误点导致程序关闭&#xff0c;其次我们希望能在Windows系统做到开机自动启动。因此对于SpringBoot程序&#xff0c;目前主流的方法是采用winsw&#xff0c;简单容易配置 1.下载winsw工具 https://git…

新手自媒体找素材必备的5个素材网站。

自媒体需要用到视频、音频、图片、字体等各类素材&#xff0c;对于新手朋友来说&#xff0c;网上搜素材怕侵权&#xff0c;商用素材又不知道哪里找。作为一个老手的我收藏了各类优秀的免费素材网站&#xff0c;下面分享几个&#xff0c;对你一定有帮助&#xff0c;记得收藏起来…

安科瑞预付费管理系统对于学生公寓的设计

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要&#xff1a;论文设计了适用于学生公寓的自助式预付费控电控水管理系统&#xff0c;采用多种智能功能&#xff0c;可以监测和显示漏电现象&#xff0c;通过短路、跳线、零线接地等方式防范和记录用户的偷电行为&a…