中文文本相似度在商业网络中的应用

更新时间:2024-02-15 作者:用户投稿原创标记本站原创 点赞:8787 浏览:33527

[摘 要]目前文本相似度在商业网络中应用广泛,本文主要讨论中文文本相似度研究的现状,给出中文文本相似计算的定义和概念,提出基于PHP的中文文本相似度算法,针对某网站的在线系统,进行对文档之间的相似程度的数值分析,表明所提出的算法具有一定的有效性.

[关 键 词]文本相似度分词PHP

一、引言

文本挖掘以数据挖掘为基础,结合机器学习,自然语言处理,信息检索和知识管理等领域的技术来处理文本数据,从中获得有价值的信息或数据帮助人们更好的决策.人们也可以把文本挖掘技术应用到各种相关的领域,带来社会效益或经济效益.在中文信息处理中,文本相似度的计算广泛应用于信息检索、机器翻译、自动问答系统、文本挖掘等领域,是一个非常基础而关键的问题,长期以来一直是人们研究的热点和难点.

文本相似度在商业网络中应用广泛,比如人们要在网站中进行信息搜索时,利用输入的搜索信息找到与此信息相似度较高的信息,人们要利用网络中一些旧的有用信息用来找出新的相似性信息,以供人们更好的做决策或者投资,人们可以通过比较相似性,将有用信息分为不同的类别,针对这些类别采取不同的解决方案或者用这些类别去解决某些问题.在某些网络系统中,针对人们提出的问题,可以判断问题的相似度,如果相似度很高,可以用相似性的答案去回答,这样大大节省时间和效率.因此,文本相似度在商业或者网络中的应用是很有好处的,也可以帮助人们更好地做决策,或者解决一些问题.

很多文本相似度的算法是以向量空间模型(V)和隐性语义标引(LSI)为基础的.在V中,文本被表示成词出现在这个文本中的频率的向量.两个文本之间的相似度用它们词频向量之间的夹角余弦计算.LSI也是一种基于向量空间技术的方法.其工作原理是利用矩阵理论中的“奇异值分解(SVD)”技术,将词频矩阵转化为奇异矩阵,可以通过标准化的内积计算来计算向量之间的夹角余弦相似度,进而根据计算结果比较文本间的相似度.另外国内学者潘谦红、王炬、史忠植提出利用属性论计算文本相似度,张焕炯、王国胜、钟义信提出基于汉明距离的文本相似度计算,金博、史彦军等提出利用知网的知识结构及其知识描述语言的语法进行相似度计算的方法.

以上是目前中文文本相似与算法的主要几种方法,本文在上述几种方法基础之上,提出了一个基于PHP的文本相似计算算法,来计算文本之间的相似程度,因为PHP语言本身是一种网络语言,因此算法要在网站中进行应用.

二、中文文本相似度定义及概念

1.基于PHP的汉语分词系统SCWS简介

中文分词是对中文文本进行自动分析的第一个步骤,分词是中文文本相似度计算的基础和前提.目前分词方法很多,常用的有正向、逆向最大匹配法、最佳匹配法、逐词遍历法、词频统计法、联想、回溯法、邻接约束法和最少分词法等.我们采用了SCWS(SimpleChineseWordsSegmentation)简易中文分词系统实现文本分词,它是一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词.在后面的算法描述的第一步就是要用这个系统先对文本进行分词,然后在分词后的文本中去掉一部分没有实际意义的词,就是下面要介绍的停用词.

2.停用词

在信息检索中,集合文献中出现频率高于80%的单词是没有用的,这些词常称为“停用词”,需要过滤掉.一般认为停用词包括冠词、介词、连词和语气词,还可以包括这些词之外的其他词,例如一些动词、副词和形容词,可以将这类词归为停用词.在排除停用词后,可以降低序列的长度.我们所要做的就是建立一个停用词库,将分词后的词语与停用词库进行匹配,如果文本中某词属于停用词库,将该词从文本中剔除,反之,保留该词.

3.中文文本相似度的定义

中文文本相似度关系包括以下几种关系:词与词、词与句、词与段、句与句、句与段以及段与段等.上述的各种相似度关系可分别用于不同的研究领域,例如,在信息检索中,相似度主要用于反映文本与用户查询在意义上的符合程度,在基于实例的机器翻译中,相似度更多用于衡量文本中词语的可替换程度,在自动问答中,相似度反映的是句子间语义上的匹配程度,而在多文档文摘系统中,相似度可以反映出局部主题信息的拟合程度.

相似度定义如下:对于两个中文文本,相似度指的是这两个文本之间基于字与词语上的匹配程度.简单来说,就是字符串与字符串之间或者句与句之间的匹配程度.如果相比较的字符串A完全包含字符串B活着字符串A和字符串B中的字或者词语完全一样,就认为这两个字符串完全相似,即相似度是100%,如果字符串A和字符串B中的字或者词语完全不一样,就认为这两个字符串不相似,如果字符串A和字符串B中的某些字或者词语一样或者意思相近,就认为这两个字符串存在相似性,相似度介于0%~100%之间.由字符串的比较可以扩大到句与句之间的比较.

定义:如果对文本A和文本B进行相似分析和比较,将文本A和文本B具有相同属性或特性两两对应组成相似元,相似元用ui等于(ai,bi)表示,当文本A和文本B间存在着n个相似元:u1,u2,等,un时,则将这n个相似元以集合U表示为:{u1,u2,等,un}.

其中,ui等于(ai,bi),0≤ui≤1.

当ui等于0,表示两系统对应元素既不相同也不相似,

当O

当ui等于1,表示两系统对应元素完全相同.

三、基于PHP的中文文本相似度算法

1.最长公共子序列算法

这个算法的主要思想是,一个给定序列的子序列就是该给定序列中去掉零个或者多个元素,给定两个序列X和Y,如果序列Z既是X的一个子序列,又是Y的一个子序列,那么Z是X和Y公共子序列.最长公共子序列:(Longest-Common-Subsequence),这里定义相似度等于最长公共子序列的长度×2/(字符串一的长度+字符串二的长度).

2.算法实现流程

本算法的具体实现步骤如下:

(1)对文本A和文本B分别用汉语分词系统SCWS进行分词.

(2)去掉分词后的文本A和文本B中的停用词得序列A和序列B.

(3)对序列A和序列B用最长公共子序列算法计算最长公共子序列的长度.

(4)计算文本A和文本B之间的相似度.文本A和文本B之间的相似度等于最长公共子序列的长度×2/(序列A的长度+序列B的长度).

以下是本文用PHP实现的算法的主要步骤:

Step1:读入待比较的两个序列A等于(A1,A2,等,An)和B等于(B1,B2,等,Bn).

Step2:分别计算两个序列的长度L(A)和L(B),分别将序列存入数组S(A)和S(B),这里注意的是,因为是纯中文字符,因此计算长度时,要计算中文字符长度,而不是单字符长度,存入数组中时,一个数组元素S(A)[n]存的是序列中的一个子序列An.

Step3:构建最长公共子序列矩阵C[L(A)][L(B)],矩阵大小为L(A)×L(B).

C[0][j]等于0,j等于0,1,等,L(B)-1,C[i][0]等于0,i等于0,1,等,L(A)-1

ifS(A)[1]等于S(B)[j],j等于1,2,等,L(B)-1,C[1][j]等于C[0][j]+1,j等于1,2,等,L(B)-1

elseifC[0][j]>等于C[1][j-1],j等于1,2,等,L(B)-1,C[1][j]等于C[0][j],j等于1,2,等,L(B)-1


elseC[1][j]等于等于C[1][j-1],j等于1,2,等,L(B)-1

i等于i+1(ifi等于L(A)-1,break)

Step4:采用递归算法,读入最长公共子序列矩阵C[L(A)][L(B)]、i、j,i等于L(A)-1,j等于L(B)-1,if(i等于0||j等于0)&&S(A)[i+1]等于S(B)[j+1],输出S(B)[j+1].ifS(A)[i+1]等于S(B)[j+1],调用递归(参数为C,i-1,j-1)并输出S(B)[j+1],elseifC[i][j+1]>等于C[i+1][j],调用递归(参数为C,i-1,j),反之,调用递归(参数为C,i,j-1).

Step5:计算相似度,最长公共子序列的长度为上述递归算法得到的序列长度,去掉序列A和序列B中出现的重复子序列,用最长公共子序列计算公式计算出两个文本之间的相似程度.

本算法可以用于多文本之间的两两比较.

四、实验结果

为了检验算法分析文本的相似能力,我们使用算法分析了网站中文档之间的相似性,选用的实验数据――文本库是来源于某网站的数据库,数据库采用的是MySQL数据库,测试样本是数据库中的文档.

我们对数据库中的文本进行分组得到11组文档组,每组有2~6条文档题目为偏向一个主题的相似性题目,接下来将每一组中的几个题目对应的文档进行分词和停用词处理,然后用算法进行相似度的计算,计算包括段落间的计算和整篇文档之间的计算,如表所示,计算结果出现相似度高的文档数一共有49篇,通过人工检查实际文档内容相似度高的文档数为45篇,因此可以得出识别正确率为91.84%,查全率为100%.说明本文算法具有一定的有效性.

五、结论

本文所提出的算法可以计算文本之间的相似性,识别出相似性高的文本数正确率较高,对于发现文本的相似性具有一定的作用,通过将文本进行相似性的分析,可以将有用信息进行分类,某一个类别的信息可以用于解决某些商业问题或者可以进行某种决策,那么在得到新的信息,可以通过相似性的分析,将这些新的信息归到某一类别中,那么针对这些新的信息可以知道人们如何决策或者去解决相对应的哪些问题,提高效率,这也是文本相似度作为一种商业技术的广泛应用.

相关论文范文