后台留了一堆问题,本篇是对其中两个问题的答疑
正文抽取
在【SEO如何处理采集内容 ①】中的“泛采集”部分提到过正文抽取,然后有一些人依旧表示不知道怎么搞。
这东西用网上开源的就可以,Google搜索“{编程语言}正文提取算法”便能找到一大堆的解决方案,如:Readability、Boilerpipe、Diffbot……大部分算法已经打包好了,拿过来就可以直接用,用不着自己写。我们是做网站的,不是搞技术的,有现成的轮子用就OK了。
那么一些人又有一个问题:我该用哪个好呢?
No No No,这不是用轮子的思维,首先不可能每个算法都能提取所有的网页,其次,算法不止一个。
那这件事就简单了,一个算法没有将当前网页的正文提取出来,好办,不用做别的,直接切下一个算法接着试,这个不行再换下一个,如果网页正常,总有一个能将正文提取出来。除非这个页面模板乱七八糟什么都有,比如网站首页,没有明显的主体内容区块,这个另算。
所以,如果泛采集过程中需要提取正文的链接中,最好先将首页url过滤掉。
如果非要纠结用哪个好,请参考:http://tomazkovacic.com/blog/2011/06/09/evaluating-text-extraction-algorithms/
内容去重
另一个问题,采集到重复的内容咋办?
本渣渣之前用过两个办法。
第一种:
首先我们已经限定有效内容需要满足哪些指标,比如字数必须大于150字,才算有效内容,小于150字的删除不入库。那么大于150字的内容一般都有4个以上标点符号。
XXXXXXX,XXXXXXXXX。XXX:“XXXXXX,XXXXXXXXXXXX。XXXXXX,XXXXXXXXXX,XXXXXXXX,XXXXXX。XXX?” XXXX,XXXXXXX。XXXXXXX;XXXX;XXXXXXXX;XXXXXX,XXXXXXXXXX,XXXXXXXX,XXXXXX - XXX!
所以每篇文章,从第2个标点符号开始,连续提取两个标点符号之间的文本,且字数大于7的,直至提取3个文本段。
然后将这3个文本段合并成一个,将文本段重复的文章去重,只保留一个。因为连续3个文本段相同的文章基本都是重复的,而且是完全重复,改都没改的。
第二种
用现成的文本去重算法,依旧Google搜索,一堆现成的解决方案,如simhash、Shingling…..
首先对所有抓回来的文本清洗,去除无关词汇,如停止词、助词(的地得..)什么的,然后再通过上述的解决方案来计算相似文档。
哪个好?本渣渣觉得都一般,没觉得哪个好,但都可以凑活用。。。
但都有个问题,一旦文章量大起来,比如上了几百万,程序跑起来很慢,巨烧CPU,怎么办??
于是就沿用第一种办法的思路,不分析全文了,直接找出每篇文章的最长的n句话,做一遍hash签名,然后还是用上述现成的算法去跑,n一般取3。不但运行速度快了很多,找相似文章的最终效果貌似也比之前好了。
===================================================
转载请注明:思享SEO博客 » SEO处理采集内容问答