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

[摘要] 目前文本相似度在商业网络 中应用广泛,本文主要讨论中文文本相似度研究的现状,给出中文文本相似计算的定义和概念,提出基于PHP的中文文本相似度算法,针对某网站的在线系统,进行对文档之间的相似程度的数值分析,表明所提出的算法具有一定的有效性。
  [关键词] 文本相似度 分词 PHP
  
  一、引言
   文本挖掘以数据挖掘为基础,结合机器学习,自然语言处理,信息检索和知识管理等领域的技术来处理文本数据,从中获得有价值的信息或数据帮助人们更好的决 策。人们也可以把文本挖掘技术应用到各种相关的领域,带来社会效益或经济效益。在中文信息处理中,文本相似度的计算广泛应用于信息检索、机器翻译、自动问 答系统、文本挖掘等领域,是一个非常基础而关键的问题,长期以来一直是人们研究的热点和难点。
  文本相似度在商业网络中应用广泛,比如人们要在 网站中进行信息搜索时,利用输入的搜索信息找到与此信息相似度较高的信息,人们要利用网络中一些旧的有用信息用来找出新的相似性信息,以供人们更好的做决 策或者投资,人们可以通过比较相似性,将有用信息分为不同的类别,针对这些类别采取不同的解决方案或者用这些类别去解决某些问题。在某些网络系统中,针对 人们提出的问题,可以判断问题的相似度,如果相似度很高,可以用相似性的答案去回答,这样大大节省时间和效率。因此,文本相似度在商业或者网络中的应用是 很有好处的,也可以帮助人们更好地做决策,或者解决一些问题。
  很多文本相似度的算法是以向量空间模型(VSM)和隐性语义标引(LSI)为基 础的。在VSM中,文本被表示成词出现在这个文本中的频率的向量。两个文本之间的相似度用它们词频向量之间的夹角余弦计算。LSI也是一种基于向量空间技 术的方法。其工作原理是利用矩阵理论中的“奇异值分解(SVD)”技术,将词频矩阵转化为奇异矩阵,可以通过标准化的内积计算来计算向量之间的夹角余弦相 似度,进而根据计算结果比较文本间的相似度。另外国内学者潘谦红、王炬、史忠植提出利用属性论计算文本相似度,张焕炯、王国胜、钟义信提出基于汉明距离的 文本相似度计算,金博、史彦军等提出利用知网的知识结构及其知识描述语言的语法进行相似度计算的方法。
  以上是目前中文文本相似与算法的主要几种方法,本文在上述几种方法基础之上,提出了一个基于PHP的文本相似计算算法,来计算文本之间的相似程度,因为PHP语言本身是一种网络语言,因此算法要在网站中进行应用。
  二、中文文本相似度定义及概念
  1.基于PHP的汉语分词系统SCWS简介
   中文分词是对中文文本进行自动分析的第一个步骤,分词是中文文本相似度计算的基础和前提。目前分词方法很多,常用的有正向、逆向最大匹配法、最佳匹配 法、逐词遍历法、词频统计法、联想、回溯法、邻接约束法和最少分词法等。我们采用了SCWS(Simple Chinese Words Segmentation)简易中文分词系统实现文本分词,它是一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。在后面的算 法描述的第一步就是要用这个系统先对文本进行分词,然后在分词后的文本中去掉一部分没有实际意义的词,就是下面要介绍的停用词。
  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,表示两系统对应元素处于其他情况;
  当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实现的算法的主要步骤:
  Step 1:读入待比较的两个序列A=(A1,A2,…,An)和B=(B1,B2,…,Bn)。
  Step 2:分别计算两个序列的长度L(A)和L(B),分别将序列存入数组S(A)和S(B),这里注意的是,因为是纯中文字符,因此计算长度时,要计算中文字符长度,而不是单字符长度,存入数组中时,一个数组元素S(A)[n]存的是序列中的一个子序列An。

 

ps:http://www.luotuo.net.cn/a/jingji/xinjingjixue/2010/1117/18332.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值