中英文混合字符串切分技术

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:caichengzyokokok
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文对英文字符串、中文字串和中英文混合字符串的切分方法进行研究。首先分析现有的中文、英文切分算法,再提出了一种实用的中英文混合切分算法。对于不同字符串的切分问题进行深入研究,针对不同要求,不同字符串提出不同切分算法和具体实施方法。
  关键词:字符;切分;技术;函数;软件;字符串
  中图分类号:TP391文献标识码:A文章编号:1009-3044(2011)14-3426-03
  Chinese and English Mixed String Segmentation Technique
  YANG Zhen-yu
  (Qingyuan Polytechnic, Qingyuan 511500, China)
  Abstract: This paper text string in English string, mixed string in both Chinese and English segmentation method for research. This paper firstly analyzes the existing Chinese, English segmentation algorithm is proposed, then mixed segmentation practical English and Chinese. The segmentation problem for different string, in-depth study according to different requirements, different string put a different segmentation and concrete implementation method.
  Key words: characters; segmentation; technology; functions; software; string
  隨着计算机在各个领域的广泛应用。从最初的数据处理、信息处理发展到今天的知识处理、图形处理和对语言文字的信息处理。上世纪提出中文信息自动分词处理以来,许多专家和学者在这一领域已经取得了很大的进展。随着信息的多元化和复杂化,基于中文信息分词的算法也得到了不断改进和完善[1]。分词算法在信息检索、信息提取、人机交互、文本挖掘、自动归档等领域都有着广泛的应用,但是在今天经济的飞速发展的中国,中国与世界的紧密联系,信息的形式从单一的汉语发展到中外语言混合的形式来表达,特别是中英文混合使用的情况非常普遍。这就要求新的信息处理系统不仅能够将中文正确切分,还要能够对中英文混合的情况正确切分[2]。本文就英文字符串、中文字串和中英文混合字符串的切分谈谈自己的方法。
  1 英文字符串切分技术
  英文字符串一般是指英文字母、阿拉伯数字、标点符号、运算符、特殊字符等,每个字符只占用一个存储单元[3]。对于这样的的字符串进行切分,方法很多,下面主要从两个方面进行介绍,一是按某一特定字符对字符串进行切分,二是切分指定长度的字符串。
  1.1 按指定字符进行切分
  在对一个字符串进行切分时,通常要求按照某一个特定的字符对字符串进行切分。这种切分的结果是切出来的字符串长度不定。按照要求,采用函数ExtractStrings就可以轻松实现,但要注意切分后的串有足够的存储空间。
  1.1.1 ExtractStrings函数定义
  Function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;[4]
  参数说明:
  1)Separators参数指定一组分割符,所有的子串都是用它们分割的。但是成对的引号内的分割符会被忽略。
  2)WhiteSpace 参数指定每个子串开头被忽略的字符s。
  3)Content 参数就是被分割的“源”串了。
  4)Strings 参数用于接收分割后的各个子串,它的原有内容不会被清空。
  另外,EctractStrings不会把(忽略WhiteSpaces后的)空串加入到Strings中。
  1.1.2 实例验证
  切分字符串:welcom to|...Qingyuan|##Polytechnic|"|# www.qypt.com.cn"
  希望得到下面四个字符串:
  1)welcom to
  2)Qingyuan
  3)Polytechnic
  4)"|# www.qypt.com.cn"
  分析:从给定的字符串可以看出,利用字符“|”作为分割符,指定被忽略为空格、“.”和“#”。具体实现算法如下:
  var
  ASource: PChar;
  AStr: String;
  ACount: Integer;
  begin
  ASource := ’welcom to|...Qingyuan|##Polytechnic|"|# www.qypt.com.cn"’;
  ACount :=ExtractStrings([’|’],[’ ’, ’#’, ’.’], ASource,ListBox1.Items);
  end;
  1.2 切分指定长度的字符串
  对于从任一字符串中截取指定位置、指定长度字符串的方法很多,通常利用LeftStr、MidStr、RightStr等函数实现切分。函数定义如下:
  1.2.1 LeftStr函数定义
  定义格式:function LeftStr(S:string;Count:integer):string;[5]
  函数表示获取字符串S左边起Count个字符
  1.2.2 MidStr函数定义
  定义格式:function MidStr(S:String; Index, Count: Integer): String;
  函数表示从S字符串的Index处开始,截取Count个字符的串返回。
  1.2.3 RightStr函数定义
  定义格式:function RightStr (S:string;Count:integer):string;
  函数表示获取字符串S右边起Count个字符。
  1.2.4 实例验证
  切分字符串:welcom to|... Qingyuan|##Polytechnic|"|# www.qypt.com.cn"
  希望得到下面四个字符串:
  1)welcom to
  2)Qingyuan
  3)Polytechnic
  4)"|# www.qypt.com.cn"
  分析:从上面的要求来看,采用LeftStr、MidStr、RightStr三个函数来实现,具体实现算法如下:
  var
  dstr,str1,str2,str3,str4:string;
  begin
  Dstr :=’ welcom to|... Qingyuan|##Polytechnic|"|# www.qypt.com.cn"’;
  Str1:=LeftStr(Dstr, 9);
  Str2:=MidStr(Dstr, 15, 8);
  Str3:=MidStr(Dstr, 26, 11);
  Str4:=RightStr(Dstr, 20);
  end;
  2 中文字串切分技术
  中文字通常指汉字,以及中文的标点符号等,在计算机中每个字占用两个存储单元,因此,在切分全中文串时要特别注意。在对中文字串进行切分时,要确保切割后的字不被分成两半产生乱码[6]。对于全中文的字串切分,同样可以采用字符串的切分方法,只是特别注意切分后的字串长度是偶数。要注意的是copy函数与LeftStr、MidStr、RightStr函数在进行中文字串切分时长度的要求是不相同的。Copy函数是按照字占有的存储单元进行计算长度,而LeftStr、MidStr、RightStr函数是按照字符或字的个数为长度计算长度的。下面我们先来看一下copy函数的定义。
  2.1 Copy函数定义
  定义格式: functionCopy(S; Index, Count: Integer): string;[7]
  函数表示从S字符串的Index处开始,截取Count个字符的串返回。
  2.2 切分实例
  切分字串:中华人民共和国中央人民政府
  希望得到下面四个字符串:
  1)中华
  2)人民共和国
  3)中央人民
  4)政府
  分析:要得到相应的结果,采用copy、LeftStr、MidStr、RightStr四个函数都可以实现,具体实现算法如下:
  var
  dstr,str1,str2,str3,str4:string;
  begin
  Dstr :=’中华人民共和国中央人民政府’;
  Str1:=LeftStr(Dstr,2);
  Str2:=MidStr(Dstr,3,5);
  Str3:=copy(Dstr,15,8);
  Str4:=RightStr(Dstr,2);
  end;
  从各个函数的应用来看,不难看出,LeftStr、MidStr、RightStr切分的长度是字的个数,而实际上所占用的存储单元为该长度的2倍,如“LeftStr(Dstr,2)”是截取字串Dstr的最左边两个汉字,但是两个汉字所占用的存储单元为4个字节。而“copy(Dstr,15,8)”则是以实际所占用的存储单元作为起始切分点和切分长度。
  3 中英文混合字符串切分方法
  对于全中文或全英文的信息串,已经能够利用多种方法进行很好的切分。但在实际的应用中,信息的形式不再是单一的汉语或英文,发展今天中英文混合使用的情况非常普遍。这就要求新的信息处理系统不仅能够将中文正确切分,还要能够对中英文混合的情况正确切分。特别是从串中切出指定长度的子串,已经在信息检索、信息提取、人机交互、文本挖掘、自动归档等领域广泛使用。下面就如何对中英文混合串进行切分提出一种快速的算法。
  对于中英文混排的字符串,在利用上述的copy、LeftStr、MidStr、RightStr四个函数进行切分时,会产生以下几个方面的问题:
  1)利用LeftStr、MidStr、RightStr函数切分时,切分后的中英文混合子串不一定与要求的串长度一致。
  2)利用copy函数或其他类似的函数进行切分时,由于指定了子串的长度,而切分子串的位置可能会是汉字的前一个存储单元或后一个存储单元,从理论上来说即有可能将一个汉字切成两半,产生乱码。但是copy函数会自动判断最后一个存储单元是字符还是半个汉字的存储单元,如果是半个汉字的存储单元则丢弃,以保证数据的完整性,从而不会产生乱码。
  通过实例来验证存在的问题。有下例三段文字要求切分出前12个存储单元的内容。
  Activate:激活(来源于active活泼的,-ate表使役的动词后缀)。
  动词augment(增加)也来源于"augere"。
  警察使用homicide来表示杀人事件,因为homicide有“杀人”的意思。
  分别用copy、LeftStr函数,可以得出语句:
  Var
  Str1,str2,str3:string;
  Ls1,Ls2,Ls3:string;
  Begin
  Str1:=’Activate:激活(來源于active活泼的,-ate表使役的动词后缀)。’;
  Str2:=’动词augment(增加)也来源于"augere"。’;
  Str3:=’警察使用homicide来表示杀人事件,因为homicide有“杀人”的意思。’;
  Ls1:=Copy(str1,1,12);
  Ls2:=Copy(str2,1,12);
  Ls3:=Copy(str3,1,12);
  End;
  结果:
  Ls1为“Activate:激”
  Ls2为“动词augment”
  Ls3为“警察使用homi”
  其中Ls1的长度为11,Ls2的长度为11,Ls3的长度为12。
  如果使用LeftStr有:
  Ls1:= LeftStr (str1,12);
  Ls2:= LeftStr (str2,12);
  Ls3:= LeftStr (str3,12);
  结果:
  Ls1为“Activate:激活(”
  Ls2为“动词augment(增加”
  Ls3为“警察使用homicide”
  其中Ls1的长度为15,Ls2的长度为17,Ls3的长度为16。
  因此,在需要切取指定长度的字或字符串时,显然copy函数比较接近需要。
  4 结束语
  中英文混合字符串切分技术现在已经得到普遍应用,对于不同的切分要求,根据实现情况采用合理的切分方法,特别是对串的词的识别、切分仍然存在很多问题,需要去探索、研究和解决。本文介绍只在中英文混合字符串切分技术方面抛砖引玉,提供借鉴。
  参考文献:
  [1] 李钊.中英文混排文字识别系统的设计与实现[D].成都:电子科技大学,2007.
  [2] 安艳辉.中英文混排字符切分方法研究[D].保定:河北大学,2004.
  [3] 陈臻刚,丁晓青,刘长松,等.文档识别中误切分字符拒识问题的研究[J].计算机工程与应用,2002(17).
  [4] 许洁舟,林伟鹏,林盛雄,等.Delphi7程序设计与实例[M].北京:冶金工业出版社,2003:526-528.
  [5] 邓一贵.基于字符频率及分治法的字符串模式匹配算法[J].计算机科学,2008(6):168-170.
  [6] 王晓鹏.验证码识别系统的研究及实现 [D].广州:华南理工大学,2010.
  [7] 刘瑞新.Delphi 程序设计教程[M].2版.北京:机械工业出版社,2010:35-46.
其他文献
显然,在该表"姓名"一列中存在着重复数据.那么我们怎样将这些重复数据以及该数据的左右邻数据都提取出来呢?下面的操作就可以完成这个任务.  ……
期刊
"以人为本,以学生的发展为根本"是英语新课程标准把情感态度列为英语课程的重要内容,它体现了的人文主义观念。人与人之间只有在建立良好的情感态度的基础上才能进行正常的交流
前几天,领导发来一份单位员工考核成绩表,如图1所示。领导要求筛选出指定部门的考核成绩不低于600分且前三个考核小项成绩中至少有一项成绩不低于90分或后两个考核小项中至少有一项不低于160分的员工详细考核成绩册。我的天啊,仅仅是筛选要求就这么一大堆,要是肺活量稍微小一点的话,恐怕一口气念完这要求也不太容易,更不要说快速准确地统计操作了,更何况这份表格中至少有上千名员工呢!幸好,领导发来的是一份Exc
期刊
中学语文教学为素质教育为目的,不为应试教育服务,但语文教学的现状让我们重新审视语文教育的功能和目的,深化中学语文教学改革.素质教育要使学生学会做人、学会求知、学会劳动、
静脉采血是临床最常见的护理操作之一。真空采血具有安全、全封闭及有效避免交叉感染等优点而被临床广泛使用。针对幼儿自身的特殊性,无配合意识,采血难度较成人大,技术要求
文章分析了目前的交通信息系统的建模方法及其存在的问题,结合GML3.1、GML模式和线性参考方法,研究了使用GML对公共交通数据模型的几何和拓扑关系建模的方法。以城市公共交通模型为开发实例,给出了基于GML的郑州市公共交通的建模方案和具体实现方法,并使用XSLT技术将最终结果可视化。
目的探讨宫外孕患者的临床护理措施。方法回顾分析91例患者的临床资料。结果经治疗及精心护理,本组患者全部治愈。结论术后密切观察病情变化,预防和合理处理并发症,是患者术
最近,单位来了新领导,大家都很高兴,可是有一件事愁坏了办公室的同事,来找我帮忙。原来新领导的名字中的wei字(左边是一个“日”字,右边是一个“韦”字)他们在打材料时怎么也打不出
随着我国社会经济不断发展和科技水平不断提高,社会对科技人才的需求不断增多,对人才有着知识和技能两方面要求。学生只有紧跟时代脚步,才能为以后的参加工作打好基础。学生
我们的电脑使用一段时间后,难免会出现这样或那样的问题:比如说软件频繁安装与卸载,会产生大量系统垃圾,直接影响系统运行,使系统运行变慢;有时软件损坏后造成不能正常卸载,而在重新安装过程中又提示软件已存在,而不能正常安装;还有就是杀毒后,在启动过程中会弹出“××加载错误”的提示;再有就是不论是软件还是硬件,厂商都会适时发布更新。