常识问答库基于的技术-常识问答库是基于什么技术建立的

第三方分享代码
hacker 3年前 (2022-07-16) 黑客团队 109 2

目录介绍:

要做一个mfc问答软件,在数据库方面要用什么技术?odbc,dao,还是ado?

ADO

来自ITwiki,开放的中文IT百科

Jump to: navigation, jumptoSearch

微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。

ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布。

ADO包含一些顶层的对象:

连接,代表到数据库的连接

记录集,代表数据库记录的一个集合

命令,代表一个SQL命令

记录,代表数据的一个集合

流,代表数据的顺序集合

错误,代表数据库访问中产生的意外

字段,代表一个数据库字段

参数,代表一个SQL参数

属性,保存对象的信息

ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者Visual Basic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。

在新的编程框架.NET Framework中, 微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。其对象模型和传统ADO差别很大。

DAO

DAO(Database Access Object)使用Microsoft Jet数据库引擎来访问数据库。Microsoft Jet为象Access和Visual Basic这样的产品提供了数据引擎。

与ODBC一样,DAO提供了一组API供编程使用。MFC也提供了一组DAO类,封装了底层的API,从而大大简化了程序的开发。利用MFC的DAO类,用户可以编写独立于DBMS的应用程序。

DAO是从Visual C++4.0版开始引入的。一般地讲,DAO类提供了比ODBC类更广泛的支持。一方面,只要有ODBC驱动程序,使用Microsoft Jet的DAO就可以访问ODBC数据源。另一方面,由于DAO是基于Microsoft Jet引擎的,因而在访问Access数据库(即*.MDB文件)时具有很好的性能。

DAO和ODBC的相似之处

DAO类与ODBC类相比具有很多相似之处,这主要有下面几点:

二者都支持对各种ODBC数据源的访问。虽然二者使用的数据引擎不同,但都可以满足用户编写独立于DBMS的应用程序的要求。

DAO提供了与ODBC功能相似的MFC类。例如,DAO的CDaoDatabase类对应ODBC的CDatabase类,CDaoRecordset对应CRecordset,CDaoRecordView对应CRecordView,CDaoException对应CDBException。这些对应的类功能相似,它们的大部分成员函数都是相同的。

AppWizard和ClassWizard对使用DAO和ODBC对象的应用程序提供了类似的支持。

由于DAO和ODBC类的许多方面都比较相似,因此只要用户掌握了ODBC,就很容易学会使用DAO。实际上,用户可以很轻松地把数据库应用程序从ODBC移植到DAO。

Visual C++随盘提供了一个名为DaoEnrol的例子,该例实际上是Enroll的一个DAO版本。读者可以打开DaoEnrol工程看一看,它的源代码与Enroll的极为相似。读者可以按照建立Enroll的步骤来建立DaoEnrol,其中只有若干个地方有差别,这主要有以下几点:

选取的数据源不同。在用AppWizard创建DaoEnrol时,以及在用ClassWizard创建CDaoRecordset类的派生类时,在Database Options对话框中应该选择DAO而不是ODBC。而且DAO的数据源是通过选择一个.MDB文件来指定的,即点击“...”按钮后在文件对话框中选择要访问的.MDB文件。

记录集的缺省类型不同。ODBC记录集的缺省类型是快照(Snapshot),而DAO则是动态集(Dynaset)。

参数化的方式不同。DAO记录集的m_strFilter和m_strSort中的参数不是“?”号,而是一个有意义的参数名。例如,在下面的过滤器中有一个名为CourseIDParam的参数。

m_pSet-m_strFilter ="CourseID = CourseIDParam";

在DoFieldExchange函数中,有下面两行:

pFX-SetFieldType(CDaoFieldExchange::param);

DFX_Text(pFX, _T("CourseIDParam"), m_strCourseIDParam);

DFX函数的第二个参数也是CourseIDParam。

处理异常的方式不同。例如,在删除记录时,对异常的处理如下所示:

try

{

m_pSet-Delete();

}

catch(CDaoException* e)

{

AfxMessageBox(e-

m_pErrorInfo-m_strDescription);

e-Delete();

}

除了上述差别外,AppWizard和ClassWizard也隐藏了一些细微的不同之处,例如,DAO记录集是使用是DFX数据交换机制(DAO record field exchange)而不是RFX,在DAO记录集的DoFieldExchange中使用的是DFX函数而不是RFX函数。

10.8.3 DAO的特色

DAO可以通过ODBC驱动程序访问ODBC数据源。但DAO是基于Microsoft Jet引擎的,通过该引擎,DAO可以直接访问Access、FoxPro、dBASE、Paradox、Excel和Lotus WK等数据库。CDaoDatabase类可以直接与这些数据库进行连接,而不必在ODBC管理器中注册DSN。例如,下面的代码用来打开一个FoxPro数据库:

CDaoDatabase daoDb;

daoDb.Open( “”,FALSE,FALSE,"FoxPro 2.5;DATABASE=c:\\zyf");

CDaoDatabase::Open函数用来连接某个数据库,该函数的声明为:

virtual void Open( LPCTSTR lpszName, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T("") );

throw( CDaoException, CMemoryException );

什么是智能问答系统

智能科普问答系统通过对数据的深度加工和组织管理、以更自然的交互方式满足用户更精确的信息需求。智能科普问答系统借助互联网,突破时间和空间的限制,让公众可以随时随地获取自己想要的科学信息。

智能科普问答系统以一问一答形式,精确地定位网站用户所需要的提问知识,并给网站用户提供交互服务。可以实现的功能有:

1、相关问答推送。当网站用户提出问题时,系统不仅将问题答案推送出来,而且会将与这个问题相关的知识也都推送出来供用户查询,这样就做到了一次提问全面掌握所有信息。

2、提问智能提示。用户在提问的过程中, 系统将已经输入的内容自动分析给予优化的补全或相关提示。

3、焦点问题自动排行。对在一定的时间内,用户对知识提问的热度,系统自动聚焦,并按照访问频度将热点知识集中在系统页面上热点词聚焦  系统对用户提交的业务关键词进行统计,并按照访问的频度进行聚焦,将与关键词相关的业务列表自动链接,形成业务热点关键词。

4、显在线客服问答。模拟在线客服人员,以网站智能客服形式完成客服作用。

5、引导式交互客服服务。将常见问题整理成若干流程诊断型的知识,通过引导交互式地服务,尽量从Web端解决客户常见问题。

6、客服座席协助。完成专家坐席功能,在普通坐席人员无法回答问题时提供标准化的知识协助,帮助普通客服人员快速,准确回答。

为什么知识图谱可以应用于问答系统

知识图谱与问答系统

摘要: 领域知识图谱,是下一代搜索引擎、问答系统等智能应用的基础设施,目前出现的产品有:百度“知心”、搜狗“知立方”等。本篇将介绍知识图谱基础知识,及其在自然语言处理方面(主要是问答系统)的应用。

1. 前言

知识图谱(knowledge graph),是下一代搜索引擎、问答系统等智能应用的基础设施,目前出现的产品有:百度“知心”、搜狗“知立方”等。本篇将介绍知识图谱基础知识,及其在自然语言处理方面(主要是问答系统)的应用。

2. 知识图谱概念

知识图谱,是一种基于有向图(directed graph)的数据结构,由节点(points)及有向边(directed edges)组成,图中的每个节点称为实体(Entity),边代表实体间的逻辑关系(Relation)。

举一个例子,这是一个简单地描述旅游景点的知识图谱:

现在来解释为什么“知识图谱是下一代搜索引擎、问答系统等智能应用的基础设施”,如果把智能系统看成一个大脑,那么知识图谱就是大脑中的一个知识库,它使得机器能够从“关系”的角度去分析、思考问题。以上图为例,从知识图谱中可以获取“泰山的海拔高度为1545米”、“衡山和恒山发音相同”等简单知识。

3. 知识图谱的表示

知识图谱可以使用三元组(entity-1,relation,entity-2)来表示,每一条记录描述一个事实,例如:(五岳,五岳之一,泰山)表示“泰山是五岳之一”这样一个事实。需要注意的是,如果relation 是确定的,那么entity-1与entity-2 的位置不能够颠倒的,因为一个三元组描述一条有向边(事实);实体不一定得是现实生活中的一个具体事物,也可以是事物的一个属性值,此时关系就是该属性。

我们用三元组来存储知识图谱,这时还需要考虑一个问题,那就是实体识别(Entity Recognition)与实体消歧(Entity Disambiguation)。例如,实体“苹果”有可能是指水果苹果,也可能是指iphone。这时,我们对知识图谱需要做一些处理,修改一下搜索策略。

在建立知识图谱过程中,若发现歧义,则再增添对应上级节点,在筛选“苹果”一词时使用上级节点来消歧。这里再次强调知识图谱仅是基础设施 。后面会通过几个例子说明知识图谱的应用价值;再介绍知识推理(Knowledge Reasoning)技术,即怎样通过与用户互动教会智能系统完善知识图谱。

4. 知识图谱的应用

传统搜索引擎只是简单地根据用户输入的关键词去筛选目标网页,然后给出一堆网页链接。知识图谱的应用,除了给出相应的网页链接外,还会尝试提供一些更加智能化的答案。例如,用户在必应搜索输入“taj mahal”将得到如下结果:

这里提供泰姬陵的近义词、旅游信息、地理位置、古代世界七大奇迹等,从而更好地发掘用户意图, 而不像传统搜索引擎那样死板,需要用户自己一条一条去筛选信息, 这样知识图谱技术就具有很大的商业价值了。

又例如,我直接在百度搜索输入“乒乓球”, 得到以下结果(其实我只是想搜索一下“张继科”,但是一时间忘了他的名字):

同时,知识图谱的应用能够使得搜索引擎获得一定的推理能力。举一个例子,在百度搜索输入“梁启超的儿子的妻子”,传统搜索引擎只是简单地匹配网页,很难真正地理解用户意图,更别说回答这个问题了。然而知识图谱却可以令问题变得简单起来,我们先从知识库中获取梁启超的儿子是梁思成,然后再获取梁思成的妻子是林微因。

这样就能增强搜索引擎与用户间的互动,逐步变成一个智能问答系统。

5. 知识推理技术

这里再次强调知识图谱仅是基础设施,因为它真的很简单,也没有什么高大上的技术,我们仅仅只是想将知识用这样一个形式存起来,以便由简单的知识学习出更高深的知识。举一个例子,知识图谱中仅存有如下信息:

那么智能问答系统是无法回答类如“康熙与乾隆之间是什么关系?”知识推理类的问题的,这时可以用过简单地加入人工规则:“父亲+父亲→祖父”来更新知识图谱,或者直接从用户互动中学习规则,当然用户互动时就需要上统计知识了,不能说有网友回答“国籍相同关系”那么所有的祖父与孙子都是“国籍相同关系”。

接下来我们来看一个更复杂的例子,在百度搜索引擎中输入“孕妇可以吃荔枝吗?”得到如下结果:

这时智能问答系统可以返回“59%的网友认为能吃,28%的网友认为不能吃,13%的网友认为不能吃”。若用户继续问“不能吃的理由是什么?”,那就返回“不能吃”的网友回答。下面通过这个例子来思考统计机器学习技术在知识推理中的应用。

我们分析一下,这些“网友回答”有些来自“宝宝树”,有些来自“有问必答网”,有些来自“育儿网”,我们可以利用爬虫去爬这些网站的问题及其回答,然后对问题做聚类,先构建如下知识图谱:

具体问题与回答之间的逻辑关系边一开始留空,我们再对语义边上分类技术,把空余的边填补完整,当然也可能误分类,例如百度例子中的第一个回答,“慎吃”被归为“能吃”。最后再对这些边做统计,就可以回答类似问题,利用语料库做知识推理,学习知识库里没有的知识,完善知识图谱。

Reference

知识图谱——机器大脑中的知识库

知识图谱的应用

知识图谱,为移动搜索而生

什么是基于JAVA技术?

1.基于JAVA技术就是在java虚拟机里运行的各种系统,使用java的类库

2.JAVA技术有什么特点

a. JAVA技术最大的特点是平台无关性,所以不会局限于某 种操作系统(window),不会受制于人

b. 另外一个特点是技术开源性,开发人员可以清楚地看到技术的实现并可以根据自己的需要修改,这是许多大的公司首要考虑的

c.免费的

d.安全的 windows 病毒多阿

基于什么技术的什么系统的设计与实现

基于JSP技术的试题库系统的设计与实现;

基于模板技术的网站内容管理系统的设计与实现;

基于Java技术的图书管理系统的设计与实现;

基于WiFi技术的定位系统的设计与实现;

基于构件技术的报表系统的设计与实现。

基于什么技术的什么程序的实设计与实现

题主是准备走一个基于xxx技术的xxx系统设计与实现的毕业设计吗?

如果你是学计算机的话, 推荐用javaweb来实现一个xxx管理系统网站, 毕竟javaweb是目前技术最成熟, 比如各种学生管理系统, 寝室管理系统, 人力资源管理系统等等

如果对自己要求高的话可以试试做一个在线商城这样的复杂项目, 项目技术一般都是Eclipse, springmvc, mybatis, hibernate, shiro, mysql这类 希望能够采纳

相关推荐

网友评论

  • (*)

最新评论

  • 访客 2022-07-17 00:10:53 回复

    数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的

    1
  • 访客 2022-07-17 08:03:38 回复

    可以通过ADO中的命令对象来执行。 ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布。 ADO包含一些顶层的对象: 连接,代表

    2