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

结构化数据和非结构化数据之间有哪些区别?这些区别如何影响各自的数据挖掘方法?


回答:

我熟悉的术语是结构化非结构化数据(与您的问题中提到的相同,只是后缀不同)。

我在机器学习中处理这两种类型的数据,我不知道有任何正式的定义;然而,我认为几乎所有需要区分这两种数据类型的人都能轻松区分它们。

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

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

另一个经验法则是查看数据库中存储该数据所需的字段的数据类型。如果是文本类型——对于MySQL来说,是Tintext、Text、Mediumtext或Longtext。或者不太可能的是VARCHAR(255)——那么这些数据很可能是非结构化的。

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

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

因此,您为这个来源创建一个数据模型——例如,由’sender’(发送者)、’recipient’(接收者)、’date/time sent’(发送日期/时间)、接收者和发送者是否都是服务器组的员工、消息是否被复制给其他人等字段组成。数据库的行是各个电子邮件。

然后,您编写一个由一组解析器组成的脚本,以从每封电子邮件中提取每个字段。对于许多字段来说,这很简单,例如,对于’cc:’字段,您编写一个解析器来扫描电子邮件消息的那部分,并检查它是否为空——如果是,那么该行在数据库中的该字段可能会填入’False’(表示没有抄送任何人),否则填入’True’。同样,日期/时间,可能是某种形式的:16 Mar 2011 18:45:39.0319 (UTC)。提取和解析这些数据同样简单;事实上,您的脚本语言几乎肯定有一个模块来完成这项工作。

但是,当您处理到电子邮件的正文时,虽然从电子邮件的其余部分提取它并不困难,但解析它并不简单。您的数据模型可能有“NumberOfWords”(单词数量)、“Keywords”(关键词)等字段,并且构建一个解析器来填充这些字段很简单。然而,最有用的信息却更难获得——即,电子邮件对接收者是否有帮助?主题是什么?它是否具有权威性?

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注