个性化信息定制服务的关键技术与解决方案

个性化信息定制服务的关键技术与解决方案*

摘要:本文讨论了网络环境下个性化信息服务的特性,分析了个性化信息定制服务需要解决的几个主要问题,并以自主研发的一个个性化新闻定制系统为例,分析了信息定制服务中的信息采集、信息处理、信息代理服务的技术难点与具体实现方式。其中,信息采集模块采用元搜索引擎的工作模式来搜集网页信息;信息处理模块则是以正则表达式为工具极简便地实现了对相关网页的清洗,获取了相关新闻元数据;信息代理服务模块则通过实现新闻网页推送以及邮件推送来满足用户的个性化需求。

关键词:个性化信息服务 网络新闻检索  用户定制

Critical technologies and solution scheme of  Personalized information Custom-built service

Abstract : This paper discusses characteristic of personalized information service under environment of network, analyses several main problems which need to be solved by the personalized information custom-built service, and taking the personalized custom-built news system independently developed for example ,studies the technical difficulties and the concrete realization of information-collecting、information-processing and information-pulling of information custom-built service. In this system, the module of the information-collecting emploies the mode of the meta-search engines to obtain the information of web pages; the module of the information-processing emploies the regex expression to analyse the web pages easily, in order to obtain the meta-data of the news; the module of the information-pulling emploies web page pulling and the email pulling to satisfy the individualized requirements of the users.

Keyword : personalized information service; Web news retrieval; custom-built

1 网络环境下的个性化服务概述

  对网络信息服务而言,提高服务质量,为用户提供方便快捷的个性化服务已经成为其成败的关键。随着机器学习,模式识别等知识发现技术的出现,网络信息服务的竞争已使得服务方式从传统的“一对多”发展到“一对一”的个性化服务方式。

  个性化信息服务就是按照用户需求提供特定服务,即根据用户提出的特定要求,或是通过对用户个性、习惯等地分析,主动向用户提供他们可能需要的信息集合。个性化服务本质上就是研究用户的行为和习惯,建立动态的个性化需求库,并由此引导和培养用户定制自己的个性需求,最终提供给用户相对完整的信息集合和更周到的特色服务。

  个性化信息服务主要包括三个方面[1]:服务资源的个性化,服务内容的个性化以及服务方式的个性化。服务资源就是服务所要依赖的信息的集合。在网络环境下,它通常指的是各个网站里的各类主题的网页。服务内容则是个性化服务系统对资源作特定处理后呈现给用户的结果集合。而服务方式则是一系列更为细化的系统与用户交互的过程。

  个性化服务的特征是“动态”加“主动”。[2]所以它决定了整个个性化服务的流程应该是:构建简单的用户需求模型,检索针对特定需求的相关信息,按照特定主题,将检索到的信息进行过滤加工,整合成相对完整的信息集合,并以在线或者离线的形式,主动发送给用户,从而实现信息支持。更进一步地,它还可以,根据整合得到的信息集合,产生新的知识方案,提供用户决策支持。同时,在对这些信息或知识的逐步积累的过程中,利用知识发现技术挖掘个体用户或用户群的兴趣取向,再不断调整或者扩展用户的个性化信息库,进一步提供个性化服务,形成一个不断渐进和循环的过程。

  个性化服务过程中的主要技术有以下几类:(1)个性化挖掘领域的技术,包括用户兴趣模型的学习,Web个性化推荐以及用户和页面的分类聚类等技术(2)个性化服务技术,包括页面定制技术,信息频道技术,指引文献源或提供文献全文的技术以及信息推送技术等。这其中有的技术已经基本成熟,如Web数据库技术、信息推送技术;有的尚在发展之中,如全文索引技术、信息过滤技术、智能代理技术、Web服务技术等。[3]

2 个性化信息定制服务需要解决的主要问题

  个性化信息定制服务所面临的问题是多方面的,涉及到通过Web挖掘来动态获取和更新个性化用户兴趣库、个性化推荐、个性化搜索,以及个性化服务质量及其评价指标的确立等等方面的问题。

  网络个性化数据源可包括:用户定制信息、WEB服务器日志、代理服务器日志、客户端的用户行为等。【4】本文只讨论个性化数据源中的用户定制信息。本文将描述一个自主开发的以新闻内容服务为例的个性化定制信息服务系统的具体实现过程。

  从逻辑实现层面上说,个性化信息定制服务要解决以下几个主要问题。

  首先是怎样搜索包含相关主题的信息网页。通常是利用蜘蛛软件(网络机器人),制定相应的搜索策略来获取网页。一般的系统往往还对网页进行查询扩展,系统根据相关个性化策略来自动添加相关查询词来扩展查询。

  其次是怎样从网页中清洗出相关信息并进行整合。通常就是利用网页清洗技术或者网页解析技术,当然具体的清洗策略和算法可以根据某类具体的网页来制定,也可以是直接根据一般性的通用网页来制定。

  最后就是怎样根据用户需求进行信息代理服务,这也就是前面所提到的服务方式的个性化,有网站登陆方式、邮件方式以及短信方式等。

  上述问题,可以概括称作信息采集、信息处理、信息代理服务。这三个问题都有学者分别提出过分立的研究成果和解决方案,但很少把这几个问题结合起来给出完整解决方案。本文将结合自主开发的一个个性化网络新闻定制系统,分别讨论、分析上述三个关键性问题的技术难点,并提出完整的技术解决方案。在这个个性化新闻定制系统中,三个关键性问题的解决方案分别规划设计为个性化新闻定制系统中的信息采集模块、信息处理模块、信息代理服务模块。

3个化性网络新闻定制系统概况

  个性化网络新闻定制系统按照个性化信息服务的工作模式来实现新闻服务,采用基于B/S模式的三层结构,用户通过IE从Internet 登陆系统网站,就可以进行相关新闻的分类浏览以及新闻检索。当成为注册用户后,用户就可以享受个性化新闻的定制服务。用户进入相关页面提交需要定制的新闻主题以及新闻提醒服务的形式,系统会定期按照用户的需求,以网页或邮件的形式把相关新闻信息推送给用户。

  系统提供的服务主要分为通用公共服务和个性化定制服务。通用公共服务主要是新闻网站所通用的功能,比如:新闻浏览,新闻检索等功能。个性化定制服务则是网站的主要特点,比如:个性化服务需求设定和提交以及修改,查阅历史新闻,个人喜好新闻的文档管理,浏览个性化定制新闻,以及按需推荐相关新闻等服务。

  系统工作在Windows 2000 Server操作系统和SQL Server 2000数据库管理系统平台,WEB服务器为Apache 2,前台网站采用JSP(Java ServerPages)来处理,JSP引擎为resin2.1.6,后台模块采用Java语言编写,Java虚拟机为JDK1.4。

  系统的工作流程如下:

  1) 首先从数据库中读取用户的定制需求信息和属性信息,匹配成相关的检索表达式;

  2) 再统一把检索表达式提交由某几个独立搜索引擎处理;

  3) 取回检索结果页面;先对新闻进行去重处理,然后对检索回的页面进行挖掘,提取出系统所需新闻元数据,元数据的格式组成有以下几个字段:新闻标题,新闻来源,新闻时间,新闻文摘等几个字段;

  4) 将取回的元数据进行去重过滤等处理后存入数据库;

  5) 根据用户定制的推送服务方式把新闻以网页或电子邮件的形式发给用户。

  系统采用在分类目录下给出主题词的方法描述用户的信息需求。系统参考了搜狐和新浪等门户网站的类目表,建立了自己的十几个新闻大类,比如体育、娱乐、百姓生活、时事天下等大类,在大类下设二级类目,比如体育大类底下还会有篮球,足球,乒乓球等小类。用户先选择大类以及二级类目,然后就可以根据自己的需要来给出相关的主题词,这样就构成相关的检索表达式。在系统的使用的过程中,用户还可以根据遇到的情况对表达式作相应地调整。

  下面,结合系统具体开发过程,阐述个性化网络信息服务中的三项关键技术——信息采集、信息处理、信息代理服务。

4信息采集

  信息采集就是利用信息采集技术在互联网中全面、实时的搜集所需的情报信息,并将这些信息进行归一化处理。信息采集技术通常是利用“蜘蛛”软件(也称“机器人”软件)从Internet上搜集包含相关主题的网页信息。“蜘蛛”软件在全网的爬行有一定的策略,主要是按照网页的内容,网站的组织结构或是网页间的超链来制定。

  由于网络资源的异常繁杂,以及“蜘蛛”软件本身的局限性,使得采集来的网页信息很难满足检索系统检准率和检全率等的要求,并且系统需要巨大的空间来存储海量的网页,而这其中包括了大量的无用网页。

  考虑到蜘蛛软件的上述局限性及实现的难度,笔者建议在个性化信息定制服务的信息采集模块中采用元搜索引擎的工作模式来获取网页信息。元搜索引擎是搜索引擎的搜索引擎,它最大的优点是不需具备自己的数据库并且使查全率得到很大的提高。信息采集模块首先根据用户指定的主题以及相关个性化信息构成检索表达式,提交给几个独立的搜索引擎,再对从这些独立搜索引擎中返回的网页进行归一化处理后提交给信息处理模块。

  在已开发完成的个性化新闻定制系统中,即采用了元搜索引擎的工作模式构建采集模块。首先,要解决的建立连接检索源的问题,系统主要以新浪、百度、搜狐等独立搜索引擎作为检索源(这几个搜索引擎都是目前国内较好的中文搜索引擎)。其次,要编写程序分别从各个检索源获得相关网页。

  元搜索引擎从某个检索源获得的查询结果,是一个个由检索源返回的、包含了若干条命中记录的检索结果页面,这些页面的URL存入数据库前须进行若干整理或变换工作。这是因为提交检索表达式链接检索源时,系统会遇到很多例外情况,返回的URL可能并不能准确表达查询情况。比如,元搜索引擎的某次检索可能没有任何命中记录,这时同样有一个查询结果页面返回,其内容可能是“查到0条记录”之类的提示。但该返回页面的URL形式上与有命中记录的返回页面没有区别。此时,系统就要利用URL参数表对此URL实施变换,成为标准化的检索源URL,使得从URL的形式上就能判别出该URL的检索意义。每个检索源(搜索引擎)的标准化URL格式是不一样的。还以新浪为例,下面给出了几个经过变换的标准形式的URL的格式:

  以标题为检索为入口的URL:

  http://sinanews.chinasearch.com.cn/sinanews.exe?word=*****&mt=1&fl=

  以全文为检索为入口的URL:

  http://sinanews.chinasearch.com.cn/sinanews.exe?word=*****&mt=0&fl=

  这里可以看出,“mt=1”与“mt=0”是控制的参数。

  搜索引擎返回的命中记录为0的URL:

  http://search.sina.com.cn/cgi-bin/news/addnews.cgi?query=无查询词

5信息处理

  信息处理就是对采集到的各种信息进行过滤、去重、内容提取、自动分类等处理后,与各种信息自动建立内容关联。在网络环境下,主要是对采集来的相关网页进行过滤,去掉网页中的相关标签、广告、图片、动画等,并挖掘出有用的信息,进行相关的整合,以形成相应的信息集合或知识集合。信息处理技术通常要利用网页清洗和知识表现等技术,现在的难点是网页清洗实现不易。由于网页的多样性、易变性和HTML语言本身造成的不规范性,给网页解析带来很大的不便,成为信息处理系统的瓶颈。

  在个性化新闻定制系统中,笔者针对网页新闻的共同特征,巧妙地绕开了传统的解析网页方法,给出一种更为便捷的网页过滤途径,即利用正则表达式来匹配特定新闻网页中的信息单元。正则表达式是一种可以用于模式匹配和替换的强大工具,它可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。

  以下是一个新闻网页源码的实例。

<html>……<head>……</head><body>

<ul class=l15><a href="http://tech.sina.com.cn/o/62874.shtml" target=_blank><font class=f15>背景资料:先进的攀岩工具SRT</font></a> <font color=#333333><i>2001/04/13 15:56</i></font><br>...最大问题,这次中外联…岩工具SRT。<b> </b>SRT包括上升<b> </b>下降手柄等….借助自身的.

</ul>

<ul class=l15><a href="http://auto….1590.shtml" target=_blank><font class=f15>峰会--2款超级跑车对比测试</font></a> <font color=#333333><i>2002/12/11 10:22</i></font><br>...大堆“肌….级跑车中,道奇蝰蛇<b> </b>Dodge<b> </b>Viper<b> </b>SRT<b> </b>10和雪佛兰克尔维特<b> </b>Chevrolet<b> </b>Corvette<b> </b>Z06无疑是最具代表...<b> </b>实际上

 </ul>………<ul class=l15></ul>……</body>… </html>

  我们可以摘取一个代码片断来分析:

  <ul class=l15><a href="http://tech.sina.com.cn/o/62874.shtml

  "target=_blank> <font class=f15>背景资料:先进的攀岩工具SRT</font></a><font color=#333333><i>2001/04/13 :56</i></font><br>

  ...最大问题,这次中外联合科考队将使用目前世界上最先进的攀岩工具SRT。<b> </b>SRT包括上升<b> </b>下降手柄等一系列工具组成…

  </ul>

  上面是一个完整的知识单元,特征很明显:由一个<ul class=l15>…</ul>组成。其中我们需要的元数据单元的具体体现为:

  新闻的超链:“http://tech.sina.com.cn/o/62874.shtml

  新闻的标题:“背景资料:先进的攀岩工具SRT”

  新闻的时间或出处:“2001/04/13 15:56”

  新闻的文摘:“...最大问题,这次中外联合科考队将使用目前世界上最先进的攀岩工具SRT。SRT包括上升,下降手柄等一系列工具组成…”

  而在网页里正好有若干由标记<ul class=l15>…</ul>构成的单元,这里面正好含有我们所需要的完整的元数据的内容,因此此处就可以利用正则表达式来巧妙地解析出我们所需要的元数据。

  根据上面网页源码的分析,我们每次只要取出<ul class=l15>…</ul>里的四个字段就可以组成一个完整的元数据。正则表达式中的Pattern就对应着要解析的信息单元。

  第一个pattern是:

Pattern p=Pattern.compile("<ul([^>]*)>(.*?)</ul>",Pattern.MULTILINE | Pattern.DOTALL)

  就是能把每个<ul class=l15>…</ul>单元从整个网页里面取出,<ul([^>]*)>(.*?)</ul> ,其中,“<ul”表示匹配单元必须以此开头,“([^>]*)”表示匹配的是除字符“>”以外的任意多字符,然后以”>”结束,这样就能找到相关的单元开始,剩下的就是只取一个单元。“(.*?)”表示任意多字符,“</ul>”表示以此标识结束。这样就很简单的匹配到一个个<ul class=l15>…</ul>单元。“Pattern.MULTILINE”表示可以多行匹配,“Pattern.DOTALL”表示对大小写不敏感。

  第二个pattern就是解析出每个单元里面我们所需要的元数据的字段。即新闻的超链等字段。

Pattern p1 = Pattern.compile("<a href=\"([^\"]*)\".*<font class=[^>]*>(.*)</font></a>.*<font color=[^>]*><i>(.*)</i></font><br>(.*).*", Pattern.MULTILINE | Pattern.DOTALL)

  (1)“<a href="http://tech.sina.com.cn/o/62874.shtml" target=_blank>”用<a href=\"([^\"]*)\" 来匹配,([^\"]*)就是我们所需要的超链。

  (2)“<font class=f15>背景资料:先进的攀岩工具SRT</font>就是用.*<font class=[^>]*>(.*)</font>来匹配,“.*”主要匹配<font class=f15>前面的空格等不可显字符,“<font class=[^>]*>”来匹配<font class=f15>,(.*)就是我们所需要的标题。

  (3)“</a><font color=#333333><i>2001/04/13 15:56</i></font>”就时用</a>.*<font color=[^>]*><i>(.*)</i></font>来匹配,原理同上,(.*)就是我们所需要的新闻出处。

  (4)“<br>...最大问题,这次中外联合科…工具SRT。<b> </b>SRT包括上升<b> </b>下降手柄等一系列工具组成,…”就是用<br>(.*).*来匹配,原理同上,(.*)就是我们所需要的新闻文摘。

6信息代理服务

  信息代理服务主要根据用户的需求来对相关的信息集合或知识集合以个性化的方式来进行推送服务,所以也可以叫信息推送服务。它是个性化服务中一个最需要人性化处理的部分,目前的推送主要有四种方式:基于频道的推送、基于邮件的推送、基于网页的推送、专用式推送。

  网页推送是比较常见的一种推送方式,它是用户每次登陆网站后,预留宿主页面里都会有用户上次定制主题的信息,供用户使用。邮件推送是推送服务最成功的也是最普及的一种的服务方式,基于邮件的推送方式,其主要难点在于实现一个基于Web的EMAIL发送系统。Internet上的邮件大都采用SMTP(Simple Mail Transfer Protocol)协议进行传输,许多高级语言如VC++,Java等等都提供了实现SMTP的MAPI接口,编程人员可以在此基础之上,实现自已的EMAIL网关。方便快捷。[5]

  个性化新闻定制系统的信息代理服务模块,直接体现了个性化服务的理念。它暂时采用了基于邮件的推送方式和基于网页的推送两种方式,预留了短信推送的接口。其中,网页推送是当用户每次登陆网站后,预留宿主网页的页面里都有用户上次定制的新闻主题,这样用户就可以在线浏览到系统给用户进行处理整合后的新闻。而系统的邮件推送则是利用第三方的API,实现了自己的邮件网关。信息传递方式要由用户来进行选择。一般系统会提供几种方式供用户选择,如果用户没有进行选择,则由系统默认的方式将信息传递给用户。

  基于网页的推送实现方式较简单。用户登录网站后,系统会根据用户定制内容自动显示经处理过的已抓获的新闻的列表。

  基于邮件的推送,系统在构建自己的邮件发送类时也制定了邮件发送策略,也就是根据用户定制的邮件发送策略和邮件内容形式,选择性地从邮件列表中选择邮件地址,发送邮件。

  为了能实现定期的发送邮件,后台须具备定期发送邮件的功能。至少有三种方法可以实现这样的功能:使用数据库服务器的触发器功能;用Java语言编写单独的发送邮件的线程类;使用Windows的计划任务。但综合起来看,只有第二种方法最灵活,并且能够保持系统的跨平台性,所以本系统采用自己编写的专用的线程类来负责定时发送邮件。

  系统可设置邮件发送的间隔时间,或一天一次,或两天一次,或半周一次,或一周一次,或两周一次,或一个月一次等,系统发送会根据上面的时间统一在每天的凌晨0点统一发送。

  系统还可以设置每次推送最多发送的新闻的条数。比如,设置为10条,则系统会将尚没有发送过的最新的10条新闻EMAIL给用户。新闻的格式都是html格式的,内容包括相关新闻的标题、日期、文摘和超链,这样用户可以选择是否需要进一步去浏览新闻全文。当没有相关新闻时,也发一个邮件通知用户。同一用户的不同主题的新闻邮件系统会自动分开,这样用户不会因为不同主题的新闻混在一起而引起不便。

7结束语

  本文描述了个性化定制服务中的三个关键技术:信息采集、信息处理、信息代理服务,并结合在自主开发的新闻定制系统中的三个核心模块中予以实现并加以探讨。系统开发完成,已正式运行,整体情况良好,但也遗留一些未完全处理妥当的问题。在信息采集模块中,系统采用元搜索引擎的模式来获取信息,但是存在对独立搜索引擎过于依赖的问题;在信息处理模块中,系统利用正则表达式来解析网页,方便快捷,不过表达式的编写只是针对某一类网页,所以适用面不够广。上述问题有待进一步的研究和探讨。

 

参考文献:

1)     陈丽群. 个性化服务:高校图书馆服务的新理念. 情报杂志,2003(7)

2)     蔡鸣. 个性化网络服务的技术研究. CHINA DATA COMMUNICATIONS,2003(6)

3)     曹素华. 试论网络环境下的个性化信息服务. 图书馆论坛,23(2)

4)     李勇. 基于Web挖掘的个性化研究. 南京大学博士学位论文,2004

5)     郭家义. 个性化最新资料快报服务系统相关问题研究.现代图书情报技术,2003(3)

6)     Bruce Eckel. Thinking in Java , 2nd edition. http://www.BruceEckel.com,2000

7)     程冲. 基于Java平台的网络信息检索定题服务系统研究报告. 南京农业大学,2004

8) SUN公司. The Java Tutorial. http://java.sun.com/docs/books/tutorial /index.html

作者简介:

黄水清,1964年生,北京大学图书馆学情报学系硕士研究生毕业。南京农业大学信息学院副院长、教授。

程冲,1981年生,南京农业大学信息学院情报学专业硕士研究生。


* 本文系南京农业大学人文社科基金(项目编号SK03018)成果之一


posted on 2006-10-11 12:42  田野的羽毛  阅读(1754)  评论(0编辑  收藏  举报