机器学习在本体标注中的应用研究文献综述
 
     本设计是基于 语义 搜索引擎展开研究,针对这个新兴的搜索引擎概念的提出,我们搜集了大量的资料并对此进行了一定的研究。
    先来谈谈搜索引擎。作为入门而选择现在的主流搜索引擎google。google最初起源于斯坦福大学的BackRub项目,当时是由学生Lany Page和Sergey Brin主要负责,到了1998年,BackRub更名为google,并且走出校园成为一个公司。认识google技术,从google黑板报---数学之美系列 (科学与技术)入手,由google研究员吴军2006年4月发表的第一篇 《统计语言模型》开始,接连发表了《隐含马尔可夫模型在语言处理中的应用》、《简单之美:布尔代数和搜索引擎的索引》、《信息论在信息处理中的应用》《谈谈中文分词》《图论和网络爬虫 (Web Crawlers)》、《贾里尼克的故事和现代语言处理》、《如何确定网页和查询的相关性》、《矩阵运算和文本处理中的分类问题》、《马尔可夫链的扩展 - 贝叶斯网络》、《布隆过滤器(Bloom Filter)》、《谈谈密码学的数学原理》、《谈谈香农第一定律》,从这些文章,大致了解了主流搜索引擎的一些技术。
    此外,Google 被评价的优点不仅仅在于去除无用的(广告)标语构成单一页面的功能、独自的 Cache 系统、动态制成摘要信息、为实现高速检索而设置的分散系统(数千台规模的Linux群集器)等,而其中最大的优点正是它检索结果的正确性。一种能够自动判断网页重要性的技术「PageRank 是(网页等级)」就是为此而设计的一种技术。
    PageRank,有效地利用了Web所拥有的庞大链接构造的特性。从网页A导向网页B的链接被看作是对页面A对页面B的支持投票,Google根据这个投票数来判断页面的重要性。可是 Google 不单单只看投票数(即链接数),对投票的页面也进行分析。「重要性」高的页面所投的票的评价会更高,因为接受这个投票页面会被理解为「重要的物品」。
    根据这样的分析,得到了高评价的重要页面会被给予较高的 Page Rank(网页等级),在检索结果内的名次也会提高。PageRank是Google中表示网页重要性的综合性指标,而且不会受到各种检索(引擎)的影响。倒不如说,PageRank就是基于对"使用复杂的算法而得到的链接构造"的分析,从而得出的各网页本身的特性。
    当然,重要性高的页面如果和检索词句没有关联同样也没有任何意义。为此 Google 使用了精练后的文本匹配技术,使得能够检索出重要而且正确的页面。 
    但是,对于搜索引擎这种技术,以上的信息还是远远不够的,通过阅读《搜索引擎---原理、技术与系统》 首先了解到搜索引擎原理:现代大规模高质量搜索引擎一般采用如图 2-2 所示的称之为三段式的工作流程,即:网页搜集、预处理和查询服务。
网页搜集 :分为定期搜集和增量搜集。在具体搜集过程中,如何抓取一篇篇的网页,也可以有不同的考虑。最常见的一种是所谓“爬取”:将 Web 上的网页集合看成是一个有向图,搜集过程从给定起始 URL 集合 S(或者说“种子”)开始,沿着网页中的链接,按照先深、先宽、或者某种别的策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接 URL,看是否已经被访问过,将未访问过的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(spider)在蜘蛛网(Web)上爬行(crawl)。后面我们会看到,真正的系统其实是多个“蜘蛛”同时在爬。这种方式的好处除了概念很漂亮,一般实现起来也不困难外,还有很重要的一条是容易通过一定的策略,使搜集到的网页相对比较“重要”。前面提过,任何搜索引擎是不可能将Web上的网页搜集完全的,通常都是在其他条件的限制下决定搜集过程的结束(例如磁盘满,或者搜集时间已经太长了)。因此就有一个尽量使搜到的网页比较重要的问题,这对于那些并不追求很大的数量覆盖率的搜索引擎特别重要。研究表明[Najork and Wiener,2001],按照先宽搜索方式得到的网页集合要比先深搜索得到的集合重要(这里当然有一个重要性的指标问题)。这种方式的一个困难是要从每一篇网页中提取出所含的URL。由于HTML的灵活性,其中出现URL的方式各种各样,将这个环节做得彻底不容易(例如我们现在还没有很好的简单办法从JavaScript脚本中提取URL) 。同时,由于Web的“蝴蝶结”形状[Broder, et al.,2000], 这种方式搜集到的网页不大会超过所有目标网页数量的2/3。  
    另外一种可能的方式是在第一次全面网页搜集后,系统维护相应的 URL 集合S,往后的搜集直接基于这个集合。每搜到一个网页,如果它发生变化并含有新的 URL,则将它们对应的网页也抓回来,并将这些新 URL 也放到集合 S 中;如果 S 中某个 url 对应的网页不存在了,则将它从 S 中删除。这种方式也可以看成是一种极端的先宽搜索,即第一层是一个很大的集合,往下最多只延伸一层。 
     还有一种方法是让网站拥有者主动向搜索引擎提交它们的网址(为了宣传自己,通常会有这种积极性),系统在一定时间内(2天到数月不等)定向向那些网站派出“蜘蛛”程序,扫描该网站的所有网页并将有关信息存入数据库中。大型商业搜索引擎一般都提供这种功能。 
预处理 主要包括四个方面,关键词的提取,“镜像网页”(网页的内容完全相同,未加任何修改)或“转载网页” (near-replicas,主题内容基本相同但可能有一些额外的编辑信息等,转载网页也称为“近似镜像网页” )的消除,链接分析和网页重要程度的计算。
查询服务 如上述,从一个原始网页集合S开始,预处理过程得到的是对S的一个子集的元素的某种内部表示,这种表示构成了查询服务的直接基础。对每个元素来说,这种表示至少包含如下几个方面:原始网页文档、URL和标题、编号、所含的重要关键词的集合(以及它们在文档中出现的位置信息)、其他一些指标(例如重要程度,分类代码等)而系统关键词总体的集合和文档的编号一起构成了一个倒排文件结构,使得一旦得到一个关键词输入,系统能迅速给出相关文档编号的集合输出。
    由此,可以进一步探索了搜索引擎的体系结构,如图2-3
    1983年3月,Web的创始人Tim Berners-Lee 提出分布式超文本系统图,其中所包含的链接都是蕴含语义的,该图最早提出了Web信息包含语义的思想。1994年5月第一届国际WWW会议Tim Berners-Lee在会议报告中特别强调了语义的重要性 。这为搜索引擎的发展又注入了一种新的思想---语义网、语义搜索引擎。
    先来看一个语义网层次模型(也称为协议栈),如图
    从图中可以看出语义网发展的层次结构。第一层是Unicode(统一编码)和URI(Uniform Resource Identifier,统一资源定位器),它是整个语义网的基础,Unicode处理资源的编码,URI负责资源的标识。第二层是XML,用于表示数据的内容和结构。第三层是RDF(Resource Description Framework,资源描述框架),用于描述资源及其相互关系。第四层RDF-S,为RDF提供了类型定义机制,确定了RDF描述的资源所使用的领域词汇。第五层是本体(ontology)和规则(Rule),本体用于描述领域概念以及概念之间的联系; 规则用于描述领域知识中的前提和结论; 本体和规则构成领域知识层。覆盖第四层和第五层的查询语句SPARQL 提供了对OWL(Web Ontology Language,Web本体语言)和RIF(Rule Interchange Format,规则交换格式)文件的查询功能。第六层是统一的逻辑(Unifying Logic),在下面五层的基础上进行逻辑推理操作。第七层是验证(Proof),根据逻辑陈述进行验证以得出结论。第八层是信任(Trust),在用户间建立信任关系。第九层是应用层,是构建在语义Web之上的各种应用。概括地说,下面两层是语义Web的基础设施,中间从元数据发展到本体描述语言及其统一的逻辑是语义网的关键研究所在,上面的证明和信任及各层次贯穿的数字签名技术是扩充,是对语义网成功应用的要求与展望。
    关于语义网的更多详细可以参见 [url]http://en.wikipedia.org/wiki/Semantic_Web[/url] . 对语义网看好的公司很多,如IBM的主页中有个专为语义网建页面---"web的将来是语义的" ,此外,还有很多公司开始在Tim Berners-Lee的这个构想上建立语义搜索引擎,力图改进现在搜索引擎技术及方式,如下图是现在正在测试和设计中的语义搜索引擎:
  
 
    其中以twine 最为引人注目,但所有这些标明是语义搜索引擎的搜索引擎现在都还在测试阶段,当然,可以通过了解正在作测试工作的twine的公司网站 [url]http://www.radarnetworks.com/[/url]  及[url]http://www.twine.com/[/url]了解语义搜索引擎的使用及不同,以及能为今后的网络搜索带来的不同体验。
    因此,还在不能肯定Tim Berners-Lee提出的语义网、语义搜索引擎已经实现。在由上面给出的语义网层次模型,去进一步了解语义网及语义网实现的真正意图。
   《顶级专家Frank van Harmelen揭秘语义网》 所谓“语义”就是文本的含义。语义需要理解文本的意思和结构,而与显示方式无关。简单地说,语义网(Semantic Web)是一种能理解人类语言的智能网络,它不但能够理解人类的语言,而且还可以使人与电脑之间的交流变得像人与人之间交流一样轻松。 
    虽然语义网和人工智能(AI)所用的工具有一些相同(比如本体、推理、逻辑等) ,但它们的目标是完全不同的。实际上,语义网的目标是更为适度的:语义网并不是要构建一个通用的、综合性的、基于Internet的智能系统,而是要实现Web上数据集(datasets)间的互操作(无论数据是结构化、非结构化还是半结构化的)——这一目标更具实践性,更为适度。  
    语义网技术主要是基础设施技术(Infrastructure Technology)而基础设施技术是存在于背后、并非用户直接可见的。你所能感受到的,只是诸如:网站变得更人性化了(因为背后存在语义网技术,你的个人兴趣概要(Profile)可以与网站的数据源进行互操作) 、搜索引擎对结果的聚类(Clusterinof Results)做得更好了(因为搜索引擎在背后采用具有含义的本体来对搜索结果加以分类)以及桌面搜索工具能够把文档作者的姓名与你的地址簿里的Email地址关联起来了(因为这些数据格式在背后通过暴露其语义来实现互操作)等,但这些应用不会在其界面上注明“语义网技术”。语义网技术就像是发动机汽缸壁上的Nikasil涂层:虽然很少有司机知道它,但司机们能够察觉到燃料消耗的减少、最高时速的提升以及引擎寿命的延长等等。语义网技术就是目前正在开发着的、下一代人类友好的计算机应用的Nikasil涂层。
    本体技术是语义网实现的基础,在《元素据与知识本体》 中对元数据和知识本体(ontology)进行了解释,其中所说的知识本体即本体。本体(ontology)被赋予了太多的含义,直观地,我们可以把本体看成是“领域知识规范的抽象和描述,表达、共享、重用知识的方法。” 
    如果把每一个知识领域抽象成一套概念体系,再具体化为一个词表来表示,包括每一个词的明确定义、词与词之间的关系以及该领域的一些公理性知识的陈述等,并且能够在这些知识领域的专家之间达成某种共识,即能够共享这套词表,所有这些就构成了该知识领域的一个“本体”。最后,为了便于计算机理解和处理,需要用一定的编码语言(例如RDF/OWL)明确表达上述体系(词表、此表关系、关系约束、公理、推理规则等)。在这个意义上,知识本体已经成为一种提取,理解和处理领域知识的工具,可以被应用于任何具体的学科和专业领域。
    OWL ,这种本体描述语言,可以用来描述Web文档和应用中内在的类和关系。OWL是语义网活动的一个组成部分。这项工作的目的是通过对增加关于那些描述或提供网络内容的资源的信息,从而使网络资源能够更容易地被那些自动进程访问。由于语义网络固有的分布性,OWL必须允许信息能够从分布的信息源收集起来。其中,允许本体间相互联系,包括明确导入其他本体的信息,能够部分实现这样的功能。
    另外,OWL提出了一个开放世界的假设。也就是说,对资源的描述并不局限于在一个简单的文件或范围内。类C1本来是由本体O1定义出来的,然而,它也可以是由其他的本体扩展出来的。对C1进行这样的假设的结果是单调的。新的信息不能否定之前的信息。新的信息可以是和旧的信息矛盾的,但是事实和推导只能被增加而不能被删减。
    当设计一个本体的时候,设计者必须考虑到这种矛盾的可能性。一种期望是,工具的支持将帮助侦测到这样的情况。
    为了能写出一个能被唯一翻译的而且能被软件(代理)使用的本体,我们要求OWL有一个语法和正规的语义。OWL是RDF的一个词汇扩充[RDF语义([url]http://www.w3.org/TR/rdf-mt/[/url])]。在OWL网络本体语言语义和简明语法中,有OWL的语义定义 。用于三个方面:1.通过定义类以及类的属性来形式化某个领域; 
2.定义个体并说明它们之间的属性;3.在OWL语言的形式化语义允许的层次上,对类和个体进行推理
    要进一步了解owl, 《元数据与知识本体》给出了新的东西。本体有多种形式,元数据方案本身可以看成是本体的一种形式,或者一类简单的本体。元数据方案的制定是对一个应用系统相关的实体进行分析并提取属性的过程,如果在此基础上继续对所涉及的各种实体类型的关联关系进行详细分析,最终就能导出本体模型,元数据方案的制定过程就是一种本体的建立过程。 
    除此之外,许多叙词表和分类表等本身就是领域知识的概念体系,包含丰富的关系,虽然许多关系可能不是非常严密,但它们也都可以看成是一类本体。上述两种本体的初级形式经过规范化和形式化之后,都可能成为计算机可以操作的本体工具。 
    目前支持本体开发的工具多大数十种,功能各不相同,对于本体语言的支持能力、表达能力、逻辑支持能力以及可扩展性、灵活性、易用性等都相差很大,其中较著名的有Protégé 、OntoEdit、OilEd、Ontolingua等。Protégé是目前较活跃的本体工具,是可以免费获得开放软件,目前的版本是Protégé 4.0 alpha。他用Java语言开发,通过各类插件支持多种本体格式,甚至已经能够支持刚刚发布的,也是目前最有前途的W3C的OWL格式。
    Protégé  是由斯坦福大学开发的本体编辑和知识获取软件。因为是软件,要使用才能进一步明白,可参考 Protégé 教程 。利用 Protégé 可以建立本体,现在来看看怎么建立本体。
     现在建立本体的普遍思路:先建立好领域本体,然后利用该本体中的类对文本进行标注,然后再对文本进行标注,然后在对标注后的文本利用本体进行相应的处理。
     但是, 针对本体进行语义标注,首先需要明确要标注的对象。从本体的角度来说,就是明确需要将本体中的哪些成份和现实世界建立联系。者同时也是标注的粒度问题。本体标注的粒度由粗到细可以分为标注概念、标注概念的属性、标注关系和标注实例。用本体进行标注,指出资源在语义层面上的特征图书馆里给书分类可以视为语义标注,它使用本体(分类法)为资源(书)赋予语义特征(分类号)为博客文章添标签也可以视为语义标注,它使用本体(已有标签集合)为资源(文章)赋予语义特征(标签)语义标注的结果是语义元数据,如一本书的分类号是什么,一篇文章的标签是什么都是语义元数据,可以用于检索owl是本体表示语言。
     语义标注就是在RDF和OWL之间为推理建立了联系。标注通常是为某一资源 (如一段话或者一个词)赋予一个标识,如在书中将某个概念用红笔画出来;语义标注是基于某个本体对数据源进行标注,这种标注不是划线或者划个圈,而是给它一个标记,如某某某
     2007年8月28日,WSDL和XML Schema的语义标注(SAWSDL)达到推荐状态,成为“W3C标准”。
    本体标注了解到了这里, Tom.M.Mitchell 通过 分析Tesanro1992.1995设计的世界上最好的西洋双陆棋程序TD-GAMMON ,使人们对机器学习有了一个全新的认识 西洋双陆棋程序TD-GAMMON,它是通过一百万次以上与自己对弈来学习起策略的,现在他的水平能与人类的世界冠军相比。此程序使用人工神经元网络表示学到的评估函数,考虑对棋局的完整描述,而不是棋盘的几个参数。所以接下来要看看机器学习。
    “机器学 习” 一般被定义为一个系统自我改进的过程,但是仅仅从这个定义来理解和实现机器学习是困难的,从最初的给予神经元模型以及函数逼近论的方法研究,到以符号演算为基础的规则学习和决策树学习的产生,和之后的认知心理学中归纳、理解、类比等概念的引入,至最新的计算学习理论和统计学的兴起(当然还包括基于马尔可夫过程的增强学习),机器学习一直都在相关科学的实践应用中起着主导作用。
    机器学习从很多学科吸收了成果和概念,包括统计学、人工智能、哲学、信息论、生物学、认知科学、计算复杂性和控制论等。
    其中算法在机器学习中的应用极为重要。先来看看算法在机器学习中的实际应用:1.可以只简单地存储训练样例,然后对寻找保存的“最接近的”情形来匹配新的情况(最临近算法);2.可以产生大量候选的西洋跳棋程序,并让他们相互比赛,保留最成功的程序并进一步用模拟进化的方式培育或变异它们(遗传算法);3.分析或向自己解释比赛中碰到的某一次成败的原因(基于解释的学习)。
    对于算法的了解,还参看了一些基础的书籍,以辅助算法的学习及理解。《数据结构》 、《标准C语言基础教程》 、《Java 大学基础教程》 、《计算机程序的构造和解释》 等。
    此外为了辅助对机器学习及人工智能的理解选择了《机器学习-实现人工智能的途径》 、《人工智能-理论与实践》 、《智能技术》 等书籍。
    此外关于建立好的本体的存储有新的技术可以借鉴BigTable.BigTable 是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。根据Google的一贯做法,内部开发的BigTable是为跑在廉价的PC机上设计的,所以对于它的实用价值和普及性是很适合用于这个设计中。BigTable 让Google在提供新服务时的运行成本降低,最大限度地利用了计算能力。BigTable 是建立在 GFS ,Scheduler ,Lock Service 和 MapReduce 之上的。每个Table都是一个多维的稀疏图 sparse map。Table 由行和列组成,并且每个存储单元 cell 都有一个时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动情况。在他的例子中,行是URLs ,列可以定义一个名字,比如:contents。Contents 字段就可以存储文件的数据。或者列名是:”language”,可以存储一个“EN”的语言代码字符串。为了管理巨大的Table,把Table根据行分割,这些分割后的数据统称为:Tablets。每个Tablets大概有 100-200 MB,每个机器存储100个左右的 Tablets。底层的架构是:GFS。由于GFS是一种分布式的文件系统,采用Tablets的机制后,可以获得很好的负载均衡。比如:可以把经常响应的表移动到其他空闲机器上,然后快速重建。Tablets在系统中的存储方式是不可修改的 immutable 的SSTables,一台机器一个日志文件。当系统的内存满后,系统会压缩一些Tablets。