您当前的位置: 首页 > 最新数据和分析 > 正文内容

非结构化数据提取技术在统计工作中的应用

2022-07-04 13:05 来源: 长治市统计局

摘要  结构化数据和非结构化数据是大数据的两种类型,目前非结构化数据信息已达信息总量的85%以上且每年以55%~65%的速度增长,统计工作受到大数据的冲击,日常总会遇到一些非结构化数据提取的难题,导致工作量加大,效率低下。本文对非结构化数据及其提取技术、大数据处理语言——Python语言进行学习研究,解决实际中遇到的难题,以提高统计工作效率和统计分析能力。

关键词:非结构化数据  提取技术Python语言

一、结构化数据与非结构化数据

结构化数据和非结构化数据作为大数据的两种类型,二者本身不存在真正的冲突,只是随着网络科技、信息通信等技术的不断发展,数据产生方式多,数据量大,形式不再单一,原有的计算机信息处理技术不能满足需求,于是人为地将数据分为结构化数据和非结构化数据,并针对非结构化数据处理提出了新的思路和方法,不断研究出新技术。

结构化数据

    (1)结构化数据,简单来说,就是数据库。数据以行和列组成的二维表式存储,严格地遵循数据格式与长度规范,由关系数据表来逻辑表达和处理的数据。

    (2特点:先有结构,再有数据,离开了这种结构,数据就没有意义。

结合到典型场景中,比如:人事管理系统、财务系统、企业产销存系统等,计算机处理时所用的技术是通过关系据表完成

    (3结构化数据处理

    对结构化数据处理,首先要人为预先设定好二维表的模型结构,比如:通过对事务的分析确定设多少字段、每个字段的字段名、字段类型、字段长度、小数位数等,然后录入一条条记录。

其次运用关系型数据库技术来处理。关系型数据库处理技术比较成熟通常接触到的主流数据库有OracleDB2、MySQLMicrosoft SQL ServerMicrosoft Access等多种,每种数据库的语法、功能和特性各具特色。

    (二)非结构化数据

    (1非结构化数据是和结构化数据相对而言的,指的是结构化数据之外的一切数据。简单而言,非结构化数据就是字段可变的数据。

工作生活中,非结构化数据非常多有文本的也有非文本的,有从网上爬取的,也有系统或人为产生的。如:机器产生的卫星图像、大气数据、医学影像、科学数据、监控照片、各种勘探、遥感等信息;人为产生的所有格式的办公文档、文本、邮件、图片、HTML、各类报表、图像、音频、视频信息等。

    (2)特点:由于非结构化数据过于复杂且经常变动,信息表现灵活,无法限定结构对其进行预定义模型,基本在数据仓库中以文件的形式存放在文件系统里或存储在传统数据库的大对象字段中。

    与结构化数据相比,有了很大区别,其特点如下:

    a.数据在先,模式在后;

    b.数据模式不对数据结构进行严格制约,而是直接用来说明其结构模式;

    c.数据模式不具有精确性。有时会因处理的视角不同而不同,所以在某一阶段可能只描述数据的一部分结构;

    d.非结构化数据由于其动态更新的特点导致其量级很大。

    (3)非结构化数据处理

    由于非结构化数据没有统一数据模型形式的限制,表达形式灵活多样,导致非结构数据提取、查询、存储,挖掘分析等是一项重大挑战,目前非结构化数据处理技术还不成熟,但有一些开源库己经实现了从非结构化文档中提取采集关键信息的功能。

    常见非结构化数据处理技术有:Web页面信息内容提取(即网络爬虫);对不同类型文档进行文本搜索、词汇切分;空间向量建模、主题建模;通过对社交网络的连接型数据处理、位置轨迹型数据处理,进行隐私保护等。

    (三)现实中的数据处理

    在现实的数据处理中,成熟的关系数据库技术,仍然被广泛使用于结构化数据处理中,其他类型的应用程序大多数用于处理非结构化数据并逐步兴起、创新发展中

    二、非结构化数据提取技术   

    (一)数据提取的概念

数据提取最初是自然语言处理的一个分支,其任务是把文本里面包含的信息通过自然语言处理技术,从一段文本内容中得到所需信息。研究者通过建立能够适用于特定范围内的系统来完成。但是,这种技术暴露出一个关键的问题,就是扩展性极差,很难轻易的适用于一个新的领域。

非结构化数据的提取解决了扩展性差的难题,不仅可以对文本信息提取,还可以对网络文字信息提取,对网上表格、图像、邮件论坛贴子的提取以及对不同类型的文件提取等。

(二)非结构化数据提取技术

1)正则表达式

正则表达式是匹配文本的一种模式它定义一个抽象字符串来检查其他字符串是否匹配。

例如,将文本模式定义为“以大写A开头,之后只包含小写n和a的单词”,那么Anna  Bob  Alice  James  Aaan  Ana  Aaaan  ANNA哪些能匹配上,哪些匹配不上?Anna  Aaan  Ana  Aaaan可以匹配,Bob  Alice  James  ANNA匹配不上,如何表达这种规则,就是通过正则表达式来完成。

正则表达式的常见用途

a.验证输入数据。如:电话号码只能包括数字、破折号和括号;

b.字符串解析。如上面例子的描述;

c.提取信息。从一段很长的文本中找到出现的特定格式的内容。如:从一个网页中或一篇文档中找到所有的电子邮件地址;

d.替换。找到并替换一个或多个单词等。

正则表达式的特点

a.灵活性、逻辑性和功能性非常强;

b.可以迅速地用极简单的方式达到字符串的复杂控制

c.比较复杂,晦涩难懂。

2)网络爬虫

网络爬虫也被称为 Web Crawler 或者 Web Spider(网络蜘蛛)。理论上,所有的网页都可以连接到其他的网站,即从一个网站开始,跟踪所有网页上的所有链接,这样一直循环,就有可能遍历整个互联网中的内容。

网络爬虫的主要作用是获取互联网上的信息,大多数信息都可以通过HTTP协议检索,利用主页中的超文本链接遍历Web,通过URL实现从一个HTML文档爬行到另一个HTML文档的目的。图1是一个简单的网络爬虫结构图。


1  网络爬虫结构图

③URL是Uniform Resource Locator统一资源定位器的缩写,它是WWW中统一资源唯一的定位标志,即网络地址。网络爬虫一般都要维护两个URL队列,Todo队列和Visited队列,其中Todo 队列主要存放新发现的还未使用过URL,Visited 队列主要是为了存储已经使用过的URL,其管理模型如图2。

2  URL管理模块的基本模型

网络爬虫主要步骤:首先,范围(要知道你准备在哪个范围或者网站去搜索)其次,数据(将网站的内容爬下来)第三,数据(分析数据,去掉对我们没用处的数据)第四,数据(按照我们想要的方式存储和使用数据第五,数据(可以根据数据的类型通过一些图标进行展示)

3) XPath

①XPath是一种用来确定XML文档中元素位置的一种语法,W3C(万维网联盟)把用于对XML文档子集寻址的标准语言称为XPath(XML path Language,XML路径语言),在XML逻辑结构的基础之上,可以使用XPath检索查询XML文档的元素。

②XPath功能类似于SQL语言,不同之处在于XPath是从XML文档中提取信息,而SQL语句是从数据库中查询信息。

③XPath定位元素可以通过路径定位,也可以通过属性定位,可以提取当前层级和子层级的内容。

4)文档对象模型

文档对象模型(Document Object Model,简称DOM)实质是一个树形的层次结构组织。

①面向对象编程的语言模型。把客观世界中的实体抽象为对象,把具有相同属性和行为的对象抽象为类,类、对象、属性等的树形层级结构关系提高了编程的重用性、灵活性和扩展性,读取时掌握了这种文档对象模型,就可以很流程的操作了。例如从Word文档中读取加粗的文本“中国”,通过设置两个属性.Text=’中国’ 和.Font.Bold=true即可。

②互联网中文档对象模型是W3C的推荐标准。根据W3C的规定,DOM是一个与语言、平台无关的标准的对象化的XML和HTML 的数据接口规范,DOM 通过分层对象模型来访问文档信息,将元素间有序的嵌套结构形成一棵对象节点树,树中最主要的节点为元素、属性和文本。DOM模型不仅描述了文档的结构,还定义了结点对象的行为,利用对象的方法和属性,方便地访问、修改、添加和删除DOM树的结点和内容。图3展示了一棵典型的 HTML DOM 树的结构。


3 典型的 HTML DOM 树结构

Python语言

(一)选择Python的理由

非结构化数据作为大数据的重要组成部分,数据的提取及其开发应用离不开与之相适应的计算机编程语言,近年来常用的大数据编程语言有R语言、Python语言、JAVA、Hadoop、Spark等,不同的编程语言会根据大数据和AI等行业有所不同,据2021年IEEE Spectrum发布的最受欢迎的编程语言排名中,Python已连续五年位居第一。

我国为了加强的新一代人工智能产业的发展,2018年9月Python被教育部列为全国计算机等级考试科目,由此可见Python语言在大数据和人工智能领域的重要地位,学习和研究Python语言对非结构化数据处理技术很有必要。

(二)Python语言介绍

Python语言是1989年荷兰人Gudio van Rossum(吉多·范·罗苏姆)发明的一种面向对象的高级编程语言,历经多个版本,目前最新版本为Python3.10该语言从一出生就已经具有了类、函数、异常处理、包含列表和词典在内的核心数据类型,以及以模块为基础的拓展性能。

Python可以在多个层次上进行拓展:在高级层面可以直接引入py文件;在低端层面,可以引用C语言的库。Python程序员可以快速地使用Python写Py文件作为拓展模块,当性能成为考虑的重要因素时,Python程序员可以深入底层编写C语言程序、编译为so文件引入到Python使用。Python语言就好象是用来建房的钢结构,先规定好大的框架,程序员可以在框架下自由地进行拓展或更改。

Python是一种跨平台、开源、免费解释型高级语言,具有丰富强大的库,并且能够把使用其他语言制作的各种模块很轻松地联结在一起,常被称为“胶水”语言。

Python的应用领域

Python的应用领域非常广泛,概括起来,主要有大数据处理、数据分析、Web开发测试运维、机器学习、人工智能、语音识别、自动化运维开发、图像处理、云计算、网络爬虫、Web安全、游戏开发等领域。

例如:经常访问的集电影、读书、音乐于一体的创新型社区豆瓣网、美国最大的在线云存储网站Dropbox、国际上知名的游戏Battlefield2(战地2)等项目都是使用Python实现的。全球最大的搜索引擎Googgle 在其网络搜索系统中广泛应用了Python语言Facebook网站大量的基础库和YouTube视频分享服务大部分也是由Python语言编写的。

(四)Python环境搭建

在使用Python开发之前,先搭建Python开发环境。Python跨平台的特点,搭建时根据实际情况选择对应的平台程序安装。

Python是一种解释型语言,需要下载安装Python解释器及与其相适应的代码编辑器,可分别下载安装(下载及安装略),本文重点介绍Windows系统下安装Anaconda来完成。

1)Anaconda简介

Anaconda是一个专门用于数据科学运算的Python发行版软件工具,里面集成了许多Python数据科学主流的第三方库,功能强大,安装Anaconda后,可以直接进行Python代码开发并导入需要的库。

2)安装Anaconda

Anaconda可在官网www.anaconda.com下载,但速度较慢,可使用清华大学开源软件镜像站http://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载与系统匹配的最新版本,安装中记得同时勾选下面两复选框(图4):


4 Anaconda安装过程选项

第一个复选框是将Anaconda的路径自动添加到系统PATH环境变量中,以便在使用命令行工具时直接启动Python或使用conda命令,第二个复选框为将Anaconda3选择为默认的Python编译器。

Anaconda提供了两个常用的Python开发工具Jupyter Notebook、Spyder,其中Jupyter Notebook提供网页交互开发环境、笔记型代码单元;Spyder属于综合性Python开发环境,可实现代码编写、编译、调试,功能远比Python自带的IDLE强大,本文涉及的代码均在Spyder环境下编写。

3)Python启动使用

方法一:启动系统命令行窗口,输入Python,回车,出现图5提示符,在其后输入相关Python语言命令并执行。

5 系统命令窗口下成功启动python图

方法二:启动开始菜单Anaconda3下的Spyder模块,初始化后在编辑窗口进行代码编辑调试(图6)。

四、Python非结构化数据提取技术实例研究

1 网络爬虫提取网上表格数据

中商情报网是专业的产业情报分享云平台,主要提供研究报告、行业分析、市场调研等多种数据提取中商情报网中的表格数据对日常统计分析有很大的帮助。以爬取原煤产量月度数据为例7

7 中商情报网全国原煤产量月度数据表

1基本原理

通过调用Python自带的标准模块pandas的read_html方法爬取网页中的表格数据。

2)启动Anaconda3下的Spyder模块输入以下代码(图8)

8  python提取中商情报网代码

3运行结果

通过本实例研究,提取到了该网页1989年1月--2022年4月及今年1-4月

全国原煤产量月度数据9)。

9  python提取中商情报网原煤产量月度数据结果

注:网络爬取表格是按照表格索引号进行,本网页只有一个表格,索引号0可以去掉,若有多个表格,根据提取的表格实际变更索引号。

2 提取文档对象

PDF(Portable Document Format,可移植文档格式)是一种常见的文档格式,其主要特性是精确定义文档的外观,并且在生成之后无法修改。最初是用来向不同打印机传递同一文档格式,确保文档按照显示的格式准确打印,这种文档一致性的好方法,现已成为共享文档尤其是只读文档的强大标准,可以非常方便地进行分享。

日常统计工作中,本人经常向企业收集一些生产数据原始凭证,以查看企业数据填报是否正确,要求每月上报一个PDF文档,但企业生成PDF文档的情况不同,上报之后发现一个企业每月上报的文档有2个的、3个的……,给查看资料带来诸多麻烦,大大降低了工作效率。

以提取多个PDF文件将其合并为一个文件为例进行研究。

1)基本原理

    导入第三方模块PyPDF2模块和Python中内置的os标准模块及子模块os.path,利用其提供的方法将多个PDF文档提取合并生成一个新的PDF文件。

2)提取及合并文档代码(图10)

10  python提取多个PDF文件合并成一个新的PDF文件代码

3)运行结果

通过本实例研究,将企业上报的1.pdf和2.pdf两个文件提取合并到新的文件merge.dpf中。(如图11)

11  python提取多个PDF文件合并成一个新文件运行结果

注:本实例中合并前后的文件内容涉及企业数据,在此不予展示,只将被合并的文件名和合并后形成的文件名列示;代码可以将多个(不仅限于2个)PDF文件合并为一个,也可以将不同路径下的PDF文件合并,为了简化程序,实例中只使用了2个被合并的文件,且所有文件均存放在同一路径下。


长治市统计局主办   联系电话:0355-2024989
晋ICP备05005523号 网站标识码:1404000058 晋公网安备14040202000087号
网站声明 / 网站地图 / 联系我们