Python数据预处理之抽取文本信息(2)
白宁超 2018年12月28日10:28:48
摘要:大数据技术与我们日常生活越来越紧密,要做大数据,首要解决数据问题。原始数据存在大量不完整、不一致、有异常的数据,严重影响到数据建模的执行效率,甚至可能导致模型结果的偏差,因此要数据预处。数据预处理主要是将原始数据经过文本抽取、数据清理、数据集成、数据处理、数据变换、数据降维等处理后,不仅提高了数据质量,而且更好的提升算法模型性能。数据预处理在数据挖掘、自然语言处理、机器学习、深度学习算法中起着重要的作用。(本文原创,转载必须注明出处.)
1 数据类型与数据采集通常说的数据指的的数字、图表信息这些。在大数据领域所谓的数据总体包括结构化数据、半结构化数据和非结构化数据。
结构化数据
结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。比如:
id name age gender1 张三 12 男
2 李花 13 女
3 王五 18 男
数据特点:关系模型数据,关系数据库表示。
常见格式:比如MySQL、Oracle、SQL Server等。
应用场合:数据库、系统网站、数据备份、ERP等。
数据采集:DB导出、SQL等方式。
结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。但是,它的扩展性不好。
半结构化数据
半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。常见的半结构数据有XML如下:
<person> <name>李花</name> <age>13</age> <gender>女</gender> </person>数据特点:非关系模型数据,还有一定的格式。
常见格式:比如Email、HTML、XML、JSON等。
应用场合:邮件系统、档案系统、新闻网站等。
数据采集:网络爬虫、数据解析等方式。
不同的半结构化数据的属性的个数是不定的。有些人说半结构化数据是以树或者图的数据结构存储的数据,上面的例子中,标签是树的根节点,和标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。
非结构化数据
就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。如下所示:
数据特点:没有固定格式的数据
常见格式:Word、PDF、PPT、图片、音视频等。
应用场合:图片识别、人脸识别、医疗影像、文本分析等。
数据采集:网络爬虫、数据存档等方式。
2 常见的文本抽取方法针对数据不同形式,通过特定方式的数据采集方式(文档下载、数据库导出、网络爬虫、语音收集、图片解析等等)获取数据,无论是结构化的数据库文件、半结构化的网页数据,还是非结构化的图片、音视频。我们最终的目的都是将数据传入到电脑之中,通过算法模型挖掘其潜在的价值,为最终的AI技术做支撑。不同的是,在结构化和半结构化数据数据集成过程中,我们可以提取相关文本信息,做进一步的数据预处理;而非结构化的图片、音视频我们采用一定的技术手段,获取其对应的数据点矩阵。这一点不太容易理解,我们比如说想解析一张图片的数据,我们知道图片是有长宽高组成的,还包括红蓝绿三种基本色。那么我们就找到对应的多维特征,采用数据点占位表示,比如:
图片名 长(bit) 宽(bit) 红 绿 蓝猫1 12 100 0 0 1
狗2 101 234 1 1 1
猪3 202 24 0 1 0