1.3 自动编码
格物致知。
――中国谚语

编码用于非结构化文本数据,是用与标准术语中的同义词一致的标识符代码标记词条的过程(见术语表,Identifier)。例如,医学术语中可能包含词条肾细胞癌(一种肾癌),附加一个唯一的标识符代码给这个术语,例如“C9385000”。肾细胞癌大约有50个同义词,这里列出一部分同义词和近义词:adenocarcinoma arising from kidney、adenocarcinoma involving kidney、cancer arising from kdney、carcinoma of kidney、Grawitz tumor、Grawitz tumour、hypernephroid tumor、hypernephroma、kidney adenocarcinoma、renal adenocarcinoma以及renal cell carcinoma。所有的这些术语都可以用同样的代码“C9385000”。
对一篇文本文档进行自动编码的过程包括:找到属于某个特定术语中的全部词条,用对应的标识代码标记这些词条。
术语是特殊的词汇表,通常包含涵盖某个边界明确的领域的全部词条(见术语表,Vocabulary),例如,疾病、天体、汽车品牌和型号等。一些术语是以字母顺序排序的,也有一些是按照同义词来排序的,同义词和近义词(见术语表,Plesionymy)是根据某种标准(例如,最佳或是优先级)来收集的。同义词目录常由于多义词的存在而变得麻烦(见术语表,Polysemy)。在很多术语集中,为同义词分配同一个代码(例如,某个独特的字符串;见术语表,Uniqueness,String)。术语集有很多用处:加强互操作性和集成性,允许在查询时获取全部同义词信息,支持对文本数据的复杂分析,描述细节,在文本文档中标注信息,通过整合同义词的统一编码降低文本复杂度。对于存在于多个大数据资源中的大量文档而言,如果能够为文档中出现的所有术语进行术语词条到词条编码的替换和增补,那么这些文档就具备了一致性。
在肾细胞癌的例子中,如果在某个医疗文本中出现的所有50多个同义词词条都被编码为“C9385000”,那么不论查询哪个同义词,搜索引擎都能够检索包含这个代码的全部文档。例如,检索Grawitz tumor,检索出来的文档也将包含“hypernephroid tumor”这个词,这是因为检索引擎会简单地将检索词“Grawitz tumor”翻译成代码“C9385000”,然后推送标注有该代码的全部记录。
传统上的术语编码很像语言翻译,一直被认为是最好由人类来完成的一种专业和高度细致的工作。不仅有经过高度训练的翻译工具会给出通俗文本的外文版本,也有训练有素的、熟练掌握特定术语集的程序员会创建标记后的文档版本。给文档标记术语代码是一项重要工作。如果编码存在缺陷,后果将不堪设想。2009年,美国退伍军人事务部(VA)发出了上百封邮件,告知退伍军人他们患上了肌萎缩侧索硬化症,也称为葛雷克氏症,这是一种致命的神经衰退疾病。然而事实上,大约600个收件人并没有该疾病。VA后来收回了这些邮件,并指明这次的混乱是编码错误造成的12。程序员编码的前后不一致、个人习惯差异以及编码出错等问题,使得文本编码并不容易。人为编码的准确性似乎仅能达到85%~90%(见术语表,Accuracy,Precision)。
人类没有足够的时间、金钱和人力来处理千兆字节和大量文本编码。计算机编码(即自动编码)是唯一可行的解决方案。
自动编码是一种特殊的机器翻译形式,即在计算机科学领域处理从叙事文本汲取语义或是将叙事文本从一种语言翻译成另一种语言的任务。理所当然,自动编码算法直接采用机器翻译领域的相关算法,尤其是自然语言处理算法(见术语表,Algorithm)。常规的自动编码算法包括如下几个步骤:利用自然语言规则找出文本中的全部单词和词组,并将其与各个术语词条对照。理想情况下,正确无误的文本词条是与其对应的术语词条完全一致的,而不论其在文本中是以何种方式表达。例如,词条“adenocarcimoma of lung”有很多差别细微的替代词,如“adenocarcinoma of the lung”“adenocarcinoma of the lungs”“lung adenocarcinoma”和“adenocarcinoma found in the lung”。自然语言算法会考虑语法因素、允许的替代术语结构、词根和句法变异(见术语表,Syntax)。字符串相似性算法可以称得上是自然语言方法上的一个巧妙改进,当语法方法在判定词条等价性上不起作用时,字符串相似性算法就可以发挥作用了。
当同义词词条缺少词源学上的共性时,自动编码会受到自然语言方法的一些限制。以词条“renal cell carcinoma”为例,它的同义词包含那些相互之间没有语法关系的词条。举个例子,“hypernephroma”和“Grawitz tumor”是“renal cell carcinoma”的同义词,我们无法通过自然语言规则或是单词相似度算法来计算这些词条的等价程度。那么,获取单词或词组之间的同义程度的唯一方法,是借助全面的、列出每个同义词的术语表。
撇开无法为没有词根的同义术语构建共性不说,现有的最好的自然语言自动编码器运行速度很慢。究其原因与算法有关,算法通常最少包含以下几步:从语法上将文本分解成语句,再将语句分解成更小的语法单元,在语法上重新安排和组合句子的语法单元,在词干词汇上扩展句子,支持词语的奇异性和多元性,并对术语表中列出的词条在可接受变化范围内进行匹配。
当前,自然语言自动编码器如果能每秒解析约1KB文本就是非常优秀的了。这意味着如果一个自动编码器必须解析和编码1TB的文本素材,则需要用10亿秒来处理,即约30年。而大数据资源的数据量通常有很多很多TB,因此,自然语言自动编码软件对处理大数据资源不适用。那么,既然如此,自动编码有何价值呢?
自然语言自动编码器如果在数据输入时得以利用将产生极大价值。人类键入句子的速度远比1KB/s低得多,自然语言编码器能够与打字员的速度保持一致,并为每个输入的词条编码。还可以进行自动更正、自动拼写、多段预读以及其他常用支撑性行为,以改善和提升打字员的效率。通过自然语言算法可防止变体术语不被识别,如果一个打字员够精明,他会为应用程序提供一系列等价表达方式(如肾细胞癌renal cell carcinoma=rcc),这会帮助应用程序应对未来出现的更多的变体形式。
如果我们在进行数据准备时用上了自然语言解析器,似乎可以突破那些自然语言处理算法的固有限制。这种理念是自然语言软件开发者和软件使用体验良好的用户所推崇的,但他们忽略了大数据资源必备的两条属性:寿命和综合处理(见术语表,Curator)。
术语表并非一成不变。随着时间的推移,旧术语表的更新和新术语表的产生都会使同义词词条及其代码发生更改。在某些情况下,大数据中的文本材料需要进行重新注解,而凭借的术语编码也许涵盖了信息学领域新的、原先未预料到的编码。
在这个信息爆炸的社会,大多数人已对数据的逐渐消失习以为常,因为一旦数据达到了其存在的最初目的,那么它就会被人类遗忘。我们并不会对所有电子邮件都永久保存,也不会因为删除了早期博客上的文章、Facebook上的留言以及Twitter上的推文而感到遗憾。再从医疗上说,病人信息、确诊诊断书和病理报告信息等仅需在几分钟、几小时、几天或者几个月中可用即可。也就是说我们很少会将文本信息保存几年甚至几十年。当我们存有超过几十年、可回溯的数据时,就可以找到以前出现过的错误,避免这些错误再次出现,也可以利用这些数据进行趋势分析,指导未来的发展。
为了保存数据的价值,我们必须对数据进行持续管理,添加适用于现有术语表的代码。有些琐事无法避免―一次又一次地记录整个大数据资源中的语料库,使用修改版本的术语表或者使用新的术语表。这就需要自动编码应用程序迅速地对大量文本数据(可能达到TB级)进行编码。自然语言算法很大程度上依赖正则表达式操作(例如,寻找文本中的字模式),且自然语言算法过慢的计算速度已无法胜任上述工作(见术语表,Regex)。
还有一种更快的方法是所谓的词法解析。这涉及逐字逐句地解析文本,计算同一个术语表中的词或词条之间的匹配程度。当发生匹配时,文本中的词汇会被分配到与术语表中匹配的词汇相对应的代码。以句子“margins positive malignant melanoma”为例,其自动编码算法策略是,首先你会使用一个列出人类遇到的所有肿瘤的术语表,让我们假设术语“malignant melanoma”和“melanoma”都已经包含在这个术语表中,且代码相同,如“Q5673013”,这是因为编写术语表的人认为这两者物理等效。
现在,让我们开始自动编码“margins positive malignant melanoma”这句话:
1.一次一个单词,开始解析句子。第一个单词“margins”,依照术语表没有找到匹配术语,保存该单词,进行下一步。
2.第二个单词“positive”,同样在术语表中没有找到匹配术语。于是同时检索前一个单词与这个单词“margins positive”,也许这两个单词是一个术语,但结论还是no,保存单词“margins”和“positive”,继续下一步。
3.第三个单词“malignant”,术语表中也没有匹配术语。再看看两个词“positive malignant”和三个词“margins positive malignant”是否有匹配术语,结果还是没有。
4.第四个单词“melanoma”,发现在术语表中。再检查两个单词“malignant melanoma”、三个单词“positive malignant melanoma”、四个单词“margins positive malignant melanoma”,发现术语表中有“malignant melanoma”的匹配术语,但与“melanoma”的代码相同。
5.自动编码器给这个句子附加代码“Q5673013”,并继续下一个句子,重复该算法。
这个算法看似工作量较大,且需要多次对比,但实际上它比自然语言解析更为高效。所有术语词条有对应代码的术语表,在数据暂存器中可存储为一个变量(见术语表,Variable),查询速度也会更快。恰好有些方法比我们的示例算法速度更快,我先前发表的处理文本的方法能够做到比自然语言算法快1000倍14。如今,电脑计算速度更快,在限定时间内,自动编码能够实现对大部分的数据资源中的文本数据进行编码的任务。
如果分析师必须集成两个相互独立的大数据资源,且各自的术语表完全不同,这时就会有些棘手。一个可行的解决方案是动态编码,而不管哪个术语表才能满足分析师的分析目的。
这里给出一个常用的动态编码算法15:首先,在任意一个大数据资源集合中,用任意一个方便的术语表找到查询词的所有同义词。具体如下:
1.分析师以数据用户提交的查询词开始编码过程。分析师首先选择一个包含查询词及其同义词的术语表,术语表只要是由词条-代码对组成,且同义词的代码一致即可。
2.收集查询词的所有同义词。例如,一份2004版流行的医学术语表―统一医学语言系统,代码为C0206708的词条有38个,其中9个如下:

如果分析师对“Cervical Intraepithelial Neoplasia”进行搜索,那么,该词条是这个术语表中的38个同义词之一。
3.一个接一个地对等价术语词条与分析师所掌握的大数据资源中的每个记录进行匹配。
4.提取出那些包含与查询词及其同义词相匹配的所有记录条目。
在上面这个案例中,在寻找整个数据记录中与“Cervical Intraepithelial Neoplasms”相匹配的词条时,对其他37个同义词也进行了匹配查询。这种搜索的优点是:在数据记录中检索查询词时,也可以检索出其同义词,这里没有预编码,也不会检索那些分析师不关心的术语词条;缺点是:计算速度会因为同义词过多而变慢。幸运的是,存在简单且快速的同义词搜索方法15。

《大数据原理:复杂信息的准备、共享和分析》一一1.3 自动编码 格物致知。...相关推荐

  1. 《大数据原理:复杂信息的准备、共享和分析》一一

    1.5 术语提取 知道它叫什么与知道它是什么,差别很大. ―Richard Feynman 我最喜欢的电影之一是恶搞版<巴斯克维尔猎犬>,主演有饰演福尔摩斯的Peter Cooke和饰演他 ...

  2. 《大数据原理与应用》林子雨:一. 大数据基础

    <大数据原理与应用>林子雨:一. 大数据基础 思维导图 PS:边学边记 重点: 理解大数据的概念及其处理架构Hadoop 难点: 掌握大数据处理架构Hadoop的安装与使用方法 第1章 大 ...

  3. 利用大数据打通政务信息孤岛

    当前,政务信息孤岛现象已经成为制约简政放权.放管结合.优化服务改革的重要因素.所谓政务信息孤岛,是指政务信息数据被分割存储在不同部门的信息系统中,无法实现互联互通.互相分享.整合利用,难以为居民.企业 ...

  4. 加快大数据战略布局 合力推动发展共享数字中国

    为了占据科学大数据制高点,世界主要大国已把科学大数据纳入到国家战略并开始重点部署实施.2012年美国政府宣布启动"大数据研究与开发计划". 英国发布<英国数据能力发展战略规划 ...

  5. 大数据的未来在于开放与共享

    21世纪,互联网.移动互联网.3D打印.人工智能--正如摩尔定律所言,人类的科技革新发展迅速,其中大数据的发展潜力最被看好.大数据的概念非常火爆,但少有人真正理解大数据的核心内容,一个普遍而且严重的误 ...

  6. 作者:孙卫强(1976-),男,博士,上海交通大学教授、博士生导师,主要研究方向为大数据网络、信息通信网等。...

    孙卫强(1976-),男,博士,上海交通大学教授.博士生导师,主要研究方向为大数据网络.信息通信网.网络优化.网络性能评估等.

  7. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  8. 基于ISM的大数据在建筑领域中的应用障碍分析

    点击上方蓝字关注我们 基于ISM的大数据在建筑领域中的应用障碍分析 纪颖波1, 赵子豪1, 姚福义2 1 北方工业大学土木工程学院,北京 100144 2 重庆大学管理科学与房地产学院,重庆 4000 ...

  9. Python + 大数据 - 数仓实战之智能电商分析平台

    Python + 大数据 - 数仓实战之智能电商分析平台 1. 项目架构 2. 数据仓库维度模型设计-事实表 事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一 ...

  10. 续谈大数据之足球盘口赔率水位分析思路及其实现利器

    再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧_sundayhost的博客-CSDN博客_大数据分析赔率这两天看到CSDN上一篇同行写的有趣的话题,题目为:浅谈大数据之足球盘口赔率水位分析的思路 ...

最新文章

  1. iOS动画系列之九:实现点赞的动画及播放起伏指示器
  2. JavaWeb项目实现文件下载
  3. Parallel并行计算合计数据时错误的原因和解决办法
  4. 系统架构设计理论与原则
  5. Mysql分库分表(Mycat)
  6. 魔术命令python_Python前10个魔术命令可以帮助您提高生产率
  7. 正确理解 AsyncTask,Looper,Handler三者之间的关系(基于android 4.0)
  8. c++编程求解二元二次方程组_一道俄罗斯高难度解方程组题,错误率达99%+,中国学霸:确实很难...
  9. python读取csv文件
  10. IntelliJ IDEA 12.0中文字符显示不正常解决方案
  11. 第九部分 项目沟通管理
  12. ip domain-lookup命令解释
  13. 正则表达式常用的校验方法
  14. Excel数据分析从入门到精通(九)28个图表之KPI分析
  15. 万元大奖和Switch等你来拿,百度飞桨AI创造营带你出道
  16. 服务器网站崩溃怎么解决
  17. python无法启动0xc0000022_无法正常启动0xc0000022_0xc0000022一键修复教程 - 系统家园...
  18. mysql 1265警告
  19. 从零开始的Django框架入门到实战教程(内含实战实例) - 08 用户界面(内含图形验证码的生成和校验详解)(学习笔记)
  20. ccs中c语言定义布尔常量,CCS中寄存器定义方法

热门文章

  1. 2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,
  2. iOS包体积优化-图片优化
  3. 20189221 2018-2019-2 《密码与安全新技术专题》第三周作业
  4. wo-27s管理员账户和密码_某数据监测与分析系统可被撞库出登录密码
  5. 计算机无法转换输入发,电脑无法切换输入法怎么办
  6. electron打开系统默认浏览器
  7. 基于模糊控制的十字路口交通红绿灯控制matlab仿真
  8. 单片机通用配置(基于STC12C5A60S2)
  9. 安装elasticsearch后,本地访问不了
  10. APP代码打包成apk文件