结构化和非结构化数据如何区分?

use*_*983 6 statistics machine-learning

结构化数据和非结构化数据之间有什么区别?这种差异如何影响各自的数据挖掘方法?

dou*_*oug 5

我熟悉的术语是结构化非结构化数据(除了后缀外,与Q中的值相同)。

我在机器学习中使用两种类型的数据,但是我不知道任何正式的定义。但是,我怀疑几乎所有需要区分这两种数据类型的工作的人都不会轻易区分它们。

结构化数据的示例:发送电子邮件的日期/时间;是否具有附件或电子邮件发件人。非结构化数据:电子邮件的正文。

是否有稳定的规则或一组规则来区分这两种类型的数据?我认同。首先,如果您可以为数据元素构建一个解析器,那么它就是结构化的。

另一个经验法则是查看数据库中存储数据所需的该字段的数据类型。如果是文本类型 -适用于MySQL,Tintext,Text,Mediumtext或Longtext。或不太可能是VARCHAR(255)-则数据可能是未结构化的

这种区别对于数据挖掘的主要意义可能是这样的:结构化数据一旦从文档中提取并解析,就可以用作统计/机器学习模型中的变量。但是,非结构化数据需要进一步解析-即,在将其用于建模之前,首先必须将其分解为一组结构化数据元素-例如单词数等。

例如,假设您要为制造在线MMORPG的公司中的服务器组构建知识管理(KM)系统。您可能首先从该组成员之间交换的大量电子邮件消息开始。

因此,您为此源创建了一个数据模型-例如,由“发件人”,“收件人”,“发送日期/时间”等字段组成,收件人和发件人是否均为服务器组的雇员,消息是否为复制到其他人,等等。数据库的行是各个电子邮件。

然后,编写一个由一组解析器组成的脚本,以从每个电子邮件中提取每个字段。对于许多字段,这很简单,例如,对于“ cc:”字段,您编写一个解析器以扫描电子邮件的该部分并检查其是否为空,如果是,则在数据库中查找该字段该行可能用“ False”填充(表示没有人被复制),否则为“ True”。同样,数据/时间的格式可能类似于:2011年3月16日18:45:39.0319(UTC)。提取和解析这些数据同样简单明了。实际上,您的脚本语言几乎可以肯定有一个模块可以执行此操作。

但是,当您到达电子邮件正文时,虽然从其余电子邮件中提取消息并不困难,但对其进行解析并不是一件容易的事。您的数据模型可能具有“ NumberOfWords”,“ Keywords”等字段,并且构建解析器以填充这些字段很简单。但是,最有用的信息更加困难-即,电子邮件是否对收件人有用?主题是什么?权威吗?