作者:UC 国际研发 儒愚
背景
目前爬虫会爬取很多国际站点的HTML页面,包含各种不同类型的站点,如站点首页、论坛页、资讯页、列表页、视频页、下载页、图集页等等。若想从这些爬取数据中提取有效资讯内容,第一步就需要先识别页面是否为资讯页。当前判断资讯页的方法较简单粗暴,主要是依赖正文单词数以及正文图片像素作为判断依据。这种方法实现简单,但容易出现较大程度的误判现象,小说、图集页面和视频页面容易被误判为资讯页。
目标
识别是否为资讯页可归类为一个分类问题。故尝试使用机器学习算法进行特征训练,并以此获取到二分类模型,最终分类标签可划分为资讯页(正样本1)、非资讯页(负样本0),用以表示资讯页面的识别。
量化指标:F1-score达到90%以上。
指标解释
准确率:实际是正类(资讯页)并且被预测为正类(资讯页)的样本占所有预测为正类(资讯页)的比例。(注:准确率更为关注将负类(非资讯页)样本错分为正类(资讯页)样本的情况)
召回率:实际是正类(资讯页)并且被预测为正类(资讯页)的样本占所有实际为正类(资讯页)样本的比例。(注:召回率更为关注将正类(资讯页)样本分类为负类(非资讯页)样本的情况)
F1-score:准确率和召回率的调和均值,即F1=((1+12)PR)/((12*P)+R) (P代表准确率,R代表召回率),相当于准确率和召回率的综合评价指标。单一指标可以更好量化分类模型的优异程度,如果更看重准确率可以使用F0.5,更看重召回率可以使用F2等。
识别算法流程
步骤详解
5.1 数据选取
随机从爬取数据中抽取不同的HTML内容。为了覆盖多种类型数据,每条数据的域名(包括二级)均不相同。最后数据集总数在1k条。对该数据抽取结果进行覆盖验证,其中已基本包含大部分类型的站点,比如主页、论坛页、下载页、图集页、图文资讯页、列表页、视频页等类型,确保了数据有足够的覆盖面,至此数据选取结束。
5.2 数据过滤/清洗
针对第一步抽取回来的数据进行过滤/清洗。首先对HTML页面结构进行检查,过滤掉不符合html标签规则且无法修复的页面数据。接着,对HTML页面进行修剪,剔除掉无用的标签内容,如script标签、注释、style标签等等。
5.3 数据标签
第三步就是对数据打标签了。众所周知,这一步的工作量是最大的,需要人工对数据集进行打标,工作量需占6-7成。另外,考虑到数据的类型覆盖问题,图文资讯页的占比大概在4成左右,所以真实的数据集分布会满足该趋势,最终选定正负样本的占比在4:6左右,即正样本(资讯页)占比40%。
5.4 特征选取
特征选取是一个不断迭代优化的过程。前期是先依靠经验,选择尽可能多的特征,然后再使用相关性分析进行特征分析。后期再根据业务特点(站点特性)以及其他维度信息进行筛选和调整,选取过程不做详细讨论,最终确定19个最有效特征,具体如下表:
5.5 模型选择
资讯页识别本质上是一个分类算法,属于二分类问题。常见的二分类算法有SVM、LR(逻辑回归)、决策树(单一决策树、随机森林、GBDT)、贝叶斯、NN等等。由于决策树和贝叶斯不支持连续型特征,需对该类特征进行分段,需人工设置分段函数,在目前所选的18-19特征中不易分段,所以最终选择的验证分类算法是SVM和LR。
5.5.1 LR
LR算法就是大名鼎鼎的逻辑回归算法,不了解的可先自行google ,此处不再多做介绍。LR逻辑回归有多种收敛法选择:坐标法下降、牛顿法、随机梯度下降等,这三种比较出名,LR的应用场景大部分都会从中选择。由于随机梯度下降法应用场景一般是大样本量的训练模型,其主要优势是支持局部更新,目前样本量不大,所以选择另外两种收敛法进行效果验证。
5.5.2 SVM
SVM中文名称是支持向量机,有严格的数学说明,不了解的可先自行google。在SVM算法中最复杂的是核函数的选择(业界有人说发现一个新的核函数就能够出产一篇顶级paper)。不采用核函数的SVM本质上和LR都属于一种线性分类器,不做分析。另外,SVM较有名的核函数是RBF径向基,其具有较好的适应性,本实验采取RBF核函数的SVM作为效果验证。
5.6 交叉验证
交叉验证指的是将数据集分为N等份,使用其中N-1份作为训练得到数据模型,然后再使用剩余1份作为验证数据集,以此验证数据模型的效果。总共需测试N次,最终求指标均值,可确保算法的泛化性,防止过拟合。测试结果如下:
LR:牛顿法-L2正则化
LR:坐标法下降-L1正则化
SVM:RBF径向基核函数-自带L2正则化
结论
从实验结果来看,从HTML页面中提取出19个有效特征项,并应用LR(牛顿法)算法识别资讯页明显优于实验中的其他两种,准确率、召回率和F1-score均达到90%以上,达到预期使用目标。