文章内容相似度计算几种方式及优缺点
PHP 内置方法 similar_text
similar_text 是PHP内置的字符串相似度对比函数,是使用方式最便捷的一种,但是因为它的时间复杂度是 O(N**3),处理时间会随着内容长度增加,若比较5000字以上的文章,或者比较文章的量级比较大不建议使用,只是单篇文章对单篇文章可以使用。
通过分词进行余弦相似度对比
解决方案是首先进行文章分词可以用结巴或者迅搜分词服务进行文章分词,然后将需要对比的文章分词结果存入redis,在有新文章进行对比的时候从redis将所有文章的分词结果从内存中取出来然后进行相似度对比,逐词进行相似度计算。相似度计算的准确性很高,但是对比的文章量非常大的时候,处理时间还是会很长,5000文章的相似度计算需要近30S
主要计算代码:
Class TextSimilarity
{
/**
* [排除的词语]
*
* @var array
*/
private $_excludeArr = array('的', '了', '和', '呢', '啊', '哦', '恩', '嗯', '吧');
/**
* [词语分布数组]
*
* @var array
*/
private $_words = array();
/**
* [分词后的数组一]
*
* @var array
*/
private $_segList1 = array();
/**
* [分词后的数组二]
*
* @var array
*/
private $_segList2 = array();
private static $test1 = array();
private static $test2 = array();
/**
* [分词两段文字]
*
* @param [type