文本比较算法分析

【摘要】基于文本比较算法,以算法的比较为切入点,通过比较算法的时间复杂度,找出适应文本的算法。实验结果表明,Nakatsu算法在长文本和相似度高的文本中效率更高,更易使用。

【关键词】文本比较算法;相似度;文本

1.引言

随着Internet的快速发展,文本比较作为基础被运用到许多方面,如:电脑自动阅卷已经成为当今教育界考试批卷的主流,基因突变序列的快速找出也让我们习以为常,利用相似度[1]对网页文本信息的抽取,论文等等,基于文本比较的技术在我们的生活中随处可见,所以本文开始着手研究文本比较算法的实质,针对不同的算法找出其最适应的条件,通过比较它们各自的优缺点,再结合实际进行分析,从而得出各自最具有代表性的文本特征。

2.算法概述

2.1 基于编距的LD算法

该算法是基于编辑距离的,所谓的编辑距离就是从文本A到文本B的变化步骤数,用LD(A,B)表示,很显然如果LD(A,B)=0表示文本A和B完全相同。这里需要定义Len(A)=M,Len(B)=N分别表示文本的长度。

建立M+2行N+2列的矩阵,初始化第二行和第二列的数值(令LD(2,2=0),行和列依次递增),遵循规则如下:

对于1≤i≤M,1≤j≤N,有公式

若ai=bj,则LD(i,j)=LD(i-1,j-1)

若ai≠bj,则LD(i,j)=Min(LD(i-1,j-1),LD(i-1,j),LD(i,j-1))+1主要代码如下:

for(int i=0;i<n-1;i++){

for(int j=0;j<m-1;j++){

int temp=0;

if(s1[i]!= s2[j])

temp=1;

else

temp=0; table[j+1][i+1]=Min (table [j][i]+temp,table[j+1][i]+1, table[j][i+1]+1);

}

}

private static int Min(int i,int j, int k) { int[] tempSequence={i,j,k};

int min=i;

for(int n=0;n<3;n++){

if(tempSequence[n]<min){

min=tempSequence[n];

}

}

return min;

}

2.2 LCS(最长公共子串)算法

该算法是基于求文本最长公共子串长度的,用LCS(A,B)表示,很显然如果LD(A,B)=0表示文本A和B完全不相同。

建立M+2行N+2列的矩阵,初始化第二行和第二列的数值(全为0),遵循规则如下:

对于1≤i≤M,1≤j≤N,有公式

若ai=bj,则LCS(i,j)=LCS(i-1,j-1)+1

若ai≠bj,则LCS(i,j)=Max(LCS(i-1,j-1),LCS(i-1,j),LCS(i,j-1))。

2.3 Nakatsu算法

该算法是利用线性空间求出最长公共子序列,用L(A,B)表示。既然是求最长公共子序列,很显然需要构造一个k行m列的LCS(A,B)矩阵,但是矩阵满足条件当i

for(int i=0;i<n-1;i++){

for(int j=0;j<n-1;j++){

T=GetP(i+j-1,L(j_1),L(j))

If T!=Integer.MaxValue

L(j) = T;

If P(j) = Integer.MaxValue && L(j)!=Integer.MaxValue

P(j) = L(j);

If L(j) = Integer.MaxValue

Exit;

If L(_A.Length - i)!=Integer.MaxValue

for(int j=0;j<n-1;j++){

tS.Append(_B(P(j)))

}

}

3.算法比较

基于本文设计的三个算法,本文主要文本长度、文本相似度[3]两方面对文本进行比较,结果如表1所示。

LD算法的核心需要两个for循环,其时间复杂度就是O(MN),该算法中利用的矩阵占用空间,所以空间复杂度也是O(MN),不过如果不需要计算出具体的匹配字符串其空间复杂度可以优化到O(M),若两个字符串都是50000字符,则LD矩阵的大小为50000*50000*≈25G。可见该算法不适合比较文本字符串较长的情况。

LCS算法和LD思想上是一致的,两者的区别在于出发点有些不同。

表1 算法比较结果***

算法 文本特征 时间 空间

LD 短文本 18ms O(mn)

LCS 20ms O(mn)

Nakatsu 22ms O(m(n-p+1))

LD 长文本 50ms O(mn)

LCS 49ms O(mn)

Nakatsu 46ms O(m(n-p+1))

LD 相似度高 56ms O(mn)

LCS 55ms O(mn)

Nakatsu 49ms O(m(n-p+1))

LD 相似度低 47ms O(mn)

LCS 49ms O(mn)

Nakatsu 45ms O(m(n-p+1))

Nakatsu算法定义了一个最长公共子序列P,在我们构造的K*M矩阵中需要算出的对角线个数是M-P+1个,每个对角线上数值的计算次数都接近N,故该算法的时间复杂度是O((N-P+1)M),在矩阵中下三角均不需要计算,在上三角的计算中只要某个对角线有个值是不存在的下面的值就不需要计算,故其空间复杂度是O(P(m-P)),相比较前两种算法该算法确实在空间和时间上有很大的改善。但是其只能求解部分的最长公共子串,不能够求出所有最佳匹配,如果单纯是计算最长公共子串的话,该算法就不能满足要求。

4.结论

经过系列的分析和比较,LD算法和LCS算法比较适合文本字符串短的文本的比较,Nakatsu算法比较合适文本字符串长的文本比较,对于要求出最长匹配子串的文本比较Nakatsu算法仍然是最适合的,但是对于要求出所有的最佳子串匹配,只能用LD和LCS算法,显然这时候的时间和空间上都不占用优势,所以文本比较算法还有待进一步的改善和优化。

参考文献

[1]邓爱萍.程序代码相似度度量算法研究[J].计算机工程与设计,2008,29(17):4636-4638.

[2]H.M.Deitel,P.J.Deitel JAVA程序设计教程[M].施平安,译.北京:清华大学出版社,2008.

[3]吉胜***.基于Levenshtein distance算法的句子相似度计算[J].电脑知识与技术,2009,5(9):2177-2178.

[4]王芳芳.基于遗传算法的序列比对方法[J].吉林大学学报(信息科学版),2006,24(4):423-429.

转载请注明出处学文网 » 文本比较算法分析

学习

潍坊十笏园

阅读(43)

本文为您介绍潍坊十笏园,内容包括潍坊十笏园历史介绍,潍坊十笏园门票。潍坊有个十笏园,因占地较小,喻若10个板笏之大而得其名。“笏”为古时大臣上朝时拿着的狭长形手板,多用玉、象牙或竹片制成。丁善宝在他的《十笏园记》中对十笏园的

学习

黑龙江人表里如一

阅读(17)

由于地理原因,黑龙江寒冷无比,十一月初河面上就已经结了一层厚厚的冰。黑龙江天寒,人的性格也像冰一样豪爽,激情而张扬,略欠温柔的涵养气息。黑龙江人外表强悍,身体强壮,内心刚毅火热,可谓表里如一。黑龙江多伟男和美女。男人多身材魁梧,面堂高挺

学习

古代的“入学礼”

阅读(53)

本文为您介绍古代的“入学礼”,内容包括古代入学礼的寓意,古代入学礼的致词。我们已经习惯每年秋季为一个新学年的开始,九月开学是一件大事。在中国古代,孩子入学、升学,家长们是极为重视的,特别是初次入学,还要举行隆重的“入学礼”,这“入学

学习

陈建群:以爱为名,为事业安家

阅读(35)

从二十世纪七十年代来到香港打拚,三十多年以来,陈建群先生一直努力前行。他时常告诫自己,任何情况下都不要说放弃,因为他相信只要有一颗向上的心,脚下就会有一片坚实的土地。源于这种坚持,陈建群先生在历经一番寒彻骨之后,终于赢得梅花

学习

论鸦片战争中道光皇帝的战略错误

阅读(28)

本文为您介绍论鸦片战争中道光皇帝的战略错误,内容包括鸦片战争后开眼看世界的积极意义,道光皇帝关于鸦片战争的问题。鸦片战争的失败是中国历史的转折点。从此,中国开始沦为半殖民地半封建社会。“经过鸦片战争,英、法、美这三个西方的主

学习

文件体系的“三库”管理

阅读(16)

本文为您介绍文件体系的“三库”管理,内容包括三层文件管理体系,什么是三级文件管理。文件体系“三库”管理,通过区分文件所处的不同状态和层次,进而构建草稿库、运行库、程序库,采用不同的管理控制方式,有效节约资源,并为其他文件管理方法提

学习

蜂鸟蛾 第4期

阅读(26)

本文为您介绍蜂鸟蛾 第4期,内容包括蜂鸟鹰蛾真实照片,蜂鸟鹰蛾幼虫。上世纪80年代初,蜂鸟蛾首次在我国境内被发现。蜂鸟蛾不是本土昆虫,它原产于北美的美国、墨西哥等地,因此,蜂鸟蛾的到来无疑是一场“外来生物入侵”。刚开始时,国内生物学家

学习

简析杜威的道德教育思想

阅读(38)

本文为您介绍简析杜威的道德教育思想,内容包括杜威道德教育观主要思想,杜威的道德教育思想论文。摘要:道德教育是学校教育不可或缺的重要组成部分,我国自古以来就十分重视道德教育的作用,但是今天的德育确有很多不足之处。我们在推进德

学习

钱慧安与杨柳青年画

阅读(34)

杨柳青镇位于天津西部,明代称“古柳口”,因盛产杨柳而得名,此地交通便利,商肆众多,据史记载,约在明代万历年间有了年画的产生。最早开业的有戴廉增、齐健隆两家,初期的年画,已少有存留,如今能见的多为明代以后的作品。由于杨柳青镇地邻北京,受皇家

学习

企业负债筹资风险的预警机制及排警对策

阅读(39)

本文为您介绍企业负债筹资风险的预警机制及排警对策,内容包括短期负债筹资风险高,企业负债风险预警工作流程。摘要企业负债筹资收到企业所处的环境、现金流入等诸多因素影响,对企业经营产生较大风险。企业应从安全性、流动性和收益性方面

学习

民用飞机外翼蒙皮表面损伤问题的工程处置研究

阅读(40)

本文为您介绍民用飞机外翼蒙皮表面损伤问题的工程处置研究,内容包括飞机铝制蒙皮裂纹计算流程,飞机机身蒙皮凹坑损伤及修理。外翼蒙皮表面损伤是民用飞机的常见制造偏离问题。该文研究了民用飞机外翼蒙皮的表面技术特性,梳理了结构修理中

学习

量子位:并行计算

阅读(37)

本文为您介绍量子位:并行计算,内容包括量子位并行运算实题演示,量子计算并行性描述正确的是。在洛克希德·马丁公司之后,Google和美国航空航天局(NASA)也向加拿大公司D-Wave订购了一台量子计算机。而对于量子计算机的商用,世界各地担心和怀

学习

内部控制之不相容岗位设置探究

阅读(29)

当前业界似乎对“不相容岗位设置”条件下的内部控制探究的还不够,但这已是影响内控有效性的重要方面。鉴于这种情况,内部控制还应在增强岗位意识、强化制度管理、完善组织建设,以及健全考核体系等环节展开优化。关键词:内部控制不相容岗位财

学习

薛仁明:读书,养人

阅读(42)

今年3月,我去了一趟华东。那天,在上海的旅店里,有场电话访谈。访问了一小时,后来,有点尴尬。那是个北京的民间组织,推广读书,要我谈阅读经验,并希望我向读者强调读书的好处。阅读的经验,当然可谈;但真要毫无保留地强调读书有多大好处,我却说不出口

学习

河流生态修复技术分析

阅读(19)

本文为您介绍河流生态修复技术分析,内容包括国内河流生态修复案例分析,河流生态修复技术方法有哪些。随着城市化进程的不断加快,河流对促进城市发展及改善人们生活环境具有非常重要的作用。但是随着过度的开发及大量的污染物排入河流中,导

学习

新一代动态密钥协商协议IKEv2的研究与分析

阅读(20)

本文为您介绍新一代动态密钥协商协议IKEv2的研究与分析,内容包括ike协议保护机制,ike是单一协议主要用于密钥交换吗。摘要:IKE协议作为IPSec体系中动态密钥协商机制,极大地增强了IPSec体系的安全性。而IEKv2作为IKE的替代者,对原有的IKE

学习

工程地质勘察中水文地质的分析

阅读(23)

本文为您介绍工程地质勘察中水文地质的分析,内容包括工程地质勘察中水文地质的分析,专项水文地质勘察报告。水文地质工作在建筑物持力层选择、基础设计、工程地质灾害防治等方面都起着重要的作用,随着工程勘察的发展,将受到越来越广泛的重

学习

平行蒙太奇和交叉蒙太奇在动画片中的应用分析

阅读(29)

本文为您介绍平行蒙太奇和交叉蒙太奇在动画片中的应用分析,内容包括1942是交叉蒙太奇还是平行蒙太奇,平行蒙太奇交叉蒙太奇怎么剪辑。蒙太奇不仅在电影中起着重要的作用,在动画片中也具有相当重要的地位和作用。研究蒙太奇的应用,不仅可以

学习

贝多芬第三交响曲《英雄》作品分析

阅读(16)

本文为您介绍贝多芬第三交响曲《英雄》作品分析,内容包括英雄交响曲贝多芬完整版,贝多芬第三英雄交响曲背后的故事。贝多芬是德国伟大的作曲家、演奏家、指挥家。本文主要是围绕着贝多芬第三交响曲进行曲式分析,同时对贝多芬的生平、生活

学习

从《浮士德》分析歌德的世界观

阅读(28)

本文为您介绍从《浮士德》分析歌德的世界观,内容包括歌德浮士德的深度解析,从浮士德看歌德的哲学思想。《浮士德》是德国著名思想家、作家、科学家歌德的代表作,该部作品巧妙的将客观的现实生活与虚构的古代神话进行融合杂糅,本文主要从《

学习

台湾第七届“立委”选情分析

阅读(785)

台湾第七届“立委”选举登记在11月20日晚已经截止,台“中选会”公布了“第7届立法委员区域暨原住民选举各选举区候选人登记情形”,第七届“立委”总席次为113席,登记参选区域、原住民“立委”候选人的有296人,不分区“立委”及侨居岛外者“

学习

浅谈国有企业激励与约束机制分析

阅读(32)

本文为您介绍浅谈国有企业激励与约束机制分析,内容包括浅析国有企业中长期激励,目前国有企业激励机制的现状。【摘要】当今时代是知识经济的时代,在众多既定条件相当的情况下,企业间的竞争更多地表现为人力资源的竞争。我国国有企业经过多