(计算机软件与理论专业论文)短信搜索引擎中关键技术的研究与实现.pdf_第1页
(计算机软件与理论专业论文)短信搜索引擎中关键技术的研究与实现.pdf_第2页
(计算机软件与理论专业论文)短信搜索引擎中关键技术的研究与实现.pdf_第3页
(计算机软件与理论专业论文)短信搜索引擎中关键技术的研究与实现.pdf_第4页
(计算机软件与理论专业论文)短信搜索引擎中关键技术的研究与实现.pdf_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

意塞业电右堂殛土班窀生坐位i 幺童= 擅譬 摘要 随着移动通信技术以及移动通讯终端设备的发展,数字移动通讯技术被越来越多地 应用到人们的闩常生活之中,在很大程度上改变了人们对信息的获取、加工和传递方 式。从企业的角度看,这一变化形成了新的市场需求,不仅向传统的信息服务方式提出 了新的挑战,也给企业带来了新的发展机遇。利用短信息技术在信息沟通方面的独特优 势,向客户提供创新的移动服务,将是企业面对机遇和挑战,结合实际情况做出的最佳 选择。 本文首先提出了短信增值业务平台系统模型,解决了许多企业在构建自己的短信服 务渠道的时候,将面临的同时接入多个移动运营商而现有的多个业务系统都需要使用短 信服务的问题;然后具体介绍了短信增值业务平台的业务流程,其中包括对查询和发布 这两个核心功能的业务流程介绍;接着对于该引擎中的各个业务模块和内存管理进行了 详细的描述,并提出了数据流处理技术o t l 。 对于衡量短信搜索引擎性能的两个重要因素中文分词算法和相关度排序,本文 提出了新的算法模型,并且通过对基于双向双字分词的相关度排序算法进行了性能测 试,表明该算法在理论上具有一定的先进性,在实践上具有一定的实用价值。 关键词:短信搜索引擎,数据处理技术,中文分词,相关度排序算法 瓦瘟鲣里友兰亟土班峦生堂僮监窭 地堑 a b s t r a c t a 1 0 n gw i t ht h ef a s td e v e l o p m e n to fm o b i l ec o m m u n i c a t i o na n dm o b i l et e r m i n a ld e v i c e s , d i g i t a lm o b i l ec o m m u n i c a t i o nt e c h n o l o g yi sb e c o m i n gw i d e l yu s e di no u rd a i l yl i f e ,a n dw h a t s m o r e ,i th a sc h a n g e dt h ew a y sh o ww eg e ti n f o r m a t i o n ,p r o c e s si n f o r m a t i o na n dt r a n s f e r i n f o r m a t i o n f r o mt h ep o i n to f v i e wo f e n t e r p r i s e ,an e wk j n do f m a r k e tr e q u i r e m e n th a sc o m ei n t o b e i n gb yt h ec h a n g e t r a d i t i o n a li n f o r m a t i o ns e r v i c em o d ei sf a c e dw i t hc h a l l e n g e ;m e a n w h i l e , t h ec h a n g eh a sb r o u g h td e v e l o p i n go p p o r t u n i t yt oe n t e r p r i s e i tw i l lb et h eb e s tc h o i c ef o re n t e r p r i s e t of a c eo p p o n i l l l i 可a n dc h a l l e n g ea n di n t e g r a t ea c t u a l i t yw h e nw ea r ep r o v i d i n gi n n o v a t i v em o b i l e s e r v i c et oc l i e n tb yg r a s p i n gt h eu n i q u ep r e d o m i n a n c eo fs h o r tm e s s a g et e c h n o l o g yi ni n f o r m a t i o n i n t e r c o m m u n i c a t i o n t h et h e s i sf i r s tp u tf o r w a r dt h em o d e lo fs h o r tm e s s a g ee x t r ao p e r a t i o np l a t f o r m ,w h i c hh a s s o l v e dt h ei s s u et h a te n t e r p r i s ew i l lc o n f r o n tw i t hc o n n e c t i n gt om a n ym o b i l ec o m p a n i e sa tt h e s a m et i m eb u ts h o r tm e s s a g es e r v i c ei sr e q u i r e db ym a n yo p e r a t i o ns y s t e mw h e ne n t e r p r i s ei s b u i l d i n gt h e i ro w ns h o r tm e s s a g es e r v i c ec h a n n e l t h e nt h eo p e r a t i o nf l o wo fs h o r tm e s s a g ee x t r a o p e r a t i o np l a t f o r mi s i n t r o d u c e di nd e t a i l s ,w h e r eq u e r y i n go p e r a t i o nf l o wa n dp u b l i s h i n g o p e r a t i o nf l o wa r ei n c l u d e d i ns u c c e s s i o n ,e a c ho p e r a t i o nm o d u l ea n dm e m o r ym a n a g i n gm o d u l e w i l lb ed e p i c t e d a n d ,o t l ,w h i c hi san e wk i n do fd a t ad e a l i n gt e c h n o l o g y ,w i l lb ed e p i c t e di n t h i sc h a p t e r f o rt h et w ok e yf a c t o r st om e a s u r et h ep e r f o r m a n c eo fs h o r tm e s s a g es e a r c he n g i n e _ 一 c h i n e s es y n c o p a t i n ga r i t h m e t i ca n dr e l e v a n c yc o m p o s i n ga r i t h m e t i c ,t h et h e s i sp u tf o r w a r dan e w a r i t h m e t i cm o d u l ea n dt h ep e r f o r m a n c eo fr e l e v a n c yc o m p o s i n ga r i t h m e t i ci st e s tb a s i n go n b i d i r e c t i o n a ld o u b l es y n c o p a t i o n t h ep e r f o r m a n c et e s ta n da n a l y t i c a lr e s u l th a v ep r o v e dn o to n l y t h a tt h es y s t e mi m p l e m e n t st h er e s e a r c hs c h e m e ,b u ta l s ot h a tt h es y s t e mi si n n o v a t i v ea n d a d v a n c i n gi nt h e o r ya n d v a l u a b l ei np r a c t i c e k e yw o r d s :s h o r tm e s s a g es e a r c he n g i n e ,d a t ad i s p o s i n gt e c h n o l o g y ,c h i n e s e s y n c o p a t i n gt e c h o l o g y ,r e l e v a n c yc o m p o s i n ga r i t h m e t i c i i 南京邮电大学 硕士学位论文摘要 学科、专业: 工学计算机软件与理论 研究方向: 软件技术及其在通信中的应用 作 者:旦竖级研究生 韩璐 指导教师庭塞耋 题目:短信搜索引擎中关键技术的研究与实现 英文题目:t h er e s e a r c ha n dr e a l i z a t i o no fk e yt e c h n o l o g i e si n s h o r tm e s s a g es e a r c he n g i n e 主题词:短信搜索引擎数据处理技术中文分词 相关度排序算法 k e y w o r d s : s h o r tm e s s a g es e a r c he n g i n e d a t ad i s p o s i n gt e c h n o l o g y c h i n e s es y n c o p a t i o nt e c h n o l o g y r e l e v a n c yc o m p o s i n ga r i t h m e t i c 南京邮电大学学位论文独创性声明 v8 5 1 0 4 4 本人声明所呈交的学位论文是我个人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的 地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包 含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了 明确的说明并表示了谢意。 研究生签名挫嗍坠旦侈 南京邮电大学学位论文使用授权声明 南京邮电大学、中国科学技术信息研究所、国家图书馆有权保留 本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其 他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一 致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布 ( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权 南京邮电大学研究生部办理。 碱生豁辞噱师签名 红场瓤嗨矽 直豆豆盔芏煎土虹盈生坐位i 金奎 一 j 【言 引言 课题背景: 无线短信服务( s m s ) 于1 9 9 1 年出现在欧洲的无线领域。无线数字的欧洲标准,就是现在 所说的全球移动通信系统( g s m ) ,一开始它就包括了短信服务。 在北美,无线短信服务( s m s ) 已经在无线数字网络中有了很好的开端,这与诸如 b e l l s o u t hm o b i l i t y ,p r i m e c o 及n e x t e l 等先驱的努力是分不开的。这些无线数字网基于g s m 、 码分多路访i h 3 ( c d m a ) 和时分多路访f n 3 ( t d m a ) 标准。 短消息业务在展近几年以各种各样的面目渗入到公众的曰常生活当中。随着技术的进步 和用户需求的变化,短消息用户群由时尚人群向企业,行业用户扩展。短消息作为一种实 用、方便、廉价的通信手段,越来越多地成为企业行业人士日常工作不可或缺的工具;同 时,短消息应用范围也由通用服务向企业领域扩展。短消息应用不再局限于交互游戏等娱乐 方式,它已经介入到企业办公、银证、交通、教育、社保等领域,已成为企业行业应用密 不可分的一部分。面向企业行业的短消息业务逐渐成为短消息应用的一个重要组成部分, 越来越多的企业开始利用短信平台开展各种短信增值业务如:短信商业信息发布、短信客户 关系管理、短信呼日q 中心、短信防伪、短信移动办公等。 短信搜索引擎的出现,打破了以前用户只能从短信网关接收短信的模式,使用户还可以 将信息通过注册“发布”到短信网关,实现了短信互动的功能。 本课题来源于苏州联创科技的短信增值业务的开发。本人参与了此课题的研究,课题 研究期间,本人完成的主要工作有: ( 1 ) 研究在l i n u x 环境下的数据接入技术,以满足课题的设计需求; ( 2 ) 研究中文分词算法的发展,并从理论上给出一种新的中文分词算法; ( 3 ) 研究相关度排序算法模型,以提高短信搜索引擎的效率; ( 4 ) 实现查询模块和信息发布模块。 本文结构如下:首先在第一章介绍该本主要的研究内容短信搜索引擎中的关键技 术和目前它的发展状况;第二章介绍了短信增值业务平台系统结构和短信搜索引擎的业务流 程。第三章介绍了短信搜索引擎中使用的关键技术。作为衡量短信搜索引擎性能的因素之 一中文分词技术,在第三章中首先分析了现有的中文分词技术,然后在此基础上提出了 一种新的中文分词技术。作为衡量短信搜索引擎性能的因素之二相关度排序算法,在第 l 直立韭直本堂亟:e 班盈生堂盈论苫i i 宣 四章中提出了一种新的相关度排序算法。在第五章中对短信搜索引擎的性能进行t n 试,最 后是总结与展望。 亩裹曲皇盔芏硇班峦生坐位j 佥塞 筮= 童搬述 第一章概述 在中国,短信作为无线数据业务的典型应用一度创造了辉煌,拇指经济在全球独树一 帜。但现在大多数面向移动用户的短信增值服务大多集中在聊天、游戏、娱乐等个人应用 上,并日益面临着服务内容严重同质化、服务产品后续乏力的状况,真正的商务应用、企业 应用很少。随着移动商务时代的到来,业内人士认为短信将迎来个很好的发展契机。 有调查表明,将近6 0 的企业表示期望尝试基于短信或者是基于w a p 这种无线应用, 以此实现信息发布、业务咨询、发布广告、以及预定和接受定单等业务应用。但由于受目前 应用瓶颈和手机终端的限制,w a p 在我们国家的推广一直不是很成功,近四亿手机用户 中,绝大多数的手机用户还不熟悉w a p ,大部分仅仅是语音以及收发短信。庞大的用户群 一旦被点亮,移动商务将首先因为短信而成为暴发户。 1 1 研究内容 本文主要研究短信搜索引擎的一些关键技术和算法模型。短信搜索是目前新兴的一种电 子商务与营销方式,由于短信具有即时、互动和随身的特性以及资费低廉的特点,这种全新 的沟通和服务模式越来越受到企业和用户的欢迎。本文在短信搜索引擎的性能上做了比较深 入的研究,并且进行了性能测试。 1 2 发展状况 在国内,短信搜索引擎正处于发展阶段。亿美软通是首批推出集团短信服务的虚拟运营 商之一,亿美软通的“满意通? ”企业短信中心一次可向1 0 万手机用户群发短信,并可对客户 信息进行智能化统计、设置,还能批量接收用户反馈信息,与用户双向互动。在性能方面, 由于中文自动分词技术的瓶颈问题,使得短信搜索引擎的优化发展缓慢。本文提出的双向双 字分词技术和相关度排序算法在一定程度上优化了短信搜索引擎的性能。 直立蛆虫古堂强土班荭笙堂皿监窿 签三童垣信埋塞i l 墼选进 第二章短信搜索引擎设计 2 1 增值业务平台系统结构 随着市场竞争同益激烈,越来越多的电信运营商提供短信服务,而各家运营商提供的接 入方式均不相同,这就增加了服务提供商的接入难度;迅速更新的业务也对增值业务平台提 出了更高的灵活性要求。短信增值业务平台的推出,使以上问题迎刃而解。下图为短信增值 业务平台系统结构图: 图2 1 短信增值业务平台系统结构图 由于短信接入号资源的有限,很多想提供短信服务的服务商将越来越难以获得短信接入 号:企业如果要提供短信服务功能,由于原有o a 等系统早已成熟,在对其进行改造中需要 一套成熟的a p i 。根据此需求,短信增值业务平台开发了i c p 接入系统,该系统提供一整套 完善的a p i 套件,简化了在此基础上的接入以及二次开发。同时i c p 接入管理系统对连接 在其上的服务提供商连接进行监控管理。 壶壶韭盟友主题主班基生堂焦逾塞簋三室缒篮提盎i i 墼遨盐 2 2 短信搜索引擎设计原则 1 短信格式接口模块与c m p p 通信代理接口模块之间使用消息队列进行通信。对消息 队列的管理和参数的设置( 如对同一队列操作的互斥、队列个数的设置等) 都使用统一队列 内核类接口,以方便短信格式接口模块对消息队列的使用。另外通过消息队列通信,也可以 为今后增加的其他业务提供良好的扩展性。 2 短信中心数据库庞大,采用多线程处理技术及并行计算和共享内存技术以提高系统 运行效率和资源利用率。 3 为保证不丢失数据包,程序使用缓存机制。 4 。对线程进行管理,使线程可靠运行。 5 将短信格式接口、c m p p 通信代理接口、数据通用接口等模块分离,以保证短信中心 的共用性和扩展性。 2 3 业务流程 短信搜索引擎业务流程包括以下几个部分:业务定制、业务退定、短信查询、短信发布 以及数据处理流程。下面将对每个流程做详细的介绍。 2 3 1 业务定制流程 手机用户必须通过定制业务才 能获得相应的业务服务,业务定制 流程如图2 - 2 所示: 图2 - 2 手机短信业务定制流程 直瘟监宝左堂亟土班篮生堂焦i 盒塞 箍三童短篮擅塞i 】堑邀过 2 3 2 业务退定流程 当用户不再需要进行信息查询或业务发布时,可以进行业务退定。流程如下 2 3 3 短信查询流程 短信增值业务平台提 供了很多业务,例如二手 房市场、学校信息等业 务。短信查询流程如图2 4 所示: 图2 3 手机短信业务退定流程 图2 4 短信查询流程 直立邮电盍堂亟皿豇生堂位:i 幺窑 筮三童短值控塞i 鳖途让 2 3 4 短信发布流程 短信搜索引擎提供了短信互动的功能,手机用户不仅可以进行信息查询,还可以将自己 编写的信息发布到短信中心。短信发布流程如图2 5 所示: 2 3 5 数据处理流程 图2 5 短信发布流程 短信增值业务平台还是一个短消息的路由中心,所有在短信增值业务平台注册的服务所 要接收的手机短消息和要发送的短消息,都要在短信增值业务平台中路由并记录。 直立邙虫盔坐亟班五生堂撞j 金莲箍三重短信搜塞i i 笙弦进 图2 6 数据处理流程 2 。4 短信搜索引擎中主要模块的设计 2 4 1 服务器接口模块 短信搜索引擎首先从短信中心接收各种各样的数据,然后将这些短信数据存入本地数据 库。因此必须有一个服务器接口,并且与服务器通信,获得想要的数据,这就是服务器接1 :3 模块。下面对服务器接口模块中的关键的接口函数进行介绍: 1 i n l i n eb o o lb e c o n n e c t e d ( ) r e t u r nt h is 一 mb c o n n e c t e d : b e c 。n n e c t e d 函数是和服务器的s o c k e t 连接,返回值表示s o c k e t 是否已经连接到短信 网关。 2 i n tc o n n e c t ( c o n s ts t r i n g & s t r l p a d d r ,c o n s ti n t i i p p o r t ) c o n n e c t 函数根据服务器的i p 地址、端口号与服务器连接。该函数以t c p i p 协议使用 s o c k e t 连接到服务端。只有在连通服务器的情况下,才能成功的接收短信数据。下面对返 回值进行说明: r 直立邮虫盍生亟班冠生堂位监塞 嫠三室短值控蠹量f 鏊监让 返回值: o 连接成功返回套接字 - i l 地址为空 一1 2 端口为0 1 创建套接字失败 一2 连接服务器失败 3 v o i dd i s c o n n e c t0 d i s c o n n e c t 函数是断开与服务端的s o c k e t 连接的接口函数: 4 i n ts e n d ( c o n s ts t r i n g & s t r b u f f ,i n ti s e l t i m e = 1 ) s e n d 函数是往套接口发送数据,返回本次发送的长度,未发完的数据保存在 ms t r h a l f s e n d m s g 中,若发送失败则返回值 f l a g r e c v ( s t r r e c v ,i s e l t i m e ,i m a x l e n ,0 ) : r e c v 函数是从套接口中读取数据,阻塞时间为i s e l t i m e ,最大读取长度为i m a x l e n , 读取成功则返回接收到的长度,超时或中断则返回0 ,失败返回值 f l a g r e c v ( s t r r e e v ,i s e l t i m e ,i m a x l e n ,m s g _ p e e k ) ; 、 r e c v p e e k 函数是查看套接口中的数据,阻塞时间为i s e l t i m e ,最大读取长度为 i m a x l e n ,读取成功返回接收到的长度,超时或中断则返回0 ,失败返回值 r _ r c v _ m s g = n e wc l a s so t l s t r e a m ( 1 ,一次读数据表记录的个数 b e g i n ? ”o p e n :c u rf o r ”c u r 为数据流指针 ”s e l e c ti s s e q u e n c e ,f l s s r c a d d r ,f l s s p a d d r , s t r s m s t x t ,i s s m s t y p e , i s s r v t y p e “ r r o mm s gr e vt n ”w h e r er f l a g = o :” ”e n d :”,r e f e r e n c e dc u r s o rs e l e c ts t a t e m e n t ( t h is 一 p d b ) ,c o n n e c to b j e c t ”:c u r ”r e f e r e n c e dc u r s o rp l a c e h o l d e rn a 【n e ) ; r _ r c v _ m s g 流被看作一个对象指针,实现了s e l e c t 操作,通过对r r e v _ m s g 流的操 作,我们可以将读取的各个字段写入一个名为n o d e 的结点: ( ( t h i s 一 r r c v _ m s g ) ) n o d e 一 m s g m _ i s s e q u e n c e : 该语句是赋值给n o d e 结点的消息的mi s s e q u e n c e 属性 ( $ ( t h i s 一 r r c v _ m s g ) ) n o d e 一 m s g m _ f l s s r c a d d r : 该语句是赋值给m _ f l s s r c a d d r ,即用户手机号 ( ( t h i s 一 r r c v _ m s g ) ) n o d e 一 m s g m _ f l s s p a d d r : 该语句是赋值给f l s s p h d d r ,即发送目标的手机号 1 0 豆豆韭旦盔兰耍土盟盔生芏篮监l 蓥三童缒值擅盎i i 肇丝让 ( t h i s 一 r r c v m s g ) ) n o d e 一 m s g ms t r s m s t x t : 该语句是赋值给ms t r s m s t x t ,即短信的内容 ( 木( t h is 一 rr c vm s g ) ) n o d e 一 m s g i s s m s t y p e : 该语句是赋值给i s s m s t y p e ,即短信的类型 2 4 3 短信处理模块 短信接收模块,对获取的短信作进一步的处理。短信处理模块中包括内存处理模块、 h a s h 模块、生产消费者模块、数据流处理模块等。下面对这几个模块分别进行介绍。 1 内存处理模块 短信搜索引擎将内存看作一个巨大的内存池,内存池由各种不同类型的结点组成。在短 信处理的过程中,与池中结点通信时,执行的是互斥操作。互斥锁的作用是保护关键代码。 以下是互斥锁的声明: p t h r e a d _ m u t e x t * p m u t e x l o c k : 互斥锁的创建和初始化如下: t h i s 一 p m u t e x l o c k = n e wp t h r e a d _ m u t e xt : a s s e r t ( t h i s 一 p m u t e x l o c k ) : p t h r e a d _ m u t e x _ i n it ( t h is 一 p m u t e x _ l o e k ,n u l l ) : 通过灵活使用互斥锁,可以有效的保护了关键代码不会被同时访问,对于内存池的操作 分为取结点和还结点操作,这两种操作都是基于模板的,实现了代码复用的目的。 首先介绍一下取结点的操作过程: t4g e t o n e n o d e 0 ( t 牢p t e m p : w h i l e ( 1 ) p t h r e a d m u t e x l o o k ( p m u t e x l o c k ) : i f ( n u l l = = p h d r ) p t h r e a f l _ m u t e x u n l o c k ( p m u t e x l o c k ) : u s l e e p ( 6 0 ) : i i 一 。 : 童 解 蜘 一 一 一 一 一 一一 h 叭 一 呱 腋觌 咖删 伽 一 一一 一一 一一一 一 一 直立鲣生左芏熊主皿五生芏丝监蛮疆三茔堑蜃毽露量i 至丝址 h a s h t a b l e * t e m p _ h a s h = n u l l : p h a s h m a n g e tc u rh a s h ( & t e m p _ h a s h ) ; if ( n u l l t e m p h a s h ) r e t u r n0 : t h is 一 m s g h a s h = t e m p h a s h : r e t u r nl i ) h a s h 表中的词库是根据用户发布的短信信息进行更新的,而且是处于不断变化之中, 因此必须借助一个临时h a s h 来辅助操作。 3 生产消费者模块 短信搜索引擎的设计过程中非常注重代码的重用性和扩展性。软件复用是在软件开发中 避免重复劳动的解决方案。通过软件复用,可以提高软件开发的效率和质量。近十几年来, 面向对象技术出现并逐步成为主流技术,为软件复用提供了基本的技术支持。软件复用研究 重新成为热点,被视为解决软件危机,提高软件生产效率和质量的现实可行的途径。短信搜 索引擎中采用了生产消费者模板,很多功能都继承了该模板,提高了代码的效率。 这里介绍一下短信搜索引擎中的生产消费者模板框架。生产消费者模型分为两种类型: 第一类型为生产或消费;第二类型为消费后再生产。 对于第一类型,我们可以记作c p o r c ,它是一个模板,t e m p l a t e ,适用于任 何s t r u c t 类型。首先从内存池中取一个所需类型的结点,生产该结点,然后插入队列。可 以看到,虚函数r e a l p r o d u c e ( p n o d e ) 在生产模型中起着非常关键的作用,给程序的复用和 扩展带来了很多的方便。 生产模型核心部分如下: w h il e ( ( p n o d e = ( t h i s 一 p m e m p 0 0 1 ) 一 g e t o n e n o d e0 ) ) i f ( r e a l p r o d u c e ( p n o d e ) p m e m p 0 0 1 ) 一 r e t u r n o n e n o d e ( p n o d e ) : b r e a k : ( t h i s 一 p q u e u e ) 一 w r i t en o d e ( p n o d e ) : 直立韭出左堂亟虹豇生坐位监窑簋三童纽篮接塞i i 墼篮让 ) 下面介绍一下消费模型核心思想: w h il e ( ( t h is 一 p q u e u e ) 一 r e a d n o d e ( p n o d e ) ) i f ( t e a c u s t o m ( p n e d e ) p q u e u e ) 一 w r i t e _ n o d e ( p n o d e ) ; b r e a k : ) i f ( e n d c u s t o m e r f l a g ) ( t h is 一 p m e m p 0 0 1 ) 一 r e t u r n o n e n o d e ( p n o d e ) : ) ) 消费者模型主要思想是从队列中读取一个特定类型的结点,然后消费该结点,即 r e a l c u s t o m ( p n o d e ) ,最后归还给内存缓冲池。 对于第二类型,记作c c t h e n p ,它也是一个模板,t e m p l a t e ,s r c _ t 代表源结点类型,d s t _ t 代表目标结点类型。它适用于消费队列中的一个 s r c t 类型的源结点,然后生产出一个d s tt 类型的目标结点,并插入目标队列。下面是该 模型的核心部分: s r c _ t * p s r c = n u l l : d s l t * p d s t = n u l l : w h il e ( ( t his 一 p s r c _ q u e u e ) 一 r e a d _ n o d e ( p s r c ) ) 在这里分为两种情况,对于源结点类型和目标结点类型是否相同必须做出相应的处理。 s a m e n o d e f l a g 为是否为同种类型结点的标志。对于不是相同类型结点的处理如下: i f ( ! ( t h i s - s a m e n o d e f l a g ) ) p d s t = ( t h is 一 p _ d s t _ m e m p 0 0 1 ) 一 g e t o n e n o d e0 : i f ( n u l l := p d s t ) 1 4 ( t h is 一 p d s t q u e u e ) 一 w r i t e n o d e ( p d s t ) : ( t h is 一 p s r c _ m e m p 0 0 1 ) 一 r e t u r n o n e n o d e ( p s r c ) 对于源结点和目标结点是相同类型的情况,处理如下 i f ( r e a l p r o d u c e ( p s r c ,n u l l ) pd s t q u e u e ) 一 w r i t e n o d e ( ( d s t _ t * ) p s r c ) : ) 有了生产消费者模型,该项目的实现便容易得多,即实现了软件复用的目的。 4 数据流处理模块 一、数据流处理技术 在w i n d o w s 平台,数据库的访问手段比较丰富,如a d o 或者o d b c 等。然而在 一 一 一 一 一一 一 一 一 一一一 强塞鲤鱼五生绣主盟宜生芏篮j 佥毫 蓥三室缝疽控室量i 墼邀盐 u n i x l i n u x 平台上访问数据就不是那么容易了。 如果我们使用j a v a 作为开发语言,那么j d b e 可以提供数据访问的途径。但是如果用 c c + + 就没这么简单了,你必须使用最原始的c c + + 调用接口来访问数据库。 目前大型的数据库,如o r a c l e 或者d b 2 都提供了c c + + 的调用接口,但是作为开发人 员使用这些接口是件很头痛的事情,你必须要熟记每一个a p i ,然而o t l 给我们带来了一个 新的数据库访问方式。o t l 是o r a c l e ,o d b ca n dd b 2 一c l it e m p l a t el i b r a r y 的缩写,是一 个c + + 操作关系数据库的模板库。 使用o t l 访问数据库,优点在于: l 跨平台。 2 运行效率高,与c 语言直接调用a p i ,相当快。 3 开发效率高,起码比a d o n e t 使用起来更简单,更简洁。 4 部署容易,不需要a d o 组件,不需要n e tf r a m e w o r k 等。 但是也有一些缺点: 1 只有c + + 才可以使用它。 2 说明以及范例不足。 二、使用数据流交互 使用数据流技术从数据库中读取数据,可以将数据流操作嵌入到代码中,就像函数一样 方便。在这里,以数据库数据读取流为例,说明数据流的处理机制。 我们将对数据库的任何一个操作,比如s e l e c t ,i n s e r t 看作一个对象,同样拥有构造 和析构两种操作。下面进行应用举例: v o i ds e tr e a d s t r e a m0 ( t h i s 一 r _ r c v _ m s g = n e wc l a s so t l s t r e a m ( 1 ,一次读数据表记录的个数 ”b e g i n ” ”o p e n :c u rf o r ”c u r 为数据流指针 ”s e l e c ti s s e q u e n c e , f l s s r c a d d r ,f l s s p a d d r ,s t r s m s t x t , i s s m s t y p e ,i s s r v t y p e ” ”f r o mm s g r e vt ” ”w h e r er f l a g = 0 :” ”e n d :” 直立鲤电盔生亟主皿荭生生位盐塞 篮三童垣值控塞i l 鐾丝进 ( t h i s 一 p d b ) , ”:c u r ” ) : t e t u r r l : ) 可以看到,对o r a c l e 数据库的操作就像平时写函数一样方便。 2 4 4 短信发送模块 短信搜索引擎通过短消息发送模块发送给用户,使用的关键技术也是o t l 数据流技术。 通过短消息发送模块,用户将获得精确度非常高的信息。 面显唑电丕芏亘l ! 圭堑 基圭堂焦监塞 簋三室堑擅擅塞i 壁生羞壁监垄曲虹立 3 1 概述 第三章短信搜索引擎中关键技术的研究 自然语言处理是基于知识的工程,要想使计算机具有人的语言能力,就必须把人的语言 知识存储在计算机中,并把人理解和生成语言的过程形式化。汉语侧自动切分是计算机中文 信息的第一步,电是计算机科学界、语言文字学界以及信息管理学界所面 临的挑战性难题, 这一“瓶颈”的解谀是计算机自然语言理解、人工智能、信息检索以及自动翻译和自动文摘 等领域取得突破的关键。这些问题长期以来一直困扰着这一研究领域的许多专家学者。尽管 汉语词自动切分研究已经取得了可喜韵进展,但是在汉语词的规范、自动分词算法突破、切 分歧异处理、自然语言理解和人工智能等诸多领域还存在着难以克服的障碍,仍需要多个学 科领域的专家学者们通力协作,才能获得新的突破”“。 3 2 中文分词的必要性 汉语的中文信息处理就是要“用计算机对汉语的音、形、义进行处理”= “。我们还知 道,“词是最小的能够独立活动的有意义的语言成分”。计算机的所有语言知识都来自机 器词典( 给出词的各项信息) 、句法规则( 以词类的备种组合方式来描述词的聚台现象) 以 及有关词和句子的语义、词境、语用知识库。然而,汉语文本中词与词之间却没有明确的分 隔标记,而是连续的汉字串。分词体现了汉语与英语的显著的不同。众所周知,英文是以词 为单位的,词和词之间是靠空格隔开,而中文是队字为单位,句子中所有的字连起来,才能 描述一个意思。把中文的汉字序列切分成有意义的词,就是分词,有些人也称为切词4 1 。可 以这样设想汉语自动切词过程的困难:如果把某个英文文本中的所有空格符都去掉。然后让 计算机自动恢复文本中原有的空格符。实际上,这就是汉语词语的识别过程。分词是汉语自 然语言处理的第一步。目前,汉语自然语言处理的应用系统处理对象中大规模语料越来越 多,网此分词的速度和分词算法的易实现性变得相当关键。 3 3 中文分词的系统框架 不管是什么分词技术,都会依据中文分词的基本框架,然后在此框架上有所改进。中文 不管是什么分词技术,都会依据中文分词的基本框架,然后在此框架上有所改进。中文 直立坚立左堂亟土班宜圭堂焦盐塞 簋三童堑筐趣塞i 【擎主羞壁拉盔益西荭 分词系统框架如图3 1 所示,它清楚的表示了分词系统框架的各个流程: 3 4 现有的中文分词方法 图3 1 中文分词系统框架 现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于自然语言理解的分词 方法和基于统计的分词方法脚。 3 4 1 基于字符串匹配的分词方法 这种方法又叫做机械分词方法 9 【1 们,它是按照一定的策略将待分析的汉字串与一个“充 分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功( 识别出一 个词) 。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长 度优先匹配的情况,可以分为最大( 最长) 匹配和最小( 最短) 匹配;按照是否与词性标注 过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械 分词方法有:正向最大匹配法、逆向最大匹配法、最少切分法。 1 正向最大匹配法 通常简称为m m 法。其基本思想为:设d 为词典,m a x 表示d 中的最大词长,s t r 为待切分 的字串。m m 法是每次从s 打中取长度为m a x 的子串与d 中的词进行匹配。若成功,则该子串 为词,指针后移m a x 个汉字后继续匹配,否则子串逐次减一进行匹配。 2 逆向最大匹配法 通常简称为r m m 法。r m m 法的基本原理与m m 法相同,不同的是分词的扫描方向,它 1 9 虚塞韭虫左芏耍珏宜生堂位迨塞 签三垂筵值缝塞量f 墼宝羞篮基盔趋班窭 是从右至左取子串进行匹配。统计结果表明,单纯使用正向最大匹配的错误率为1 1 6 9 ,单 纯使用逆向最大匹配的错误率为1 2 4 5 ,显然r m m 法在切分的准确率上l l m m 法有很大提 高。 3 最少切分法 最少切分法不同的是,它是使每一句中切出的词数最小。 由于分词是一个智能决策过程,机械分词方法无法解决分词阶段的两大基本问题:歧义 切分问题和未登录词识别问题。实际使用的分词系统都是把机械分词作为一种初分手段,还 需通过利用其它的语言信息来进一步提高切分的准确率。一种方法是改进扫描方式,称为特 征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词 作为断点,可将原字符串分为较小的串再来进行机械分词,从而减少匹配的错误率。另一种 方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注 过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。 对于机械分词方法,可以建立一个一般的模型,形式表示为a s m ( d ,a ,m ) ,即 a u t o m a t i cs e g m e n t a t i o nm o d e l 。其中:d 表示匹配方向,+ l 表示正向,1 表示逆向;8 表示每 次匹配失败后增加减少字串长度( 字符数) ,+ l 为增字,一1 为减字:m 表示最大最小匹配标 志,+ 1 为最大匹配,- 1 为最小匹配。 例如,a s m ( + ,+ ) 就是正向减字最大匹配法( 目 i m m 方法) ,a s m ( - ,一,+ ) 就是逆向减 字最大匹配法( 即r m m 方法) 。对于现代汉语来说,只有m = + 1 是实用的方法。用这种模型 可以对各种方法的复杂度进行比较,假设在词典的匹配过程都使用顺序查找和相同的记首字 索引查找方法,则在不记首字索引查找次数( 最小l o g 汉字总数净1 2 1 4 ) 和词典读入内存 时间的情况下,对于典型的词频分布,减字匹配a s m ( d ,m ) 的复杂度约为1 2 _ 3 次,增字 匹配a s m ( d ,+ ,m ) 的复杂度约为1 0 6 。另外,还可以证明,早期曾流行一时的“切分标志 字串”预处理方法是一个毫无必要的技术,它增加了扫描“切分标志词典”的时空复杂性, 却并没有提高分词精度,因为所谓的切分标志其实都已经隐含在词典之中,是对词典功能的 重复。实际上“切分标志”也没有标记歧义字段的任何信息。因此,在近来的分词系统中, 已经基本上废弃了这种“切分标志”预处理方法。 缺乏自学习的智能性是机械分词法的大弱点,但是这种方式回避了许多难度较大的语 言自身信息的处理,实现简单,所以仍然得到广泛的应用。而且,它与信息检索挂接性强, 因为目前大多数检索系统是基于主题词表、分类表及分类主题一体化词表建立的,两者都是 建立在大量的词表之上,所以也是最容易结合的形式。 2 0 直立虹电盔生强监荭生兰焦迨塞 筮三童缒篮揎塞呈l 墼圭苤毽拉查曲硒盔 3 4 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论