“平民化”非结构数据处理

2024-02-29 10:52

本文主要是介绍“平民化”非结构数据处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在全球信息产业高速发展的背景下,IDC预测,2018 到 2025 年之间,全球产生的数据量将会从 33 ZB 增长到 175 ZB, 复合增长率27%,其中超过 80%的数据都会是处理难度较大的非结构化数据,如文档、文本、图形、图像、音频、视频等。非结构化数据在大数据时代的重要地位已成为共识。近些年,伴随着大数据存储、人工智能(AI)等技术的蓬勃发展,非结构化数据的价值得到了巨大的发挥。如:自然语言处理、图像识别、语音识别等技术,已在各行业得到广泛应用,并不断的提炼数据中的价值。

        非结构化数据的处理与分析目前主要通过两种形式提供:一种是将能力封装在应用系统中,一体化交付给最终用户,如:人脸身份验证系统、手持翻译机等;一种是以PAAS形式,将能力以开发接口的形式暴露给用户,比较有代表性的有百度AI智能云、阿里云等。前者通过应用封装,最终用户感受不到非结构化数据的处理过程,也无需关注。而后者,给了使用者更大的发挥空间,让用户可以随心所欲的应用这些能力。但前提是用户必须掌握一定的编程能力,才能够调用平台提供的接口。这就使得相当一部分拥有数据处理需求而没有开发能力的用户被挡在了门外。他们需要去学习一种编程语言或者额外支付开发费用才能实现对非结构化数据处理的需求。

        需要二次开发才能使用非结构化数据处理与分析能力的方式显然不符合近年来热推的“技术平民化”趋势。“技术平民化”即“低代码”技术,在数据处理领域其实并不陌生。早在“小”数据时代,对于结构化数据处理与分析就有SAS、SPSS Modeler等一众知名的商业工具,也有诸如Kettle、RapidMiner等开源工具。这些工具都支持使用者通过可视化交互的方式,实现对结构化数据的ETL(抽取、转换、装载)处理及分析建模。进入大数据时代后,在数据科学领域,这种低代码设计理念得以保留。SAS等公司纷纷转型,将其技术架构迁移到以Spark为代表的一众大数据计算框架下。同时,该领域也涌入了许多新晋玩家,如阿里的DataWorks等。但这些工具基本还是面向结构化数据的,只是转换了计算架构,使得工具能够支持更大规模的结构化数据处理与分析的需求。而对于规模早已超过数据总量80%的非结构化数据,目前却鲜有低代码工具,这也使得大数据处理与分析远未进入“平民化”阶段。

        一年多前,接到一个朋友的项目需求。在这个项目中,朋友除了有海量的结构化数据需要处理外,还有大量的诸如文档、图片、音频、视频类数据处理的需求。由于数据种类庞杂,处理需求多样,采用交付定制系统的方式根本无法满足用户不断演进的数据使用需求。因此,一个能够让用户参与的,可随用户需求演进的“平民化”数据处理平台成为了最佳解决方案。

        有别于传统的面向结构化数据的低代码工具,非结构化数据其内容更多样,处理手段更专业、存储方式的选择也更丰富。如前文所讲,非结构化数据包括文档、文本、图片、音频、视频等不同内容;对于这些不同类型的内容,分别有不同的专业处理需求。对于文本有实体识别、关系识别、文本摘要,图片有OCR识别、物体识别,音频有语音识别,视频有关键帧识别等一众需求。这些需求的专业能力要求很高,除了少数大厂有比较全面的能力覆盖外,很多公司都只能在其中的一个或几个方向构建其专业能力;由于非结构化数据没有模式,其拥有了更广泛的存储选择,其可以存储在文件系统中,也可以存储在数据库中,对于其数据的应用场景而言,没有本质的差别。

        针对非结构化数据的存储及处理特点,笔者和团队经过一年多的开发,实现了一个能够给予用户更多的存储及处理技术选择的低代码工具平台。该平台很好的支撑了朋友项目的各类非结构化数据处理需求。比如下面的一个简单场景。

        朋友项目中有一些档案处理的需求,档案格式有word、pdf等。希望能够对这些档案进行自动化处理,抽取档案中的文字及头像,构建基础档案信息。并意图在后续的处理流程中进一步分析文本,获得更有效的内容。(注:为展示系统能力,本文例子中选取了一个台湾政客的简历,该简历采用的是繁体字)。档案原文为一个两页的pdf文件,内容如下:

        (注:这里删除了一页违规的图片信息,内含个人隐私信息)

        我们的第一个任务是抽取文档中的文字。在该任务的实现路径中,有一种是直接抽取pdf中文字的解决方案。但经过测试,发现效果不好。于是尝试了第二种技术路线,就是先将pdf转为图片,然后再使用OCR技术,识别图片中的文字。由于前文有提到,OCR是一个专业的方向,要训练一个好的OCR模型是一个非常困难的事,尤其该文档是繁体字体,就变的更为困难。因此,笔者的平台采用了开放的态度,集成第三放能力供用户选择使用。在该任务中,笔者平台选择了百度的OCR识别能力,用它来实现图片中文字的提取。效果如下图:

        如图所示,这是一个从左到右的数据处理流程。文件输入算子负责读入档案文件;pdf转换算子负责将pdf转换为图片;百度OCR算子负责识别图片中的文字并将结果输出到输出端口。其运行后的效果为:

        在这里能够看到pdf被转成了2个图片,2个图片中的文本也被识别并输出。

        我们的第二个任务是从档案中挑出人的头像图片,并将其存储到指定的目录中。在这里我们集成了百度的物体与场景识别能力。数据流程的效果图如下:

        如图所示,从左至右的流程,文件输入算子负责读入档案文件;图片抽取文件抽取文档中的图片;复制数据流,流的一个分支转交给百度物体与场景识别算子,另一分支转交给联结算子。百度物体与场景识别算子输出识别到的图片的各种标签;过滤算子过滤掉不是人物头像的标签,输出人物头像标签并于另一个分支输出的流在联结算子处联结计算,联结算子只输出与人物头像标签对应的图片,并经过重新打包转换后,将头像写出到文件系统。其运行后的效果如下:        通过流程执行输出的数据我们可以看到,从pdf文件中共抽出三张图,Image1, Image2和Image3,只有Image2被识别为人物类型。下面我们再看流程的输入/输出信息。

        以上图1展示的是流程读入及写出的相关文件。其中OUTPUT记录项的Image2文件即流程识别出的头像文件。点击查看,效果如图2,可以看到抽取到的头像与最初档案中的头像一致。本示例给出的读取和写出数据源皆为文件系统,使用者可根据实际需要进行调整,平台目前支持的部分数据源如下图:

        笔者团队提供的低代码平台,目前已具备将非结构化数据处理“平民化”的能力,对于结构化数据有同样友好的支持。可以帮助更多的业务人员、数据研究人员方便的处理及分析数据;便捷的使用第三方的技术能力;真正进入大数据处理的“平民化”时代。

        追逐同款工具,猛戳以下链接:HuggingFists

这篇关于“平民化”非结构数据处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758512

相关文章

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

oracle11.2g递归查询(树形结构查询)

转自: 一 二 简单语法介绍 一、树型表结构:节点ID 上级ID 节点名称二、公式: select 节点ID,节点名称,levelfrom 表connect by prior 节点ID=上级节点IDstart with 上级节点ID=节点值 oracle官网解说 开发人员:SQL 递归: 在 Oracle Database 11g 第 2 版中查询层次结构数据的快速