惊蛰 - 2016年8月
type: channel
link: http://forthxu.com/blog/2016/08/
description: Just So So ...
items: 网页正文提取算法和相似文章比较算法

网页正文提取算法和相似文章比较算法
type: item
date: 2016-08-18T10:06:00+08:00
description: 两个比较好的网页正文提取算法： 国内： 哈工大的《基于行块分布函数的通用网页正文抽取》该算法开源网址为http://code.google.com/p/cx-extractor/，文章中呈准确率95%以上，对1000个网页抽取耗时21.29秒。看了文章感觉不错，无需html解析，效率应该会高些。 Html2Article C# http://www.cnblogs.com/jasondan/p/3497757.html 国外： 大名鼎鼎的arc90实验室的Readability，该算法已经商业化实现了firefox,chrome插件，及flipboard，并且已经集成进了safari浏览器。未详细测试，大致测试感觉准确率应该至少在90%以上。该算法需要解析DOM树，因此稍执行效率稍微慢一些。大致过程为，先解析DOM树，所有标签小写。然后去除所有“script”标签内容，再通过一对正则表达式的配合提取。具体算法还未看。其插件中包含算法JAVASCRIPT源码。 有热心人士已将其用c#和php实现，源码地址如下: 官方网站 http://www.readability.com/ c#实现一：https://github.com/marek-stoj/NReadability c#实现二：https://github.com/marek-stoj/NReadability php实现一: https://bitbucket.org/fivefilters/php-readability php实现二: https://github.com/feelinglucky/php-readability 作者主页: http://www.gracecode.com/archives/3061/ node.js版：https://github.com/arrix/node-readability/ 原文：http://www.cnblogs.com/phoenixnudt/articles/2382140.html 相似文章算法 『simhash算法』 simhash是google用来处理海量文本去重的算法。 google出品，你懂的。 simhash最牛逼的一点就是将一个文档，最后转换成一个64位的字节，暂且称之为特征字，然后判断重复只需要判断他们的特征字的距离是不是<n（根据经验这个n一般取值为3），就可以判断两个文档是否相似。 simhash 实现的工程项目 C++ 版本 simhash Golang 版本 gosimhash 『百度的去重算法』 百度的去重算法最简单，就是直接找出此文章的最长的n句话，做一遍hash签名。n一般取3。 工程实现巨简单，据说准确率和召回率都能到达80%以上。 『shingle算法』 shingle原理略复杂，不细说。 shingle算法我认为过于学院派，对于工程实现不够友好，速度太慢，基本上无法处理海量数据。 『其他算法』 具体看微博上的讨论 原文：https://yanyiwu.com/work/2014/01/30/simhash-shi-xian-xiang-jie.html