码迷,mamicode.com
首页 > 编程语言 > 详细

PHP相似度算法

时间:2016-08-05 15:28:26      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:

写了很久忘保存了,囧没了,先放这里

catalogue

1. TF-IDF
2. 基于空间向量的余弦算法
3. 最长公共子序列
4. 最小编辑距离算法
5. similar_text

 

1. TF-IDF

Relevant Link:

http://qianxunniao.iteye.com/blog/1831780

 

2. 基于空间向量的余弦算法

将分词后的词频作为向量分量,将每个文件转化为一个向量,通过计算向量之间的余弦值,本质上是在计算不同文本的词频的相似度

 

3. 最长公共子序列
该算法的最大缺陷是计算CPU消耗较大

1. 将两个字符串分别以行和列组成矩阵
2. 计算每个节点行列字符是否相同,如相同则为1。
3. 通过找出值为1的最长对角线即可得到最长公共子串 

为进一步提升该算法,我们可以将字符相同节点的值加上左上角(d[i-1,j-1])的值,这样即可获得最大公共子串的长度。如此一来只需以行号和最大值为条件即可截取最大子串

Relevant Link:

https://segmentfault.com/q/1010000000738974
http://www.speedphp.com/thread-4840-1-1.html
http://www.cnblogs.com/liangxiaxu/archive/2012/05/05/2484972.html

 

4. 最小编辑距离算法

设A、B为两个字符串,狭义的编辑距离定义为把A转换成B需要的最少删除(删除A中一个字符)、插入(在A中插入一个字符)和替换(把A中的某个字符替换成另一个字符)的次数,用ED(A,B)来表示。直观来说,两个串互相转换需要经过的步骤越多,差异越大

1. 对两部分文本进行处理,将所有的非文本字符替换为分段标记"#"
2. 较长文本作为基准文本,遍历分段之后的短文本,发现长文本包含短文本子句后在长本文中移除,未发现匹配的字句累加长度
3. 比较剩余文本长度与两段文本长度和,其比值为不匹配比率

PHP中的levenshtein()函数已经实现了该功能

Relevant Link:

http://php.net/manual/zh/function.levenshtein.php

 

5. similar_text

Relevant Link:

http://php.net/manual/zh/function.metaphone.php
http://php.net/manual/zh/function.soundex.php
http://php.net/manual/zh/function.similar-text.php 

 

Copyright (c) 2015 LittleHann All rights reserved

 

PHP相似度算法

标签:

原文地址:http://www.cnblogs.com/LittleHann/p/5737765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!