HTML资讯页识别算法

简介: 目前爬虫会爬取很多国际站点的HTML页面,包含各种不同类型的站点,如站点首页、论坛页、资讯页、列表页、视频页、下载页、图集页等等。

作者:UC 国际研发 儒愚

image.png

背景

目前爬虫会爬取很多国际站点的HTML页面,包含各种不同类型的站点,如站点首页、论坛页、资讯页、列表页、视频页、下载页、图集页等等。若想从这些爬取数据中提取有效资讯内容,第一步就需要先识别页面是否为资讯页。当前判断资讯页的方法较简单粗暴,主要是依赖正文单词数以及正文图片像素作为判断依据。这种方法实现简单,但容易出现较大程度的误判现象,小说、图集页面和视频页面容易被误判为资讯页。

目标

识别是否为资讯页可归类为一个分类问题。故尝试使用机器学习算法进行特征训练,并以此获取到二分类模型,最终分类标签可划分为资讯页(正样本1)、非资讯页(负样本0),用以表示资讯页面的识别。

量化指标:F1-score达到90%以上。

指标解释

准确率:实际是正类(资讯页)并且被预测为正类(资讯页)的样本占所有预测为正类(资讯页)的比例。(注:准确率更为关注将负类(非资讯页)样本错分为正类(资讯页)样本的情况)

召回率:实际是正类(资讯页)并且被预测为正类(资讯页)的样本占所有实际为正类(资讯页)样本的比例。(注:召回率更为关注将正类(资讯页)样本分类为负类(非资讯页)样本的情况)

F1-score:准确率和召回率的调和均值,即F1=((1+12)PR)/((12*P)+R) (P代表准确率,R代表召回率),相当于准确率和召回率的综合评价指标。单一指标可以更好量化分类模型的优异程度,如果更看重准确率可以使用F0.5,更看重召回率可以使用F2等。

识别算法流程

image.png

步骤详解

5.1 数据选取

随机从爬取数据中抽取不同的HTML内容。为了覆盖多种类型数据,每条数据的域名(包括二级)均不相同。最后数据集总数在1k条。对该数据抽取结果进行覆盖验证,其中已基本包含大部分类型的站点,比如主页、论坛页、下载页、图集页、图文资讯页、列表页、视频页等类型,确保了数据有足够的覆盖面,至此数据选取结束。

5.2 数据过滤/清洗

针对第一步抽取回来的数据进行过滤/清洗。首先对HTML页面结构进行检查,过滤掉不符合html标签规则且无法修复的页面数据。接着,对HTML页面进行修剪,剔除掉无用的标签内容,如script标签、注释、style标签等等。

5.3 数据标签

第三步就是对数据打标签了。众所周知,这一步的工作量是最大的,需要人工对数据集进行打标,工作量需占6-7成。另外,考虑到数据的类型覆盖问题,图文资讯页的占比大概在4成左右,所以真实的数据集分布会满足该趋势,最终选定正负样本的占比在4:6左右,即正样本(资讯页)占比40%。

5.4 特征选取

特征选取是一个不断迭代优化的过程。前期是先依靠经验,选择尽可能多的特征,然后再使用相关性分析进行特征分析。后期再根据业务特点(站点特性)以及其他维度信息进行筛选和调整,选取过程不做详细讨论,最终确定19个最有效特征,具体如下表:
image.png

image.png

image.png

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正则化

image.png

LR:坐标法下降-L1正则化

image.png

SVM:RBF径向基核函数-自带L2正则化
image.png

结论

从实验结果来看,从HTML页面中提取出19个有效特征项,并应用LR(牛顿法)算法识别资讯页明显优于实验中的其他两种,准确率、召回率和F1-score均达到90%以上,达到预期使用目标。

目录
相关文章
|
6月前
|
算法
【MATLAB】语音信号识别与处理:滑动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:滑动平均滤波算法去噪及谱相减算法呈现频谱
178 0
|
6月前
|
算法
【MATLAB】语音信号识别与处理:SG滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:SG滤波算法去噪及谱相减算法呈现频谱
239 1
|
6月前
|
算法
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
154 0
|
6月前
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
121 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
6月前
|
算法
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:移动中位数滤波算法去噪及谱相减算法呈现频谱
89 2
|
6月前
|
算法
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:卷积滑动平均滤波算法去噪及谱相减算法呈现频谱
120 0
|
6月前
|
算法
【MATLAB】语音信号识别与处理:一维信号NLM非局部均值滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:一维信号NLM非局部均值滤波算法去噪及谱相减算法呈现频谱
139 1
|
6月前
|
算法
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:高斯加权移动平均滤波算法去噪及谱相减算法呈现频谱
250 0
|
6月前
|
小程序
微信小程序中识别HTML标签的方法
微信小程序中识别HTML标签的方法
|
5月前
|
机器学习/深度学习 存储 算法
使用支持向量机算法解决手写体识别问题
使用支持向量机算法解决手写体识别问题
33 2