我熟悉的术语是结构化的 and 非结构化的数据(除了后缀之外,与 Q 中的内容相同)。
我在机器学习中使用这两种类型的数据,但我不知道任何正式的定义;然而,我怀疑几乎每个工作需要区分这两种类型的数据的人都能毫无困难地区分它们。
结构化数据的示例:发送电子邮件的日期/时间;是否有附件或电子邮件发件人。非结构化数据:电子邮件正文。
是否有一个稳定的规则或一套规则来区分这两类数据?我想是这样。首先,如果你能建立一个parser对于数据元素,然后将其结构化。
另一个经验法则是查看数据类型数据库中存储数据所需的该字段。如果它是一个文本类型--适用于 MySQL、Tinytext、Text、Mediumtext 与 Longtext。或者不太可能是 VARCHAR(255)——那么该数据可能是非结构化的.
这种区别对于数据挖掘的主要意义可能是这样的:结构化数据一旦从文档中提取并解析,就可以用作统计/机器学习模型中的变量。然而,非结构化数据需要进一步解析——也就是说,在建模中使用它之前,您首先必须将其分解为一组结构化数据元素——例如单词数等。
例如,假设您要为一家制作在线 MMORPG 的公司内的服务器组构建知识管理 (KM) 系统。您可以从该组成员之间交换的大量电子邮件开始。
因此,您为此源创建一个数据模型 - 例如,由“发件人”、“收件人”、“发送日期/时间”等字段组成,收件人和发件人是否都是服务器组的员工,消息是否是复制给其他人等。数据库的行是各个电子邮件。
然后,您编写一个由一组解析器组成的脚本,以从每封电子邮件中提取每个字段。对于许多字段,这很简单,例如,对于“抄送:”字段,您可以编写一个解析器来扫描电子邮件的该部分并检查它是否为空 - 如果是,则在数据库中查找该字段行可能会填充“False”(表示没有复制任何人),否则填充“True”。同样,数据/时间,可能采用某种形式,例如:2011 年 3 月 16 日 18:45:39.0319 (UTC)。提取和解析这些数据同样简单;事实上,您的脚本语言几乎肯定有一个模块可以做到这一点。
但是,当您到达电子邮件正文时,虽然从电子邮件的其余部分中提取内容并不困难,但对其进行解析却并不简单。您的数据模型可能具有“NumberOfWords”、“Keywords”等字段,并且构建解析器来填充这些字段很简单。然而,最有用的信息却更困难——即电子邮件对收件人有帮助吗?主题是什么?是否具有权威性?