图书馆智能化IM咨询机器人的设计与实现
孙翌, 李鲍, 曲建峰
上海交通大学图书馆 上海 200240
摘要

对现有的图书馆IM咨询服务进行分析,提出利用IM技术进行智能化服务。以上海交通大学图书馆为例,提出基于BotPlatform开源平台构建图书馆智能化IM机器人服务模型,并尝试设计和实现7×24小时IM机器人实时咨询服务。

关键词: IM机器人; 实时咨询; 智能化
中图分类号:G250.7
Design and Implementation of Library Intelligent IM Reference Robot
Sun Yi, Li Bao, Qu Jianfeng
Shanghai Jiaotong University Library, Shanghai 200240, China
Abstract

This paper analyzes the existing reference service using IM, and puts forward intelligent services on IM technology. It takes the practice of Shanghai Jiaotong University Library as an example, brings forward the library service model of intelligent IM robot based on BotPlatform, and designs and implements the 7×24 hours IM real time consulting services.

Keyword: IM robot; Online reference; Intelligent
1 引 言

互联网络的快速普及引发了即时通讯(Instant Messaging,IM)领域的快速发展,IM工具的实时交互、资费低廉等优点深受用户的喜爱,IM工具已经成为人们网络生活中不可或缺的一部分。

文献[1]认为总体上IM应用于图书馆数字参考咨询的优势更多。越来越多的图书馆渐渐开始利用这一灵活的、便捷的通讯工具进行参考咨询服务,例如:国外的普林斯顿大学图书馆[ 2]和密西根大学图书馆[ 3],以及国内的东北师范大学图书馆[ 4]和南京航空航天大学图书馆[ 5]等。但大多数图书馆利用的是馆员值守的IM咨询服务方式,即当馆员不在线的时候IM咨询服务将暂停,这种服务方式给图书馆的咨询服务带来了时间和人力成本的限制,而图书馆用户却希望在任何时候和任何地点享受图书馆的咨询服务。为了满足用户的需求,上海交通大学图书馆从2008年就开始关注IM咨询机器人的开发与应用。IM咨询机器人,即与用户交流的IM客户端是计算机,形成“人-机”的实时交流。

目前,常用的IM工具(如腾讯QQ、MSN等)都没有完全免费开放它们的通讯接口,IM机器人的开发遇到很大障碍。随着IM个性化应用的广泛需求,越来越多的开源社区和IM软件开发商推出免费或收费的IM开发框架,使得IM技术的个性化开发成为可能,其中BotPlatform[ 6]就是一个易用、稳定的开发平台。上海交通大学图书馆利用BotPlatform平台尝试开发适合图书馆服务的各项智能化IM机器人咨询服务,并在2009年初首次推出了OPAC机器人服务[ 7],而后陆续设计与开发了百科机器人、图书馆导航机器人等。

2 开发平台框架

BotPlatform是一款由赢思软件公司推出的开源平台,该平台基于标准的TCP/IP协议,向用户提供了较为完整的基于MSN服务的SDK开发包,包括Java SDK和COM SDK。用户在开发和调试时可以自己选用开发语言(如Java、C、C++、VB)和开发环境,其函数接口清晰实用,部署较容易,且独立运行。

在智能化IM机器人开发时,图书馆无需考虑IM机器人系统的运行情况,因为它运行在赢思软件公司的BotPlatform服务平台之上,但是图书馆使用SDK开发的个性化IM机器人是运行在图书馆自建的服务器上,整个系统平台运行架构[ 8]图1所示:

图1 系统运行框架[ 8]

图1可以看出,图书馆IM机器人账号通过BotPlatform服务平台登录到微软MSN服务器,由于机器人账号运行在BotPlatform服务平台上,所以机器人账号运行的稳定性由赢思软件公司保证,系统开发人员无须关心。开发人员只需确保使用SDK开发的图书馆IM机器人系统的稳定性和安全性即可。当SDK开发的IM机器人开始运行时,它将直接登录到BotPlatform服务平台上,此时IM机器人即由“离开”状态切换到“在线”状态,SDK开发代码中所有操作都将直接体现在IM机器人的对话过程中,当停止运行时,IM机器人将再次转入“离开”状态。当图书馆用户访问流量过大时,可以将图书馆的IM机器人服务系统并行部署在多台机器上,由BotPlatform来保证负载均衡等网络集群问题。

3 设计方案
3.1 总体设计

图书馆IM机器人的个性化智能服务的核心程序由图书馆根据用户需求自行开发,这也是整个服务系统的核心程序,该部分系统运行在图书馆端。对用户而言,其享受的所有智能化IM机器人服务均是由图书馆定制设计所提供的。上海交通大学图书馆为满足用户的需求,推出了一系列IM机器人参考咨询服务。该服务主要是利用IM机器人24小时在线的优势,自主应答用户的问题,其服务模型如图2所示:

图2 上海交通大学图书馆IM智能应答服务模型

在系统的建设上,主要分为两个部分:

(1)IM咨询机器人的功能设计与开发

IM咨询机器人具有多用户数并发、回复速度快、7×24小时服务等特点,图书馆可以根据其特点,将IM机器人的功能分为资源查询、信息导航、FAQ咨询等图书馆相关咨询服务。当IM机器人无法答复用户问题或答复结果无法满足用户需求的时候,IM机器人可以为用户提供其他咨询方式,例如为用户提供人工参考咨询服务平台,让用户得到馆员的人工服务。这种IM机器人的服务不仅在形式上新颖,而且实用性强,对于参考馆员不在线的时候更是能起到参考咨询服务的补充保障作用。

(2)数据库的建设

IM机器人的智能答复取决于后台数据库的建设。数据库分为知识库和用户信息数据库。

①知识库可以认为是IM机器人的大脑,知识库的数据量与覆盖面决定了IM机器人的“聪明”程度。知识库包括图书馆FAQ库、学科信息、数据库信息以及百科资源等,与图书馆其他系统共享同一知识库,保证知识库的唯一性,并由咨询馆员组成的服务团队定期维护更新。

②用户信息数据库决定了IM机器人的个性化服务。若用户向图书馆管理系统中的个人信息栏目中填写了个人IM账号,IM会根据用户的IM账号查询用户在图书馆的相关信息,例如:个人借阅信息、讲座定制信息等,答复用户的个性化信息咨询。

3.2 系统结构与功能

基于上述设计思路,IM咨询机器人系统主要包括表现层、应用层、系统服务层和数据存储层,整个流程[ 9]图3所示。

图3 IM咨询机器人系统结构[ 9]

(1)表现层

系统可以通过两种表现形式为用户提供服务,即IM好友服务和嵌入式IM服务。

①IM好友服务。图书馆在系统服务平台上提供IM咨询机器人服务账号,用户只需要成功添加该账号为好友,即可与IM机器人对话,享受智能化、个性化咨询服务。由于MSN服务商规定了好友的数量限制,当图书馆IM咨询机器人的好友数量达到上限时,将无法继续添加用户,用户也就无法享受IM咨询机器人提供的服务,此时图书馆需要申请更多的MSN账号满足日益庞大的用户群。

②嵌入式IM服务[ 10]。嵌入式IM是将IM实时交流模块嵌入至网页,用户通过网页交流框即可与IM咨询机器人交流,此模式无需添加好友,同时也解决了好友数量限制的问题。如果用户有个人MSN账号,可以使用MSN官方网站提供的“互动MSN[ 11]”,将图书馆提供智能化服务的MSN嵌入至相应的网站中;如果用户没有MSN账号或并不使用IM工具,那么IM好友服务模式将受到限制。为了解决这个问题,一些网站推出一种无需IM账号即可通讯的嵌入式IM。其中应用较为广泛的有Plugoo[ 12]和Meebo Me[ 13],图书馆可以应用这些网站提供的嵌入式IM服务为用户提供即时性的网页咨询服务。

(2)应用层

系统应用层包括Microsoft MSN Service平台和BotPlatform应用平台,其中Microsoft MSN Service平台由微软公司提供服务,而BotPlatform平台由赢思公司提供,在BotPlatform平台中图书馆需要将IM咨询机器人的服务账号进行头像、登录、签名档等配置,并开放IM的各类应用接口供系统服务层调用。

(3)系统服务层

系统核心开发部分主要在系统服务层。上海交通大学图书馆选择BotPlatform平台的COM SDK开发包,采用C#语言在.NET开发环境中进行开发。主要工作流程如下:

①接口对接,利用SDK的各种方法、接口与BotPlatform平台进行沟通;

②命令解析,用户以层级性的命令形式进行咨询,系统接收用户的咨询信息,并进行解析,转变为系统可以处理的机器语言;

③数据库连接,通过DAO等各种模式连接后台数据库系统,将用户的咨询需求与用户信息结合进行信息查询;

④信息回复,通过服务接口将用户所需要的信息反馈给BotPlatform平台,最终由Microsoft MSN Service平台发送给用户。

(4)数据存储层

IM机器人的智能化表现来源于后台丰富的数据信息,针对不同的应用级别应该采用不同的数据库进行数据存储。为了获得更好的扩展性,需要将数据的基本单位设计得更小。例如FAQ功能就设计了FAQKnowledge表,如表1所示:

表1 FAQKnowledge表结构

针对不同的情况设计了两种匹配模式:

①根据Keyword进行精确或模糊匹配。匹配的方式与数据库检索类似,较容易实现,也是目前实现的方式,但匹配准确度一般。

②根据Tag标签进行匹配。标签是根据Keyword进行分词筛选后生成的标签关键词,这种匹配方式更准确,但对切词和筛选算法有一定要求,可在数据结构中增加Tag字段,作为拓展开发。

4 关键技术实现
4.1 机器人登录

基于BotPlatform平台进行图书馆IM机器人开发,需要将MSN账号登录到BotPlatform平台,由BotPlatform与Microsoft MSN Service进行通信,控制MSN的登录与登出,主要利用函数void login和void logout进行操作。

登录代码示例如下:

RobotServerFactory serverFactory = new RobotServerFactory();

serverFactory.Init(2);

RobotServer server = serverFactory.CreateRobotServer("server.botplatform.com", 6602); // 接收消息事件

server.MessageReceived+=new _IRobotServerEvents_MessageReceivedEventHandler(server_MessageReceived);

server.SessionOpened+=new _IRobotServerEvents_SessionOpenedEventHandler(server_SessionOpened);

//通过BotPlatform平台上注册的Spuserid和password来登录MSN

server.Login("SPuserid", "password", 60000);

4.2 命令解析

图书馆IM咨询机器人能与用户交流,如FAQ问答、数据库导航、图书馆资源查询等功能主要通过命令解析来实现。命令解释器完成对通过用户会话内容接收并提取用户命令进行语法检查、权限验证,以及验证通过后调用相应功能模块并返回对应结果,同时也对命令执行中的各类异常做出相关处理。命令解释器包括语法检查、身份验证、命令执行、返回处理、异常处理5个部分。

(1)语法检查完成从用户发送内容中提取命令的功能;

(2)身份验证完成用户身份的合法性验证,并确定用户身份类型,为将来的应用预留扩展;

(3)命令执行完成与具体处理函数的挂接;

(4)返回处理完成将处理结果返回用户的功能;

(5)异常处理完成各种错误的友好提示。

主要代码如下:

try

{

string cmdparam = message.Text.Trim().ToUpper();

// 对命令进行解析

int CMDID = GetCMD(out cmdparam);

//进行用户身份验证,并确定用户类型,为今后扩展应用准备

int UserType = GetUserType();

switch (CMDID)

{

case 0: //帮助命令处理部分

{

string helpstr = GetHelp();

session.SendText(helpstr);

break;

}

……

case 2: //学习命令处理部分

{

int learntype = cmdparam.IndexOf("FAQ");

int posq = cmdparam.IndexOf("Q:");

int posa = cmdparam.IndexOf("A:");

string keyword = cmdparam.Substring(posq + 2, posa-posq-2);

string answer = cmdparam.Substring(posa + 2, message.Text.Length-posa-2);

learn(keyword, answer,learntype);

session.SendText("多谢指教,我已经记下了");

break;

}

……

}

}

4.3 知识库自学模式

智能化机器人应该包含模拟人工对话(即通过命令解析来实现)和智能学习两个方面。智能学习将使得图书馆IM咨询机器人能学习馆员和用户教它的问题,并在再次咨询的时候准确地回答问题。部分核心代码如下:

if (con.State == ConnectionState.Closed)

//与知识库建立连接

con.Open();

//IM机器人学习实施

OleDbCommand cmd = new OleDbCommand("insert into Knowledge (keyword,Answer) values(@keyword,@answer)", con);

cmd.Parameters.Clear();

cmd.Parameters.AddWithValue("@keyword", keyword);

cmd.Parameters.AddWithValue("@answer", answer);

cmd.ExecuteNonQuery();

从代码可以看出,主要是将馆员或用户教给IM机器人的问题和答案保存至数据库中,当用户再次咨询相同问题的时候,IM机器人即可准确回答,增强了用户的咨询体验。图书馆FAQ知识库可以通过IM机器人为用户提供开放的教学权限,通过咨询馆员的审核即可成为正式数据,从而图书馆FAQ知识库将成为图书馆与用户共建的知识库,改变了由图书馆来设计用户需求的方式。

4.4 页面跳转

当用户向IM机器人询问图书馆的馆藏情况、学术资源等问题时,IM机器人将无法通过对话框来实现大量信息的传递,此时可以通过页面跳转的方式来实现资源页面的提供。实现的方式是将用户发送的信息作为关键词进行检索,由于查询结果记录过多,IM机器人通过页面推送方式直接向用户推送资源的检索结果页面。

以检索上海交通大学图书馆馆藏目录为例,IM机器人将用户的查询关键词传递给SendActivity方法,由其给出在MSN中打开检索结果页面的指令,用户接受后即可打开相应的检索结果页面。这种方式也可以实现期刊导航、个性化信息推送、新书通报等功能。

5 系统测试

通过测试,发现IM咨询机器人基本可以满足简单的应答,如图4所示:

图4 IM咨询机器人应答示例

其对于数据库导航、数据库查询、百科知识查询、个人借阅信息推送等具有较明显的优势。但随着咨询内容的深入,依然存在一些问题需要进一步研究,主要有以下两个方面:

(1)由于IM咨询机器人服务中所牵涉的服务平台由第三方提供,因此Microsoft MSN Service和BotPlatform平台的稳定性将直接影响该服务的效果。

(2)目前系统设计的智能化应答还处于基础阶段,在实际应用中,当用户的咨询问题为自然语言时,IM咨询机器人无法进行切词分析,因此回复不够精准,影响用户体验。图书馆可以将IM机器人与语义分析技术进行结合,改善咨询的回复效果。

6 结 语

本文介绍了基于BotPlatform平台的智能化机器人的相关技术,并介绍了上海交通大学图书馆IM咨询机器人的设计与实现。借助MSN客户端工具,以即时消息的方式为图书馆用户提供了7×24小时各类虚拟参考咨询服务,这种快捷、灵活的即时对话方式使用户得到了新的服务体验,并能及时推送图书馆各项信息资源,同时也为下一代智能化图书馆服务寻求方法与技术突破。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] Honghton S, Schmidt A. Web-based Chat VS. Instant Messaging: Who Wins?[J]. Online, 2005, 29(4): 26-30. [本文引用:1]
[2] Princeton University Library | PUL Library Chat Service[EB/OL]. [2011-04-18]. http://library.princeton.edu/help/chat.php. [本文引用:1]
[3] Ask a Librarian | MLibrary[EB/OL]. [2011-04-18]. http://www.lib.umich.edu/ask-librarian. [本文引用:1]
[4] 东北师范大学图书馆实时咨询[EB/OL]. [2011-04-18]. http://www.library.nenu.edu.cn/Reference/VRD_info.htm. [本文引用:1]
[5] 南京航空航天大学图书馆实时咨询[EB/OL]. [2011-04-18]. http://lib.nuaa.edu.cn/service/xnzx.asp?mouse_over=d3. [本文引用:1]
[6] BotPlatform-Interactive Promotions for Brand Marketing by IM Promotion Bot Builder [EB/OL]. [2011-02-07]. http://www.botplatform.com/. [本文引用:1]
[7] 上海交通大学图书馆OPAC机器人[EB/OL]. [2011-04-18]. http://opac.lib.sjtu.edu.cn/F/?func=file&file_name=robot.html. [本文引用:1]
[8] BotPlatform SDK User Guide [EB/OL]. [2011-04-18]. http://www.botplatform.com/docs/BotPlatform_SDK_User_Guide.pdf. [本文引用:1]
[9] 林立宇. MSN查号机器人的研究与应用[J]. 广东通信技术, 2007, 27(9): 59-63. [本文引用:1]
[10] 徐婷. IM工具在图书馆实时咨询中的应用[J]. 图书馆建设, 2008(11): 77-80. [本文引用:1]
[11] Welcome to Windows Live[EB/OL]. [2011-02-07]. http://settings.messenger.live.com/applications/websettings.aspx. [本文引用:1]
[12] Plugoo[EB/OL]. [2011-02-07]. http://www.plugoo.com. [本文引用:1]
[13] Meebo Me Widget![EB/OL]. [2011-02-07]. http://www.meebome.com. [本文引用:1]