概念:
语义搜索,指更加智能的搜索引擎,这是所有搜索引擎的一致目标。它代表支持用户表达复杂的查询需求,精确定位并给出答案。Rudi Studer (RS)认为:We look at semantic search as a process of information access, where one or several activities can be supported by semantic technologies. These activities include preprocessing and extraction of information, the interpretation of user information needs, the actual query processing, the presentation of results, and finally, the processing of user feedback for subsequent queries and to generate improved refinements。即语义搜索可以分为:信息预处理和信息抽取, 用户信息需求的结实,真正的查询处理,结果表示和用户反馈及优化处理.
语义搜索的概念在Semantic Web之前就已经出现。搜索引擎的核心技术是信息检索(Information Retrieval),这最早在digital library中得到应用,并且在早期的搜索中主要使用基于逻辑表示的boolean匹配。在近年中,随着自然语言技术的成熟以及现有syntax-based技术的缺陷,在一些企业搜索应用(如IBM)或者站点搜索(如Wikipedia, Freebase)甚至垂直搜索(如专家搜索,机票搜索等)中,语义技术(不仅仅局限于Semantic Web technology)被越来越多的提到和应用。PowerSet被称为成功的semantic search engine (主要基于自然语言处理的),于2008年5月被微软高价收购。
语义搜索包含很多内容,即使是semantic web search也有很多步骤运用不同的语义技术,因此说语义搜索走不下去未免过于绝对。同时我认为现阶段的semantic search肯定不是基于NLP的,而应该是考虑如何最大限度地利用meta data,那么就涉及到如何exploit或者leverage这些graph-based data,会有新的ranking问题,有新的更scalable的图遍历算法等产生,甚至对search的整体infrastructure进行修改。拿Google作例子,可能会对GFS, Bigtable, Map-reduce等进行必要的修改和扩展。所以我觉得结构发现和匹配是关键。你不可能让用户是指定SPARQL或者指定其中包含的结构,但是不代表semantic search不要利用这些资源或者信息。
SPARQL是一种针对本体模式的查询语言因此,可以下结论上述所说的所有的推理能力(也就是对RULE的处理能力)他都不具备,看下面的说法 (Pellet supports SPARQL, which will allow you to make ontology queries. However, SPARQL is an RDF-based query language and has no understanding of OWL. It will, however, work with OWL if you have very simple queries. I'm not sure how it will interact with SWRL though. SPARQL can express RDF queries and will work with OWL in some circumstances. However, its lack of understanding of OWL's semantics can make it incredibly difficult to write many OWL queries.)当然,SPARQL和SQL还是有区别的。数据量的大小会影响最终查询结果的质量。但数据量很小时,本体查询和数据库查询的区别就不是那么明显了。这其中设计另外一个很重要的因素,那就是数据之间语义关系的复杂程度。
用传统搜索引擎的某些算法好像也能在一定程度上达到语义分析类似的效果。例如,在《Sesame:A Generic Architecture for Storing and Querying RDF and RDFS》一文中,提出了将RDF(S)转换为关系模式存储的策略。设计合理的关系模式存储RDF(S),那么可以基于用户的普通SQL查询,构造出复杂的SQL查询(构造过程中包含了简单的语义推理:如subClassof、subPropertyOf关系等),从而也就可以实现基于关系数据库的语义查询了。不过,为了达到语义检索的效果,还需要加入专门的语义分析及推理模块,这本身就会降低检索效率,使检索结果不能马上返回。而且,高级复杂的推理还需要大量的工作。问题远远不仅仅这些,还会面临海量数据无法迅速分析和操作的问题,以及结果的反馈问题。机器加程序分析真的能够和绝大多数人的想法完全重合吗?这就需要知识表达,既要符合人类的思维,又要便于计算机的表达与推理。数据挖掘的算法也是为了发现关系.而语义网则是显示表示和处理关系.所以数据挖掘的确能达到语义搜索的效果.但精确度肯定是不够的.数据挖掘一般都需要有一个数据模型.所以如果语义网的确定模型应用到数据挖掘中可能会有意想不到的效果。