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