赞
踩
写在前面
- 若有图片加载失败,请科学上网 。
- 本文为对软件学院连老师的PPT课件总结所得的复习笔记,仅供参考。不保证对考点的全覆盖,以PPT为主。
- 对往年考过的题相关知识点前面都标注了“考过”,并高亮,供参考。
- 写的比较匆忙,有遗漏、错误之处敬请指正。
- 笔记中除了LDA的全称,其他的基本都覆盖到了。不要纠结,好好准备下一科。
爬虫定义:一种自动获取网页内容的程序,通过HTML源码解析获得想要的内容
考过
文档指纹FP:快速对文档进行判重。
URL判重:建立散列存放访问过的网址。(经过MD5等散列函数后的值)
考过
爬虫礼貌性、鲁棒性、性能和效率、分布式、新鲜度、功能可扩展性
考过
BFS优于DFS:可以在有限的时间内最多地爬下最重要的网页。(首页)
层次越深一般可用信息就越少。
DFS优于BFS:避免握手次数太多,可以提升一些性能。
分布式带来的问题:
开源工具 Nutch (基于整个web):
考过
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,进行组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑。
构造正则表达式的方法是用多种元字符与运算符将小表达式结合在一起创建更大的表达式。
正则表达式特点:
文档对象模型,将xml文档转换成对象集合,然后任意处理该对象模型,称为随机访问机制。
正则表达式与DOM树比较:
正则表达式匹配速度快,但表达能力较弱,又有正规文法表示能力
在对网页内容信噪比要求不高的情况下可以使用基于正则表达式匹配的爬取程序
DOM树在解析HTML时速度较慢,但其表达能力相当于上下文无关文法
网页自动分类等需要进行网页去噪处理的情况时使用基于HTML DOM树的爬取程序、
jsoup、HTMLParser、lxml等
是一个工具箱,通过解析文档为用户提供需要抓取的数据。
构造DOM树时,可选择解析器:
ansi、unicode、utf8编码。
ANSI:中文操作系统默认
Unicode :国际通用编码
utf8:是 Unicode编码在网络传输时的一种变通,可以节约数据量。
BS4简单,但是在操作时会将整个文档树加载,再进行查询匹配,使用过程中消耗资源过多。
快速、高层次的屏幕抓取和web抓取框架。用于抓取结构化的数据。可复用的设计。七大架构。
实现了底层多线程请求,异步网络框架处理网络通讯。
制作scrapy爬虫需要四步:
爬虫爬取数据时,使用yield返回,利用框架优势。scrapy自动地发现网页上的所有链接,再去抓取链接内容。
若解析的数据不在同一张页面中,可以通过meta参数进行数据传递。
考过
request和bs4:
Scrapy:
又称多搜索引擎
通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的搜索引擎来实现检索操作,是对分布于网络的多种检索工具的全局控制
考过
反爬虫策略:希望能够在用户面前正常显示,同时不给爬虫机会。
后端策略:
前端策略:
网站通过该协议告诉搜索引擎哪些页面可以抓取,哪些不可抓取。
简称UA,是HTTP请求头的一部分,向网站提供访问者的信息,浏览器类型、语言、插件;操作系统版本、CPU类型等。每次请求都会发送到服务器。通过该标识,用户访问的网站可以显示不同排版从而为用户提供更好的体验。
网站可以通过此来过滤爬虫,而爬虫可以修改此来伪装。
同一IP频繁访问,封IP。
爬虫则可以通过多IP并行、增大爬取时间间隔、连接代理服务器来对抗。代理池:从各大网站上爬取可用IP,定期检查是否可用。
用户输入:用户名、口令,通过GET或者POST提交参数,登陆成功后带着cookie继续访问其他网页。
Cookie:小文本文件,服务器在HTTP响应头中发送给用户浏览器,浏览器保存在本地,用于维护客户端与服务端的状态。
记录了用户ID,密码、浏览过的网页、停留的时间等信息。
通常命名为user@domain
流程
工具:
selenium:模拟用户进行交互,登陆输入,键盘动作,鼠标动作,ajax响应等。
ajax,传统的网页如果需要更新,需要重载整个网页页面。但是用AJAX可以进行少量数据交换,异步加载,对页面某部分进行更新。 || 程序不知道何时某个元素是否加载出来,如果还未加载就定位,可能就报错,selenium提供了两种等待方式:显示、隐式等待。
懒加载,为了避免页面一次性向服务器发送大量请求造成拥堵,需要按照需要去加载——预加载、懒加载(当对象需要的时候再加载),提升前端性能。原理:
爬取懒加载图片:
寻找代替src属性的 data-属性、src2、original属性数值。而模拟浏览器可以直接解决多种反爬虫。
可以将selenuim与scrapy结合起来,selenium进行登录等操作,然后保存cookie,scrapy利用cookie进行爬取。
获取图片(下载或截图)——图片处理——获取图片中文字内容。
获取图片
selenium可以通过元素的尺寸坐标定位到图片,进行截图获取。
图片处理
Pillow和PIL模块,旋转、缩放、二值化等。
OCR
光学字符识别,将图像中的文字转换成文本格式。百度、谷歌、微软。
滑动验证码:
selenium处理方式:
获取不带缺口的图片,再获取带缺口的图片,灰度比较得到缺口的各个坐标,进行滑动。(滑动不能过于匀速,可以滑过头再返回)。
由于selenium是在后台完成的滑动,而有些平台会检测鼠标光标未移动,可以使用pyautogui。
考过
web 数据抽取是指从页面中将用户感兴趣的数据利用程序自动抽取到本地的过程。为了确保准确性,必须能够识别页面模板。
给定页面集合W={ w i w_i wi},它通过页面模板 T 生成,包含数据D={ d i d_i di},即 W = { w i ∣ w i = T ( d i ) w_i| w_i = T(d_i) wi∣wi=T(di) },web数据抽取问题可以定义为通过一定的技术手段,从W中逆向推导出T,还原数据D。
抽取方式:手工爬虫、机器学习爬虫。
页面模板 T = < C, L, S >
Web数据抽取的目的是获得页面中的数据,需要借助一个或多个页面逆向推导出页面模板T。
召回率
抽取到的正确结果与要抽取页面的全部结果的比。即 R=|Ra| / |R|
准确率
指抽取到的正确结果与抽取到的全部结果的比。即 P=|Ra| / |A|
F 值
召回率R和查准率P的加权调和平均值,综合考虑了二者
抽取的自动化程度
这项标准用来衡量用户在抽取过程中的参与程度,分为手工、半自动和全自动三类。
适应性
指在该页面的内容和结构有较小变化的情况下,该抽取方法或工具具有自适应能力,仍然能够正常工作。
修正率
其含义是需要手工调整使得准确率和召回率达到100%的Web数据库数量。
包装器是针对某一类特定的网页、计算机可以理解并执行的程序或抽取规则,任务就是负责将HTML格式的数据抽取并转化为结构化的格式。——模板T的表示形式。
在半自动化抽取系统中,需要通过和用户的交互生成。
包装器的核心:抽取规则。
将HTML文档看作字符流,给出数据项的起始和结束分界符,将其中的数据抽取出来。
例如,某一个数据项的起始规则是"SkipTo<i>“,结束规则是"SkipTo</i>”。
意味着从文档的起始忽略所有的字符直至找到HTML标签 <i>,接着,忽略所有字符直至 </i>,中间部分即所需的字符串。(基于正则表达式的网页分析)
将文档看作一个树结构。所抽取的数据存储在树节点中,因而可根据其路径来定位。
首先根据HTML标签将文档分析成树结构,如DOM树,然后通过规则中的路径在树中搜索相应的节点,最终得到所需数据。(基于DOM树的网页分析)
包装器是一个能够将数据从HTML网页中抽取出来,并且将他们还原为结构化的数据的软件程序。
手工方法:爬虫
包装器归纳:使用机器学习的方法产生抽取规则,基于有监督学习的,用于从其他相同标记或相同网页模板抽取目标数据。步骤:
网页清洗:有些网页结构不规范,例如前后标签不对称,没有结束标签符,不规范的网页结构容易在抽取过程中产生噪声。
网页标注:给网页中的某个位置打上特殊的标签表明这是要抽取的数据。
包装器空间的生成:
对标注的数据生成XPath集合空间,对生成的集合进行归纳,形成若干子集。
归纳的规则是在子集中的XPath能够覆盖多个标注的数据项,具有一定的泛化能力。
包装器评估:准确率和召回率。
自动抽取:通过挖掘多个数据记录中的重复模式来寻找这些模板,是无监督学习,步骤:
按照页面内的数据组织形式不同,分为:
单记录页面(页面中只嵌入了唯一的记录)
多记录页面(页面嵌入了数量不等但由相同模板生成的记录,记录按照单列或者多列布局整齐排列)
按照页面内的承载内容不同,分为:
考过
多条结构相同的数据记录组成。
观察
对于对应相同模板的多个网页,其不同之处主要在于这些页面中所包含的数据。
如果是多记录数据型页面,则在DOM 树上包含这些记录的子树通常处于同一层,并且这些记录具有共同的父节点。
如果是多记录数据型页面,则这些记录无论在DOM树上的结构,还是记录本身所包含的内容,都具有相似性。
数据记录抽取
在网页中,一个数据记录对应着现实世界的一个实体。
如果把一个网页解析成DOM树结构,一个数据记录则对应着一棵子树或多棵相邻的子树。
数据记录抽取问题事实上就是如何找出包含数据记录的这些子树。
步骤:
确定数据区域(比较多个例子页面,发现可能包含数据记录的父节点)
如果两个节点是相同的,则必须满足:若节点都是元素节点,则必须 名称相同;若为文本节点,则值相同。
从两颗DOM树根节点进行递归深度遍历,如果两个节点相同则递归下一层,否则记为不同子树返回上层。输出:不同的子树
计算数据记录的边界(对一系列节点进行聚类并得到数据记录)
语义块:HTML文档的一个片段,如果内容满足模式定义,则为语义块,一个语义块可能包含若干子语义块,不能划分的成为最小语义块。最小语义块是在包装器的生成维护中的最基本的抽取单位。
1、发现语义块集合所在层次。
2、计算语义块边界,得到这个集合所包含的记录。
去除噪声数据记录
数据项抽取
数据项边界–指的就是判断一个数据项应该覆盖HTML树结构上的多少个节点。位置相同,标签序列相同,就是不同数据记录的同一个字段。
给定两个模板项t1和t2,则在所有的语义块中,t1和t2之间包含的数据项都表达了相似的信息。
增量式抽取,从多个连续页面中抽取同结构的记录
结构化数据
结构化文件:Excel、CSV、JSON、XML、PICKLE
数据库
CSV以逗号相隔、存储容量小、被很多应用支持
JSON是存储和交换文本信息的语法,比XML小,最常用键值对。在数据交换中起到载体的作用。
XML,数据重用,用来存储携带交换数据,不是用来展示数据。
pickle文件:用于序列化和反序列化python对象结构。pickle是二进制序列化格式,json是文本序列化。json可读,pickle不可读。json可互操作,广泛使用,pickle特定于python。
数据库:提供了更强有力的数据存储和分析能力,
关系型(使用关系模型存储)、非关系型(键值对存储)
非结构化数据
Pipeline
数据清洗
结构化数据应用
特征工程
特征:在观测现象中的一种独立、可测量属性。
特征工程:把原始数据变成特征的过程,目的是获取更好地训练数据。
主成分分析法(PCA):无监督学习,将互相相关的特征,通过线性组合,使得数据变换到新的空间,可能最大程度保持原来的信息,并且特征之间互相不相关。
取最大的r个特征向量张成的矩阵来做低维投影降维,将多元数据的特征在低维空间里直观地表示出来(本质上是基的变换)。输出的数据方差很大,对训练模型有意义。
机器学习的数据预处理
连续值与离散值
文本数据:SQL查询、NLP文本特征:分词、预处理、向量描述。
文本特征:IR:IR模型、倒排表、搜索引擎;文本处理:文本分类、文本聚类、情感分析。
非结构化数据特征描述:图像数据——图像特征——图像识别、检索;文本+图片特征——跨模态检索、文本生成图片。
语言是具有组合型的,将这些文档拆解成各个组件或单词,然后从左往右阅读,意义也是具有组合型的。预处理:将文档拆解成单词以便计算机程序能够解释。
考过
步骤:
文档解析(移除不需要的格式,比如HTML标签)
句子分割(文档拆成句子)
分词(句子变成单词)
考过
三种方法:
词条化:将给定的字符序列拆分成一系列子序列的过程,其中每一个子序列称之为一个“词条”Token。
词规范化
归一化:词条的不同表示方式“归一化成一致的形式”,建立同义词词表
词干还原:通常指去除单词两端词缀的启发式过程。
去停用词
考过
查表法:停用词表:介词、冠词。
利用词频去除。
预处理结果:文档——词条集合:词袋、搜索引擎、文档——词条序列(用于序列很重要的情况)。开源库:nltk、spacy
文本数据往往是非结构化,杂乱无章。分为两类:有语序信息、无语序信息。
构造词汇表
语料库——建立词汇表、文档——词包
文本表示
one-hot:
考过
TF-IDF(Term frequency 、inverse document frequency)
是一种统计方法,用以评估一个字词对于一个文件集或者语料库中的一份文件的重要程度。
词项频率:
词项t在文档d中出现的次数,记为 t f t , d tf_{t,d} tft,d
向量第 i 维上的数字代表 ID 为 i 的词语在文本里的 t f t , d tf_{t,d} tft,d
对数词频:采用原始tf值,相差太大,取对数+1
文档频率:出现词项的文档数目 d f t df_t dft ,文档集合中包含t的文档数目,与此项 t 包含的信息量成反比。 d f t ≤ N df_t \leq N dft≤N
逆文档频: i d f t = l o g 10 ( N d f t ) idf_t = log_{10}(\frac{N}{df_t}) idft=log10(dftN) ,是反映词项 t 的信息量的指标。
例子:
词项在多个文件中出现——重要,词项在语料库中频繁出现——不重要。
离散表示文本:one-hot、词袋模型(BOW)
分布式表示:LDA、文档哈希、语言模型(N-GRAM、Word2Vec、Doc2Vec)
LDA:无监督学习算法,在语料库上进行训练。指定主题的数目K,文档表示就是K维向量。缺点:非常耗时
把任意长度的输入转化成固定长度的输出。
目标:哈希码的相似程度能直接反映输入内容的相似程度。
应用:通过编辑距离计算语法上的相似性、通过阈值来检测近似(不可传递)。
思路:为每一个web文档进行hash,得到一个指纹。将高维特征向量映射成一个f-bit指纹,比较两篇文章的海明距离,来确定是否重复或者高度近似。
shingle(搭叠)算法:
LSH 局部敏感哈希
一种常见的处于处理高维向量的索引方法,
LSH是指
面对海量高维数据时,一般的算法无法快速降维查询相似度高的数据子集,利用特定的hash算法,将高维数据映射到低维空间,以较高概率快速寻找相似度高的数据子集。
minhash算法:
Simhash算法
将离散变量转换成连续向量:one-hot表示、分布式表示。是将词汇映射到实数向量的方法总称。
考过
统计语言模型:一种用来描述词、语句或文档的概率分布的模型。
指数语言模型
神经网络语言模型:nnlm、word2vec
nnlm解决了n-gram的缺点。
word2vec:
Doc2Vec:不仅能学习单词的向量,还能学习文本的向量表示。用于聚类、分类。训练过程时,同时训练词向量和段落向量。词向量随着滑动窗口的改变而改变,而只要滑动窗口还在本段落,段落向量不变(表示段落主题,之随着模型参数更新而改变)。
Glove:改进了word2vec的只利用局部信息的缺陷,成功利用语料库的全局信息。词共现矩阵,表示了两词不同文档出共现次数。
文本特征表示
目的:将文本转变成一种能够让计算机更容易处理的形式,同时减少信息的损失。
定义:用计算机对文本(或其他实体)按照一定的分类体系或标准进行自动分类标记。
应用:
基本结构:
特征表示:词袋模型、TF-IDF……
分类模型:
浅层学习模型
依赖于人工获取的文本特征(难点),参数较少,但领域适应性强,在小规模数据上表现较好。
KNN、SVM、决策树、随机森林、PGM等
深度学习模型
结构相对复杂,不依赖人工获取的文本特征,可对文本直接进行学习建模,对数据依赖性高,领域适应性不强
MLP、RNN、CNN、Attention等
用Doc2vec进行文本分类:数据预处理(分词)、训练Doc2vec模型,得到文档嵌入向量、创建数据集文档向量、划分数据集、训练分类器
用Word2vec进行文本分类:将文档的所有单词的向量进行加权平均得到一个文本向量表示。
在skip-gram的基础上进行改进,利用了子单词的信息(eat、eating在word2vec中没有进行任何参数共享)。
fastCNN整合了上下文信息,子单词的信息。中心词的嵌入是通过取字符的n-ram的向量和整个词本身进行计算,上下文单词是从嵌入表示中直接获取单词向量。
fastCNN比Word2vec慢,因为增加了子词的开销,但是有更好地句法词类比任务的性能,但是降低了语义类比任务的性能。
对CNN的输入层做了一些变形。
自然语言是一维数据,卷积核在一个方向上移动。
输入:通过词向量文件及词向量矩阵,将文本向量化,支持后续进行卷积池化等操作。
希望排序靠前的文档既是相关的,又是权威的。相关性可以通过余弦相似度度量,而权威性可以由文档本身属性决定,一个文档的外部链接越多,网站的权威性越高。
将整个WEB看成是通过超链接互相连接的有向图。每个网页是顶点,超链接是边。
考过
对每个网页给出一个正实数,表示网页的重要程度,整体构成一个向量。PR值越高,网站越重要。Pagerank 的计算是一个迭代的过程,直到收敛。在有向图上的随机游走构成马尔科夫链,每经历一个单位时间就转移一个状态。若当前节点在 i, 则下一个节点的概率是 m i , j m_{i,j} mi,j 这一概率只依赖当前状态,与过去无关。具有马尔科夫性。
但是web图一般不满足强连通,故要导入平滑项。
代数优化:
考过
TextRank算法基于PageRank,用于为文本生成关键字和摘要。
使用TextRank进行关键字提取:
把给定的文本 T 按照完整句子进行分割。
对每个句子,进行分词和词性标注处理
构建关键词图 G = (V, E)
V 为节点集合,由候选关键词组成
采用共现关系构造两点的边
迭代传播权重,直至收敛。
考过
CBIR 的关键技术: 图像特征提取和匹配
特征:颜色特征、纹理特征、形状特征(低级)、CNN特征
颜色是彩色图像最底层、最直观的物理特征,通常对噪声,图像质量的退化,尺寸、分辨率和方向等的变化具有很强的鲁棒性,是绝大多数基于内容的图像和视频检索的多媒体数据库中使用的特征之一。
颜色空间:在某些标准下用通常可接受的方式对彩色加以说明。
颜色直方图:在颜色空间中采用一定的量化方法对颜色进行量化,然后统计每一个量化通道在整幅图像中所占的比重。
考过
颜色矩:在颜色直方图的基础上计算出每个颜色的矩估计。颜色信息主要分布在低阶矩中。
一般说纹理就是指在图像中反复出现的局部模式和它们的排列规则,描述了图像或者图像区域所对应景物的表面性质。并不反映本质属性,随分辨率变化而有较大偏差,受光照反射等影响,造成误导。
不是基于像素点的,是统计计算包含多个像素点的区域,具有旋转不变性,对噪声有较强抵抗力。通常用于检索粗细、疏密等易于分辨的信息,
基于信号处理的方法:对图像信号的频率和方向进行选择性滤波,
考过
LBP特征:局部二值模式
局部形状特征:基于内容的图像检索方法利用从图像提取的特征来检索。
全局特征对图像的压缩率较高,但区分度不强。
考过
HOG特征:通过计算和统计图像局部区域的梯度方向直方图来构成特征。
SIFT特征
尺度不变的特征变换
在空间尺度中寻找极值点,提取出其位置、尺度、旋转不变量。
应用:物体便是、机器人地图感知导航等
尺度是客观存在的,尺度空间的获取要用高斯模糊来实现。高斯卷积是表现尺度空间的一种形式。
SIFT算法四个步骤:
特征点的确认两个过程:
可以精确确定特征点的位置和去除不稳定特征点
一特征点为中心,根据梯度方向直方图确定当前特征点的方向
使用图像梯度的方法求取局部结构的稳定方向——旋转不变性
SIFT优点:旋转、尺度、亮度不变性,稳定。
SIFT缺点:实时性不够高,有时特征点较少,对边缘光滑的目标无法准确提取特征点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。