Watson Explorer 入门(1):非结构化数据相关概念

来源:互联网 发布:ip地址及端口号 编辑:程序博客网 时间:2024/05/16 03:44

(许野平的Watson Explorer 学习笔记)

关于 IBM Watson Explorer

IBM Watson Explorer 这个产品并不容易弄明白其运行机制。我看不少朋友虽然参加过几次培训了,但是仿佛还是有些云里雾里说不清楚门道。所以我觉得有必要停下脚步,整理一下学习笔记,理一理 Watson Explorer 的架构体系和开发的基本方法,或许能帮助初学的朋友们快速入门。

学习 Watson Explorer 的目的纯粹出于产品开发的需要。我目前从事服务机器人开发,我个人认为,机器人短期内不可能达到人类的思维水平。别拿 AlphaGo 来给我说事,因为下棋这种活就是挺适合用计算机来做。尽管如此,但是我们还是有可能让机器人看上去有生命、会思维。我觉得主要解决两个问题:一个是让机器人学会用眼睛注视人,这个技术上不难做到,但是国内厂商似乎对这个不感兴趣,这个令我很郁闷;另一个是让机器人要能与人对话,我觉得这个比较有挑战性,我对搞定这个问题很感兴趣。

IBM Watson 系统曾在美国一个竞答电视节目中战胜人类冠军,其中用到的技术就是基于 Watson Explorer 的。所以,我觉得利用这个产品,应该有助于我快速达成目标。

既然是整理学习笔记,基本上就是按照学习过程写的,不一定很有逻辑性。这个只能等我整理完全部内容,再按照一定的逻辑关系另写一份教程了。

Watson Explorer 的关键概念

我们开发应用系统,一般离不开数据库。在关系型数据库中,其数据存储在表中,表又分为若干字段,为快速检索,有些字段又有索引。

Watson Explorer 和数据库有很多类似的地方。数据库以结构化的形式处理数据,Watson Explorer 则以半结构化和非结构化形式处理数据。尽管数据结构差别很大,但是宏观思路还是有很多相思的地方。

集合(Collection),是 Watson Explorer 的核心,无论是搜索,还是分析,都是围绕着Collection 展开的。Collection 类似数据库中的表(Table),更类似数据仓库中的多维数据集(Cubes),如果有数据库、数据仓库的经验,很容易理解 Watson Explorer。

(这一部分还没写完,待续… …)

结构化、半结构化、非结构化数据

在我们和计算机打交道的过程中,会遇到三种类型的数据:结构化数据、半结构化数据、非结构化数据。

  • 结构化数据:格式固定的数据。常规数据库中的大部分数据、Excel表中按照固定格式填写的数据,基本上都属于结构化数据。
  • 半结构化数据:虽然数据没有固定的格式,但是数据项带有类别说明之类的附加信息。例如“姓名=特朗普,职务=美国总统”这样的说明,可以看作是半结构化数据。
  • 非结构化数据:完全没有任何格式信息的数据。例如我们平时看到的文章、书籍等文字信息,就是基于自然语言的非结构化数据。

非结构化数据的地位

我们每天都浏览的互联网、读报纸、看电视,接触的信息几乎全部分都是非结构化数据。

非结构化数据在人类交流互动中占据绝对的数量优势,这并非偶然的结果。人类擅长阅读各类非结构信息,例如文章、音频、图像、视频等。如果每天上网看到的都是各种数据报表,恐怕人类就受不了了。所以,即使计算机内部处理的都是各种结构化数据,最终呈现给人类的时候,也都会转换成各种直观的非结构化数据的形式。

Watson Explorer 是帮助我们处理非结构化数据的开发工具,是 IBM Watson 认知技术家族的底层产品,大概类似 MySQL 在数据库应用系统中的地位。如果我们打算开发基于自然语言、图像、视频等非结构化数据的应用系统,Watson Explorer 可以提供比较丰富的底层支持能力。这里提供的第一个练习,是一个非常基础的入门练习,利用一个简单的非结构化数据分析过程,展示 Watson Explorer 的基本操作。

测试数据:NHTSA

NHTSA是美国高速交通安全管理局的缩写,英文全称为National Highway Traffic Safety Administration 。由于享有很高的权威性和公正性,其每年的测评结果不仅在美国本土为广大消费者所认可,也被全球范围内消费者作为汽车购买的权威标准。

这里我们用NHTSA提供的客户投诉数据,看看如何利用 Watson Explorer 分析这些基于自然语言的投诉内容,看看从中能得到什么有价值的信息。

我研究了一下NHTSA的客户投诉记录,发现还算不上完全非结构化的数据,宏观上看包括 36 个字段。列表如下:

序号 字段名称 字段类型 说明 1 CMPLID CHAR(9) 投诉记录的唯一编码,但是当数据被传送至下一处理节点时,该编码有可能被修改。 2 ODINO CHAR(9) NHTSA 的内部参考号码。该号码可能被多个部件重复引用。 3 MRF_NAME CHAR(40) 制造商名称。 4 MAKETXT CHAR(25) 车辆/设备制造。 5 MODELTXT CHAR(256) 车辆/设备型号。 6 YEARTXT CHAR(4) 型号年份,9999表示未知。 7 CRASH CHAR(1) 车辆是否受过撞击,用Y和N表示。 8 FAILDATE CHAR(8) 事故日期 9 FIRE CHAR(1) 是否着火,用Y和N表示。 10 INJURED CHAR(2) 事故中受伤人数。 11 FATALITIES CHAR(2) 事故中死亡人数。 12 COMPDESC CHAR(128) 部件规格描述。 13 CITY CHAR(30) 消费者所在城市。 14 STATE CHAR(2) 消费者所在州的编号。 15 VIN CHAR(11) VIN编码。 16 DATEA CHAR(8) 添加到文件中的日期。 17 LDATE CHAR(8) NHTSA接收到投诉的日期。 18 MILES NUMBER(7) 失效时的行程英里数。 19 OCCURENCES NUMBER(4) 事故数量。 20 CDESCR CHAR(2048) 投诉详细描述。 21 CMPL_TYPE CHAR(4) 投诉源代码。 22 POLICE_RPT_YN CHAR(1) 是否报警,用Y和N表示。 23 PURCH_DT CHAR(8) 购买日期。 24 ORIG_OWNER_YN CHAR(1) 是否为首位车主。 25 ANTI_BRAKES_YN CHAR(1) 是否有防滑功能。 26 CRUISE_CONT_YN CHAR(1) 是否有巡航控制。 27 NUM_CYLS NUMBER(2) 发动机缸数。 28 DRIVER_TRAIN CHAR(4) 传动方式(AWD,4WD,FWD,RWD)。 29 FUEL_SYS CHAR(4) 燃料系统(FI=Fuel Injection,TB=Turbo)。 30 FUEL_TYPE CHAR(4) 燃料类型(FI=Fuel Injection,TB=Turbo)。 31 TRANS——TYPE CHAR(4) 档位类型(手动,自动)。 32 VEH_SPEED NUMBER(3) 车辆速度。 33 DOT CHAR(20) 运输轮胎标识部门。 34 TIRE_SIZE CHAR(30) 轮胎尺寸。 35 LOC_OF_TIRE CHAR(4) 轮胎代码位置。 36 TIRE_FAIL_TYPE CHAR(4) 轮胎失效代码。

翻译完这一段快累死我了,谁要是引用我的成果,强烈要求注明本作者版权,哈哈哈!

内容我仔细看了一下,非结构化数据主要体现在第20个字段,投诉内容的详细描述部分。这一部分内容是基于自然语言的文字描述。Watson Explorer 有多大本事? 接下来我们看看它从这一部分内容中能挖掘出什么价值的内容。

构面(Facet)

Watson Explorer 有一个很重要的概念——构面,英语是 Facet。

构面是咋回事呢?我现在只能给一个大致的说明。比如说,客户询问计算机系统“我有些头痛,是不是感冒了?”。

如果有一种机制,能够帮助我们说明“头痛”是一种病症,“感冒”是一种疾病,那么这句话就很容易转化成半结构化的形式“病症=头痛,疾病=感冒,问题=确认疾病”。这样的话,后续处理就会很容易了。于是乎, Watson Explorer 实现了这一机制,在这种机制下,上面说的病症、疾病等都以构面的进行设置定义。比如我们可以定义一个名称为“病症”的构面,并把“头痛”等词汇设置为该构面的元素,这样在句子中看到“头痛”这个词,就可以标注为“病症”。

和结构化数据比较的话,构面非常类似数据库中“字段”的概念。如果把表的行当作一句话来分析的话,数据库表中的每一行的句子结构都是完全一样的。而基于人类自然语言的句子,则无法做到和数据库的表一样完全严格的结构化。因此,不能保证构面何时何地在何处出现。但是,我们可以利用构面,把自然语言句子实现半结构化分析。

当然这只是简单的说说而已,构面真正的价值和作用需要在后续的练习中慢慢体会和了解。

为 HNTSA 的数据设置构面

为了在内容分析挖掘器(Content Analytics Miner)中分析 HNTSA 提供的数据,我们需要设计一些构面。在本练习中,我们设置下面这些构面(Facet)。当然这里的构面直接借助投诉表的字段来定义。

  • CDESCR CMPL_TYPE(facet - Complaint Source)
  • COMPDESC(facet - Component)
  • CRASH(facet - Crash)
  • DEATHS(facet - Deaths)
  • FAILDATE (facet - Fail Date)
  • FIRE(facet - Fire)
  • INJURED(facet - Injured)
  • MAKETXT (facet – Make)
  • MFR_NAME(facet - Manufacture)
  • MODELTXT (facet - Model)
  • YEARTXT(facet - Year)

由于这些构面的内容和数据类型的特点,在使用过程中可以设置多种不同的搜索选项。下面列举了这些构面一些可能选项:

  • 可作为搜索结果(Returnable) - 可在搜索结果中显示字段的值。
  • 构面搜索(Faceted search) - 字段在搜索结果中可作为构面显示。
  • 自由文本搜索(Free text search) - 字段可以接受自由文本搜索。
  • 字段搜索(Fielded search) - 字段可以按照字段名称搜索。
  • 参数搜索(Parametric search) - 字段可以接受参数化查询和排序。可以同时指定该选项和文本排序选项。
  • 可分析(Analyzable) - 字段作为文档内容进行分析。

例如,在本练习中,我们可以按照如下方式设置这些选项:

字段名称 可作为返回结果 自由文本搜索和文档汇总 字段搜索 参数搜索 可分析 构面搜索 CDESCR Yes Yes/Yes No No Yes Yes CMPL_TYPE Yes Yes/Yes Yes No No Yes COMPDESC Yes Yes/Yes Yes No Yes Yes CRASH Yes No/No Yes No No Yes DEATHS Yes No/No Yes No No Yes FAILDATE Yes Yes/Yes Yes Yes/Date No No FIRE Yes No/No Yes No No Yes INJURED Yes No/No Yes No No Yes MAKETXT Yes Yes/Yes Yes No No Yes MFR_NAME Yes Yes/Yes Yes No No Yes MODELTXT Yes Yes/Yes Yes No No Yes YEARTXT Yes No/No Yes No No Yes

到此为止,我们了解了非结构化数据的相关概念,接下来我们要探讨如何利用 Watson Explorer对这些数据进行分析。

(未完待续……)

0 0
原创粉丝点击