基于网络搜索的问答系统
1:网页如何抠下来?
爬虫访问,每一页有多个链接,进一步爬下来。 爬下来后,每个网站的网页格式不一样,如何进一步抽出 需要的信息呢?
为什么需要问答系统?
传统搜索引擎的局限性:
1)以关键词组合的方式来表达用户的需求,而不是自然语言的形式。很难获取到用户真正的检索意图
2)返回的是与查询词相关的网页集合,用户真正需要的信息只是很少一部分,最终答案还需要用户自己在网页中翻阅查找
3)关键词的检索方式,虽然检索和排序算法易于实现,但是对文本的处理只是停留在词法的层面,并没有深入的句法和语义的分析
问答系统的好处:
系统首先接受用户通过自然语言的方式输入问题,然后从检索出的大量相关信息中提取准确的答案。
它是更高形式的信息检索系统
传统的问答案系统知识库是一个固定的文档集合,信息量有限,更新速度慢,无法回答用户各种各样的问题。
而互联网完全是一个理想的问答系统知识库,并且可以利用目前检索效果较好的网络搜索引擎进行检索。因此可以把问答系统与搜索引擎结合起来,建立一个基于网络搜索的中文问答系统。这种新的问答系统不仅充分利用了各种自然语言处理技术对问题和答案进行了处理,还结合庞大的互联网信息,为用户提供丰富的信息来源
问答系统分类:
应用领域分类:限定域问答系统和开放域问答系统;
信息来源分类: 基于互联网的问答系统和基于固定知识库的问答系统
问答系统实现的原理:聊天机器人、基于知识库的问答系统。基于问答式检索的问答系统和基于自由文本的问答系统
聊天机器人实现原理:
主要是采用模式匹配的方式从已有对话库中寻找答案。聊天机器人没有知识库,因此无法回答用户专业性的问题。
基于知识库的问答系统实现原理:
信息来源是一个或多个知识库,其中存储着大量的问题和答案信息,可以根据用户问题,从知识库中检索甚至推理出准确的答案。
局限:知识库范围内的问题,系统回答的准确,知识库范围外的,无法回答。
如:基于本体的问答系统 (ps:如果有多个主题,不得建立多个本体库。可是本体库很难建的,一般都是手工建的)
基于问答式检索的问答系统原理:
根据用户输入的问题,在系统的文档集合或则互联网中检索出相关的文档和网页,返回给用户。
没有进一步进行答案的提取。 问答式搜索引擎
基于自由文本的问答系统原理:
自由文本是指非结构化,未经处理的原始文档,由于数据形式不同,在答案抽取技术及其难度。而且系统采用自由文本作为知识来源,不需要构建规模庞大的知识库,省去了大量人力物力。此=此外,自由文本不具有问题的针对性,重复利用率将大大提高,这也增加了答案提取的灵活性。
自动问答系统相关技术还处于语言的浅层,对自然语言的理解不充分,因此基于语义层次的自动问答系统将是未来发展的焦点。
问答系统三个模块:
如何充分理解用户意图?
如何高效减缩相关文档?
如何准确提取问题答案?
聊天机器人实现原理相对简单:一般是基于常问问题集。
本文的主要任务是:完成一个基于网络搜索的问答系统。
答案抽取与评分策略:
将网络信息源分为三类:问答社区类,知识服务类,和其他网页类
针对问题,分为:事实问题和非事实类问题,分别提出了各自的答案提取和评分策略,而且对不同数据源的数据进行不同的处理
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
对系统框架的详细介绍,以及各个模块的划分,及设计和实现思路
。。。。明天继续看
本问答系统三大模块:
问题理解,信息检索,答案抽取
问题理解模块:
用户输入的问题,进行问题分类,并提取问题关键词
信息检索模块:
进行相关网页的爬取
答案抽取模块:
这个模块是重点。如何从大量文档中提取出准确答案?如何从大量候选答案中选出最佳答案? 这需要合理的答案抽取策略和答案评分方法
问题理解模块:
如何从一个简短的问题中,确定大量的可用信息?
根据需求进行了:问题类型分类,关键词提取及限定词提取等方面的工作。
1)问题类型分类:
直接影响到答案抽取的准确度
问题分类的主要思想是:根据问句中的疑问词和其他词语等特征来判断出所期待的答案的类型。
问题类型的识别对于事实类问题的答案抽取十分重要,因为这类问题需要精确的大难抽取,问题的类型会直接影响 命名实体的识别。
所用工具:
a)
张耀允问题分类模型CogQTaxo分类体系。将问题分为14种类型,其中5种事实类问句:位置,人称,时间,数量,实体(不能识别为前4种命名实体的其他实体); 8种非事实类问句:选择,定义,对比,描述,过程,原因,是非,抽象实体和其他…….该分类模型可以识别大部分问句类型.
b)
对于一些个别无法识别或则识别有误的,将通过人工规则进行补充
c)
该分类模型采用的算法以及对存在的问题改进的方法将在第三章中深入讲解
2)问题关键词抽取
改进:通过句法依存关系从问句中提取出答案的限定词,这样根据限定词就能更加准确的提取最终的大难。
通用关键词提取方法:
一般首先需要对问题进行分词和词性标注。 根据“停用词表”去掉停用词,根据词性和常用的语气词词库去掉虚词等无意义的词语,只保留名词、动词、动名词、形容词之类的词语作为关键词。
最后剩余的词语,以单个词的形式存储在数组中,供后面各个模块的使用。
但是,上述方法没有重点突出各个关键词的重要性,比如有一些修饰性的关键词是可有可无的,但是在提取答案时被过分重视,导致答案偏离核心意图。
所以,本系统提出了一种基于限定词的答案抽取方法,
3)信息检索模块
信息检索返回的是 相关网页集合,而不是传统的问答对形式。一方面,这位系统最终提取答案增加了难度,另一方面这种原始的
相关网页的集合,也为答案的提取增加了无限的改进空间,因为可以利用各种不同的自然语言处理技术和答案提取策略进行最终答案的提取。
增加了系统设计的改进和创新的空间。
主要任务:
利用关键字在互联网查找相关网页,并将其爬取下来。
搜索引擎的选择将决定获取信息的范围和方法。目前流行的是:百度和google中文搜素。 本系统将充分利用这两个搜索引擎来提高答案信息的召回率和准确度。
设计思路:
网络爬虫的原理和多线程的技术,快速下载搜索引擎检索到的前50个页面。
文献[3]论证了获取搜索引擎前50个,页面是既保证了系统效率又满足答案提取的信息量的最佳选择
然后,按照搜索引擎的排序顺序。。。。统一进行存储,从而为答案提取模块提供信息依据。
具体过程:
多线程并行爬取网页。对于每个爬取网页的线程设置了较短的超时时间,从而保证在10秒之内系统能够顺利返回答案。
实现原理,涉及到2个算法
算法1:具体描述了单个url的页面爬取流程
涉及到遇到302跳转的情况
算法2:讲述了信息检索模块的系统实现流程及多线程控制方法。
涉及到 不止一个搜索引擎。为每个搜索引擎分别初始化
涉及到 多个搜索引擎的url结果合并与去重
缺点:
本系统的瓶颈是响应时间,因为本系统是实时在线检索系统
4)答案抽取模块
该模块将结合所有的先决条件,利用各种答案抽取策略和答案评价方法,最终确定一个最佳答案。
主要的工作流程是:
首先从网页提取相关的正文,然后通过相似度计算的方法选择出与问题相似的候选句子。
然后利用各种答案抽取策略从这些候选句子中抽取出简短准确的答案,并为相应的候选答案评分。
经过对所有候选答案的归纳合并后,选择出评分分数最高答案的作为最佳答案返回给用户。
遇到的问题:
1:信息的类型和表现方式是各不相同。
为了对信息的有效利用,本系统将检索到的网页集合分为三类:问答社区类,知识服务类,其他网页类。
针对不同类别的信息制定不同的答案提取策略。
a)网页正文提取
问答社区类和知识服务类的网页,因为它们是结构化的网页,可以定向解析。(PS:如何知道它是那种网页呢?)
其他的网页,就需要一种通用的正文提取方法。
本系统借鉴了 陈鑫提出的正文提取方法:“基于行块分布函数的通用方法”。该方法不依赖于网页中的标签,整体思想是根据页面中汉字分布秘籍成都决定正文的位置。
b)候选句子选择
主要是针对其他网页类的信息院,因为该类王爷的正文是篇章级的,信息量大,噪声大,直接进行答案抽取,影响抽取效率,而且噪音嘻嘻容易干扰正确答案。
因此:首先将正文切分成较小的片段,这里是切分成句子级别(ps:如何切分啊?难道是依据句号么)
然后在这些句子片段中选择与问题相关的作为候选句子(PS:如何判断相关啊?难道是看有没有出现关键词?)
ps:正文按照句子切分后,需要进行相关候选句子的选择,本系统采用的是比较常用的检索相关性评分算法 BM25.
c)答案抽取及评分
答案类型(ps:应该是 问题类型吧),答案候选句子,问题关键词等准备好后,进行答案抽取。
答案抽取是本系统的重点内容,也是本系统设计的创新,因为系统将根据不同的答案类型和不同的信息源制定了不同的答案抽取及评分策略。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用了10页讲这个预处理。。。主要是说,他做了什么改进,什么工作。
用户输入预处理:
简单版
输入后,预处理(分词,标词性)后,提取关键词
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
答案抽取和评分策略
ps:如何判断网页到底是 百度知道,还是维基百科等?难道是直接看url,域名?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
明天继续看。并且可以着手写前两部分的代码了。2015/10/29