景德镇网站建设哪家最好,赣州微和联网络科技有限公司,怎么做照片网站,连云港网站建设多少钱#x1f308; 个人主页#xff1a;十二月的猫-CSDN博客 #x1f525; 系列专栏#xff1a;#x1f3c0;山东大学期末速通专用_十二月的猫的博客-CSDN博客 #x1f4aa;#x1f3fb; 十二月的寒冬阻挡不了春天的脚步#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录
1… 个人主页十二月的猫-CSDN博客 系列专栏山东大学期末速通专用_十二月的猫的博客-CSDN博客 十二月的寒冬阻挡不了春天的脚步十二点的黑夜遮蔽不住黎明的曙光 目录
1. 第二章 网络爬虫
1.1 爬虫基础知识
1.2 爬虫分类
1.3 开源工具 Nutch
2. 第三章 网页分析
2.1 正则表达式
2.2 DOM模型
2.3 Beautiful Soup工具
2.4 Scrapy框架
2.5 不同爬虫工具比较
2.6 元搜索引擎
3. 第四章 爬虫与网站的博弈
3.1 Robot协议
3.2 User-agent
3.3 IP屏蔽
3.4 用户账号密码登录与cookie验证
3.5 模拟浏览器
3.6 懒加载
3.7 验证码
4. 第五章 数据抽取与包装器
4.1 信息抽取
4.1 Web信息抽取
4.2 Web数据抽取
4.2.1 Web数据抽取定义
4.2.2 Web页面定义
4.3 包装器
4.3.1 基于分界符规则
4.3.2 基于树路径规则
4.3.3 包装器分类
4.2 Web数据抽取方法
4.3 Web数据抽取评价标准
5. 第六章 包装器页面抽取方法
5.1 网页分类
5.2 多记录数据型页面的抽取方法
5.2.1 数据记录抽取
5.2.2 数据项抽取
5.3 单记录数据型页抽取方法
5.4 单文档型页面抽取方法
6. 第七章 Web数据存储
6.1 爬取数据存储
7. 第八章 Web数据预处理
7.1 结构化数据处理
7.2 非结构化数据处理
8. 第九章 文本预处理
8.1 基于词典的分词字符串匹配
8.2 基于统计的分词方法
8.2.1 基于HMM的分词
9. 第十章 文本表示
9.1 文本向量化
9.2 隐语义分析LSA
9.3 主题模型
9.4 文档哈希
10. 第十一章 语言模型统计语言模型、神经网络语言模型
11. 第十二章 词嵌入和文档嵌入
12. 第十三章 文本分类
12.1 文本分类
12.2 fastText
12.3 TextCNN
12.4 大语言模型中的Token化
13. 第十四章 Web图片数据
13.1 web图像
13.2 图像特征
13.3 颜色特征
13.4 纹理特征
13.5 形状特征
14. 总结 1. 第二章 网络爬虫
爬虫的三个任务
输入URL爬取网页内容HTML网页解析从HTML中获得想要的东西数据存储
1.1 爬虫基础知识
爬虫定义一种自动获取网页内容的程序通过解析HTML源码获得想要的内容。爬虫过程1.选择一个或多个URL作为seed url2.获取URL中的文档内容3.解析文档内容判重后选择性保留4.提取文档中指向其他网页的URL在判重后选择性放入队列中5.从队列中持续选择URL并重复2.3.4步骤。 判重技术URL判重、文档判重1.文档指纹每一个文档生成一个指纹用来快速判重吗例如MinHashSimHash算法2. URL判重建立散列存放访问过的网址。例如MD5等散列函数。爬虫必须具有的功能礼貌性显式和隐式礼貌、robots协议、鲁棒性、性能和效率、分布式、新鲜度、功能可拓展性 性能和效率性能考虑充分利用系统资源的程度效率考虑是否优先爬取“有用的网页”。爬取网页的方式分为BFS和DFS。BFS爬取网页优于DFS可以在有限时间内爬取更重要的网页我们认为一个网站的首页最重要。DFS爬取网页优于BFS避免握手次数太多提升性能一个网站一般只用一个服务器搭建如果一直在该网站深度爬取则只要握手一次。分布式意味着多台机器一起爬虫那他们的哈希表就要共享带来的问题1、分布式后有很多机器用于判重的哈希表太大一台服务器放不下2、每台下载服务器都要维护一张哈希表通信就成了分布式系统的瓶颈。分布式问题解决1、明确下载服务器的分工看到某个URL就知道要交给哪台服务器执行2、批量处理减少通信次数。
1.2 爬虫分类
基于整个web的信息采集门户搜索引擎和大型web服务提供商才会去干 增量式web信息采集 用户个性化Web信息采集 主题Web信息采集 1.3 开源工具 Nutch
Nutch是一个基于整合Web的信息采集工具
多线程宽度优先遵循机器人协议采用socket连接边爬取边解析页面评分
2. 第三章 网页分析
爬虫包括选择URL、获取网页、网页分析、数据存储。
网页分析基于网页HTML文档格式从每个HTML中抽取相关信息。角度有三个1.将HTML看作字符流使用正则表达式从字符中提取信息2.将HTML看作树结构使用DOM树来提取信息3.使用外部工具来提取信息
2.1 正则表达式
定义正则表达式是对字符串操作的一种逻辑公式。就是用实现定义好的一些特定字符进行组合根据自己想要提取的字符串特点按照逻辑定义好一个“规则字符串”用来表达对字符串的一种过滤逻辑。 如何使用正则表达式用多种元字符与运算符将小的表达式结合在一起来创建更大的表达式。
基于正则表达式的网页分析
获取数据前网页分析去除无用部分提取网页内的链接提取网页标题提取网页内的文本
正则表达式匹配的特点
正则表达式匹配速度快。表达能力弱只有正规文法的表达能力。在网页内容信噪比要求不高的情况下可以使用基于正则表达式的网页分析。网络噪声导航元素、广告、用户交互模块、无关文本块。 2.2 DOM模型
DOM是什么
DOM文档对象模型是处理结构化文档的一个模型其可以将文档转化为树结构存储从而实现任意处理该对象这称为“随机访问”机制。DOM将HTML处理为树状结构然后所有的元素以及他们的文字和属性都可以通过DOM树来操作和访问。
DOM与正则表达式比较
正则表达式匹配速度快但表达能力弱相当于正规文法。DOM在解析HTML时速度慢但其表达能力相当于上下文无关文法。正则表达式适用于信噪比要求不高时网页自动分类等需要进行网页去噪处理时用DOM树。 jsoup、HTMLParser等HTML解析器用于解析树是DOM模型的一部分。 2.3 Beautiful Soup工具
定义是一个工具箱为用户解析文档得到想要抓取的数据提供工具。
主要工具如下
从HTML文档构造DOM树构造DOM树可以选择解析器1.自带的html.parser速度慢但通用2.HTML5Lib不规范html文本不行3.lxmlpython解析库适用于html和xml解析解析效率高只会局部遍历 编码方式
中文操作系统默认ANSI编码Unicode国际通用编码utf8是Unicode编码在网络传输的一个变体节约数据量
Beautiful Soup工具优缺点
操作简单使用方便。在操作过程中会将整个文档树都进行加载然后再查询匹配因此消耗资源较多。
2.4 Scrapy框架 Scrapy是一个快速、高层次的屏幕抓取和Web抓取框架框架意味着整个或部分系统以及思想都是可以复用的仅仅需要修改/编写部分代码即可实现爬虫。
引擎负责数据和信号在不同模块间传递总指挥。调度器一个队列存放引擎发过来的request请求。下载器处理引擎发送过来的request请求其实是调度器发来的并将结果返回给引擎。爬虫处理引擎发送过来的respond其实是下载器发来的并将结果返回给引擎。管道接受引擎传过来的数据其实是爬虫处理的结果。下载中间件自定义下载拓展。爬虫中间件自定义respond和request请求的过滤。 Scrapy实现了底层多线程请求异步网络框架处理网络通讯。 制作Scrapy爬虫需要四步
新建项目新建爬虫项目scrapy genspider 爬虫名 域名明确目标编写items.py明确要抓取的目标制作爬虫制作爬虫开始爬取网页存储内容创建管道存储爬取的内容 我们需要手动写的只有Item和spider 用户关心的只有自己想要爬什么东西这些东西怎么存下来其他的部分都不关心。 一、CSV文件 特别的CSV文件是目前比较流行的一种文件存储格式以逗号为间隔 二、yield返回 yield是一种特殊的return方法。两者都会返回后面的值但是存在下面不同
return一次性返回所有的值并销毁局部变量yield返回的是一个迭代器里面包括所有yield的值。return后程序停止运行yield后程序继续运行。 三、meta字典使用 若解析的数据不在同一张页面中可以通过meta参数来传递数据。在向下一页发起请求的时候将本层数据以meta形式传入那么下一页的返回response中就会有meta字典的数据。 2.5 不同爬虫工具比较
爬虫包括以下几个方面
页面信息获取页面信息解析数据存储
前面介绍了几个不同的爬虫工具不同工具在上面三个方面存在不同。包括
利用request直接获取页面然后使用正则表达式解析html获取想要的东西存储数据。利用request获取页面使用bs4来解析html建立DOM树直接获得想要的东西。利用scrapy框架获取信息解析信息存储信息。 request和bs4
页面级爬虫功能库并行性考虑不足性能较差初学容易上手大型开发比较麻烦需要自己造轮子重点在于页面下载
scrapy
网站级爬虫框架并行性考虑好性能高初学比较麻烦大型开发比较容易很多轮子和功能都是已经封装好的重点在于爬虫结构
2.6 元搜索引擎 通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的搜索引擎来实现检索是对分布于网络的多种检索工具的全局控制机制。 元搜索引擎 一个搜索引擎包含多个搜索引擎结果合并 和 结果筛选/处理
3. 第四章 爬虫与网站的博弈
反爬虫策略希望能够在用户面前正常显示同时不给爬虫显示。
后端策略
user-agent检测referer检测cookie检测和账号密码检测IP限制批次
前端策略
懒加载FONT-FACE拼凑式对于数字不直接展示而是需要查询字符集才能识别数据
3.1 Robot协议
也称为爬虫协议、机器人协议等网站通过Robots协议告诉搜索引擎哪些页面可以抓取哪些页面不可以抓取 3.2 User-agent 简称UA是HTTP请求头的一部分向网站提供访问者的信息包括浏览器类型、语言、操作系统、CPU类型等等。每次请求都会发送给服务器通过这个标识服务器能够提供不同排版适应不同的浏览器给用户更好的体验。 3.3 IP屏蔽
网站策略
同一个IP频繁访问封IP限制某些IP访问
爬虫策略
多IP并行使用IP代理池增大爬取时间间隔代理池从各大网站上爬取可用IP定期检查是否可用。
3.4 用户账号密码登录与cookie验证
流程
通过第一个网页提交用户名和口令。后端接受请求后生成cookie和其他信息一起发给用户。用户保存cookie从文件中读取在访问其他页面时携带cookie信息。
工具
cookiejar
Cookie
记录了用户ID、密码、浏览过的网页、停留的时间等信息小文本文件服务器在HTTP响应头中发送给用户浏览器浏览器保存在本地用于维护客户端与服务端的状态。
3.5 模拟浏览器
selenium模拟用户进行交互登录输入键盘动作鼠标动作ajax响应等等。ajax传统网页如果需要更新就要加载整个页面使用AJAX可以异步加载页面。
这就导致了爬虫程序并不知道元素何时加载。因此如果还未加载就去定位爬取则会出现问题selenium提供了三种等待方式强制、显式、隐式等待 3.6 懒加载
定义为了避免页面一次性向服务器发送大量请求导致问题可以采用预加载和懒加载。懒加载是指在对象需要时再加载可以提升前端性能也可以反爬虫
实现原理 爬虫策略
简单方法寻找data、src2等暂存器属性。模拟浏览器方法通过selenium去模拟浏览器页面上下滑动然后获取src。 Selenium优点 模拟浏览器操作可以直接获得渲染后真正的网页代码。绕过Ajax和一些JavaScript逻辑。 Selenium缺点 速度太慢。经常会更新。太老的东西了很多网站有针对Selenium的反爬。 3.7 验证码
图片识别验证码
获取图片Selenium可以通过尺寸坐标定位到图片。然后截图获取。图片处理Pillow和PIL模块可以对图片做很多处理方便下面的OCR。OCR光学字符识别将图像中的文字转化为文本。
滑动验证码
判断验证码什么时候出现。验证码出现时判断何时加载完成。自动识别出鼠标拖拽的初始位置和终止位置。模拟鼠标拖动。检验是否成功。
Selenium获取初始位置和终止位置的方法
获取不带缺口的图片再获取带缺口的图片。比较两种图片各个坐标的灰度值找到初始位置和终止位置进行滑动。滑动不能过于匀速同时要伴随y轴上下抖动。 由于selenium是在后台完成的滑动而有些平台会检测鼠标光标未移动可以使用PyAutoGUI。假如不能获得不带缺口的图片则可以将缺口图片和滑块进行图像匹配。
4. 第五章 数据抽取与包装器
信息抽取把文本里包含的信息进行结构化处理变成表格一样的组织形式。输入是原始文本输出是固定格式的信息。
信息抽取包括实体抽取、关系抽取、事件抽取多元关系。 4.1 信息抽取
实体抽取NER
NER是NLP中一项非常基础的任务。NER是信息抽取、问答系统、句法分析等众多NLP任务的重要基础工具。从狭义来说实体是指现实世界中的具体或抽象实体广义来说包含时间、数量表达式。NER是一种序列标注问题。
关系抽取
句法分析
事件抽取
知识获取
4.1 Web信息抽取 Web信息抽取是将Web作为信息源的一类信息抽取就是从半结构化的Web文档中抽取信息。其核心
将分散Internet上的半结构化的HTML页面中隐含的的信息点抽取出来。并将其转化为更加结构化语义更清晰的形式表示。为用户在Web中查询数据应用程序直接利用Web中的数据提供便利。
通常包括一下几个步骤
将Web网页进行预处理用一组信息模式描述所要抽取的信息 使用模式匹配方法识别指定的信息模式的各个部分 对文本进行合理的词法、句法及语义分析进行上下文分析和推理确定信息的最终形式将结果输出成结构化的描述形式以便于查询分析
4.2 Web数据抽取 基本前提包含数据的页面是通过页面模板生成的。
4.2.1 Web数据抽取定义 Web数据抽取是指从页面中将用户感兴趣的数据利用程序自动抽取到本地的过程。为了能够保证抽取的准确性必须能够识别页面模板 T是页面模板。WTdW为页面d为数据。C是相似页面之间不变的部分包括导航、版权声明等。L是页面的格式规范数据的格式规范。S是从页面数据中观察到的数据模式。
4.2.2 Web页面定义 Web数据抽取问题可以转化为从已知的W中逆向推导出T然后还原出D的部分。
4.3 包装器
包装器是一个软件过程。过程工程开发中的最佳实践称为过程。
这个过程使用已经定义好的信息抽取规则将Web页面中的信息数据抽取出来转化为结构化的格式去描述。因为是最佳实践因此一个包装器一般仅仅针对某一种数据源中的一类页面。包装器运用规则执行程序对实际要抽取的数据源进行抽取。包装器的核心是抽取规则。抽取规则的定义取决于你怎么看待HTML文档。
4.3.1 基于分界符规则
角度将HTML文档看作字符流
方法给出数据项的起始和结束分界符将其中的数据抽取出来
例如某一个数据项的起始规则是SkipToi“结束规则是SkipTo/i”。意味着从文档的起始忽略所有的字符直至找到HTML标签 i接着忽略所有字符直至 /i中间部分即所需的字符串。
另外基于正则表达式的网页分析。
4.3.2 基于树路径规则
角度将HTML文档看作树结构
方法将文档看作树结构将所抽取的数据存储在树节点中
首先根据HTML标签将文档分析成树结构如DOM树 然后通过规则中的路径在树中搜索相应的节点 最终找得到所需数据
4.3.3 包装器分类 爬虫分为三步骤 下载页面页面数据提取数据存储 手工方法爬虫
包装器归纳使用机器学习的方法产生抽取规则属于有监督学习
网页清洗有些页面结构不规范例如前后标签不对称没有结束标签等。网页标注给网页中的某个位置打上特殊标签表明这是要抽取的数据。包装器空间生成对标注数据生成XPath集成空间候选规则对生成的规则进行归纳形成若干个子集归纳的规则是在子集中XPath能够覆盖多个标注的数据项。
自动抽取通过挖掘多个数据记录中的重复模式来寻找这些模板是无监督模型步骤
包装器训练将一组网页通过聚类将相似的网页分成若干组每组的页面获得不同的包装器。包装器应用将需要抽取的网页和之前聚类后的网页进行比较在某个分类组下则使用该分类下的包装器来获取网页中的信息。
4.2 Web数据抽取方法
Web数据抽取目的是获得页面数据需要借助一个或多个页面的逆向推导得到页面模板T。
按照自动化程度来区分可以分为
1. 人工抽取
人工分析出页面模板XPATH、正则表达式页面模板抽取规则包装器。针对具体问题生成具体的包装器人工包装途径容易采纳在具体问题上可以得到满意的结果。只适合小规模的即时的数据抽取不适合大规模的数据抽取。
2. 半自动抽取
由计算机页面模板抽取数据生成具体的包装器但页面模板分析还需要人工参与。设计一个描述页面模板的概念模型和一套用来描述抽取意图的规则语言用户通过一定的辅助工具利用概念模型分析出页面模板使用规则语言表面抽取意图。计算机根据分析出的页面模板和抽取意图生成包装器完成抽取。这种途径比手工包装更加系统化能大大减少工作量。
3. 自动抽取
仅仅需要很少的人工参与或者完全不需要人工参与。更加适合大规模、系统化、持续性的Web数据抽取。自动抽取工作中页面模板的分析通过序列匹配、树匹配或利用可视化信息完成并且直接给出抽取结果。
4.3 Web数据抽取评价标准
召回率抽取到的正确结果和要抽取页面的全部结果的比即 R|Ra| / |R|。准确率指抽取到的正确结果和抽取到的全部结果的比即 P|Ra| / |A|。F 值召回率R和查准率P的加权调和平均值综合考虑了二者 抽取的自动化程度这项标准用来衡量用户在抽取过程中的参与程度分为手工、半自动和全自动三类。适应性指在该页面的内容和结构有较小变化的情况下该抽取方法或工具有自适应能力仍然能够正常工作。修正率其含义是需要手工调整使得准确率和召回率达到100%的Web数据库数量。
5. 第六章 包装器页面抽取方法 第五章本质上是在带大家入门一下数据抽取的概念以及包装器的概念。然后简单说了包装器按自动化程度分为人工编写、半自动化编写、全自动化编写按实现方法分为人工编写、包装器归纳、自动生成。本章我们会真正来带大家看看如何用包装器来实现页面抽取。首先从人工编写爬虫方法生成包装器完成数据抽取和信息抽取开始
5.1 网页分类 想要实现手工编写我们首先要对网页进行一个分类不同类型的网页使用不同的包装器方法去提取信息和数据。
按照页面内数据组织形式的不同分为
1.单记录页面页面中仅仅嵌入一个记录
详情页 A Authority每一页只关注一个特定对象也有其他相关和无关信息
2.多记录页面页面嵌入多个记录
同结构的记录在页面内重复排列出现。列表页 H。列表在页内的特定位置。每一页有多个数据记录。 按照页面内容的不同分为
1.数据型页面页面内容是数据
页面中嵌入了一个或多个结构化的数据记录。页面展示的是带有属性标签和数据值的信息。数据记录按照一定的格式规范和属性次序被载入在页面中。 2.文档型页面页面内容是文档
页面嵌入的是半结构化文档内容或文档标题。页面展示的是文本型信息。 两个不同角度的分类合起来总共有四种页面类型
单记录数据型页面多记录数据型页面 单记录文档型页面 多记录文档型页面
5.2 多记录数据型页面的抽取方法
多记录数据型页面是指页面由多条结构相同的数据记录组成抽取方法
首先从网页中识别数据记录边界抽取数据记录从数据记录中抽取数据项 1. 数据记录抽取 抽取数据 获得页面模板 逆推导 2. 数据记录抽取 抽取数据 直接抽取数据 章节逻辑 5.2.1 数据记录抽取 人工处理包装器也就是爬虫。主要有两个角度的思路1.看成字符流用正则表达式2.看成树结构用DOM树完成。这里我们想要从树结构角度去看看怎么抽取数据记录。抽取数据记录步骤如下
确定数据区域比较DOM树算法、语义块算法计算数据记录的边界利用规则得到数据记录
确定数据区域 方法1·比较DOM树算法从两颗DOM树根节点开始递归深度遍历如果两个节点相同则递归下一层否则标记为不同子树返回上一层。 方法2·语义块算法 语义块HTML文档的片段是逻辑上满足模式定义的一个HTML文档子集。一个语义块可以进一步划分为最小语义块。最小语义块是包装器在生成和维护中的最基本抽取单位。 方法计算数据记录边界本质上就是确定语义块所在的层次。首先初始化DOM树的路径组从DOM树根开始逐棵子树去考察不断将树比较结果划分到各个路组直到发现某一层次存在语义块集合需要设定好阈值M 规则1、2关键字频率共同路径【关键字频率多那就是数据记录的共同路径可以下一层去找如果少了很多那就说明进入数据项内部了回溯确定语义块层次】 计算数据记录边界 方法利用规则3、4、5来划分数据记录边界 5.2.2 数据项抽取 数据项边界–指的就是判断一个数据项应该覆盖HTML树结构上的多少个节点。 数据项识别 规则6位置相同标签序列相同就是不同数据记录的同一个字段。
数据项匹配 除了直接使用规则6来判断数据项是否是同一个字段。还可以使用两个数据项之间的相似性来判断是否是同一个字段
出现路径规则来自不同语义块的两个数据项如果具有相同的角色则它们具有相同的出现路径。视觉规则来自不同数据记录的两个数据项如果是相同角色(是相同字段)则它们有相同的视觉信息。上下文规则来自不同数据记录的两个数据项如果是相同角色则它们具有相同的上下文信息。文本特征规则来自不同数据记录的两个数据项如果是相同角色则它们具有相似的文本特征。 5.3 单记录数据型页抽取方法
增量式抽取以增量方式推导网页模板。 连续性数据抽取最好的办法就是确定页面模板然后根据页面模板页面来逆推导页面数据。 页面模板存在变化的可能性。虽然单记录数据型页面仅仅有一个记录页面模板相对固定但是也有变化的可能性因此引入部分树对齐算法增量推导网页模板
首先选择一棵树作为对齐开始的种子接下来将剩下的树逐个和种子进行对齐首先处理其中一棵树T2。T2无法和种子T1对齐属于歧义情况。于是跳过T2.接下来T1和T3对齐也就是通过T1和T3的网页模板我们推导出了一个新的网页模板。用新生成的网页模板和T2继续对齐如果还剩下跳过的页面就继续对齐直到不能生成新的页面模式为止。部分树对齐后会产生唯一页面模式用来抽取数据 5.4 单文档型页面抽取方法 抽取页面中的文本信息只有一个记录的文本信息 结合视觉信息的抽取方法
基于一个观察结果网站中正文普遍占据绝大部分位置文本块长度最长 存在问题
短正文没法很好的提取到包含大量评论的页面没法很好提取到 抽取路径学习 1. 抽取路径学习除了使用种子点seedElement找出正文内容外在内容返回前还将正文的抽取路径保存到数据库中。 2. 按照基于视觉信息的抽取抽取出的路径与数据库比对一致时就没问题不一致就需要进行选择如果页面发生变化则选择基于视觉信息如果是短正文/评论页则选择基于数据库信息 改进的自适应数据抽取方法
本质是抽取路径法中的数据库信息和视觉信息的自动选择基于贝叶斯最优决策的方法所用的特征包括 最终决策公式为 6. 第七章 Web数据存储
6.1 爬取数据存储
结构化文件存储
结构化文件Excel、CSV、JSON、XML、PICKLECSV以逗号相隔、存储容量少JSON是存储和交换文本信息的语法比XML小在数据交换中起到载体的作用XML用来交换数据而不是展示数据PICKLE用于序列化和反序列化python对象。pickle是二进制序列化格式json是文本序列化。JSON可读pickle不可读。JSON可互操作PICKLE仅仅在python中使用。
结构化数据库
Sqlitepython内置的一个轻量型关系数据库。MySQLMongoDB
非结构化文件存储
txt文件JPG文件Hbase等非结构化数据库
7. 第八章 Web数据预处理
7.1 结构化数据处理
数据清洗
缺失值处理直接删除/填充新值噪声处理识别、直接删除、极值处理到一个正常区间不一致处理删除再填充新值
结构化数据应用
数据集成展示用机器学习处理数据展示结果
特征工程
特征在观测现象中一种独立、可测量属性特征工程把原始数据变成特征的过程目的是为了更好的训练数据 方法包括特征选择、特征提取、特征组合、特征构造 主成分分析法PCA无监督学习将互相相关的特征通过线性组合使得数据变换到新的空间可能最大程度保持原来的信息并且特征之间互相不相关。
机器学习的数据预处理
归一化把数据特征转化为相同尺度的方法。最近邻分类器就是尺度敏感的尺度大的特征起主导作用也有尺度不变性算法。线性分类器尺度不变。【加速收敛、统一尺度、减少冗余信息、提高泛化能力、不能直接解决过拟合问题】 标准化Z-score让每一个特征均值为0方差为1白化消除不同特征之间的相关性降低输入数据特征之间的冗余性输入数据经过白化处理后特征之间的相关性较低并且特征具有相同的方差白化的一个主要方法就是PCA。【特征去相关方差归一化】
连续值和离散值
离散值类别特征编码标签编码、独热编码 连续值二值化、分箱、聚类、熵、决策树
7.2 非结构化数据处理
文本数据
SQL查询NLP文本特征分词、预处理、向量描述
文本特征
IRIR模型、倒排表、搜索引擎文本处理文本分类、文本聚类、情感分析
非结构化数据特征描述
图像数据——图像特征——图像识别、检索文本图片特征——跨模态检索、文本生成图片
8. 第九章 文本预处理
语言是具有组合性的只有组合在一起语言才有意义。预处理将文档拆解成单词以便计算机程序能够解释。
步骤
文档解析移除文档中不必要的格式比如HTML标签。句子分割从文档拆成句子。分词词条化句子变为单词【基于词典的分词、基于统计的分词、基于理解的分词】。词规范化归一化不同表达方式归一化、词干还原去除单词两端词缀的过程。去停用词删除不需要的词冠词、介词、代词等。
8.1 基于词典的分词字符串匹配
步骤
按照一定策略拿出汉字串然后与“词典”中的词条进行匹配如果匹配成功那么这个汉字串就是一个词遇到不认识的字串就分割
策略
正向匹配和逆向匹配最大匹配和最小匹配 8.2 基于统计的分词方法
思想如果相连的字在不同的文本中出现的次数越多就证明这相连的字很可能就是一个词。因此我们只要判断各个字组合出现的频度就可以判定是否为一个词。 主要统计模型有
N元文法模型隐马尔可夫模型条件随机场模型深度学习模型
实现上会将字符串匹配和统计模型结合起来使用 8.2.1 基于HMM的分词
马尔可夫过程未来只与现在有关与过去无关具有无后效性特点的过程称为马尔可夫过程。
举一个例子天气预测可以认为就是一个马尔可夫过程今天的天气不会影响后天只会影响明天 HMMHidden Markov Model 隐马尔可夫过程状态隐藏马尔可夫过程
举个例子 模型 模型涉及的两个问题
概率计算问题模型AB矩阵 观察值输入 状态值输入 ——》 观察值概率。模型训练梯度下降最大化观察值概率模型使用观察值模型AB矩阵 ——》 状态值 本质上模型在通过学习明白观察值和状态值之间的联系然后我们给出观测值模型就能够预测出状态值。 概率计算问题
给定 HMM即求某个观察序列的概率。
例如给定一个天气的隐马尔可夫模型包括第一天的天气概率分布天气转移概率矩阵特定天气下树叶的湿度概率分布。求第一天湿度为 1第二天湿度为 2第三天湿度为 3 的概率。
找到所有状态序列得到各状态概率得到每种状态概率对应的观察概率求和。 模型训练
给定一个观察序列得到一个隐马尔可夫模型。
已知第一天湿度为 1第二天湿度为 2第三天湿度为 3。求得一个天气的隐马尔可夫模型包括第一天的天气天气转移概率矩阵特定天气下树叶的湿度概率分布。
如果产生观察序列 O 的状态已知(即存在大量标注的样本), 可以用最大似然估计来计算 的参数Baum-Welch 算法(前向后向算法)描述
如果不存在大量标注的样本期望值最大化算法(Expectation-Maximization, EM) 模型使用 在模型已经训练好的前提下观测值和状态值已经得到绑定。通过AB矩阵将状态值和观测值在向量空间中相当靠近对于分词任务观察值为所有的汉字状态值为BMES(begin\middle\end\single)。 HMM分词 Viterbi算法如下
本质就是动态规划算法计算得到最优的路径也就是状态值集合。具体可以看博客
(11 封私信) 隐马尔科夫模型HMM — 维特比算法Viterbi - 知乎
动态规划算法带有记忆功能不会重复计算子问题的穷举法 9. 第十章 文本表示
前一章我们学习了文本预处理。文本预处理包括
文档解析句子分割分词词规范化去停用词
在预处理后我们得到这个文档处理后非常干净的一堆词语。但是这些词语仍然不能被模型直接使用因此本章来学习文本表示把词语转化为可以被模型使用的表示形式。
9.1 文本向量化
把字词处理成向量或矩阵以便计算机能进行处理。上一章预处理的结果词条集合、词条序列。文本向量化文档——词条集合——无语序信息文档——词条序列——有语序信息 离散表示文本词袋模型、TF-IDF
对于给定文本。忽略单词出现的顺序和语法等因素。将其视为词汇的简单集合。文档中每个单词的出现属于独立关系。 分布式表示文本
使用低维向量来表示文本。每一维表示一个词的语义或主题信息
9.2 隐语义分析LSA
离散文本表示有词袋模型和TF-IDF模型
分布式文本表示有LSA、主题模型、文档哈希 LSA对文本进行降维仅仅考虑其中主要的语义因此称为隐语义分析。
步骤
建立词频矩阵为每一个文档建立一个初始向量。 计算词频矩阵的奇异值分解。 对于每一个文档进行提取部分特征值后形成的新向量代替原有向量。 使用转化后的新向量表示文档进行后续计算 使用新的A来表示各个文档的向量 优点
文章和单词都能映射到一个语义空间语义空间的维度能够明显少于原向量空间缓解了词袋法造成稀疏矩阵的问题
缺点
无法解决多义词问题。特征向量语义空间等没有对应的物理解释。LSA和词袋模型一样没有考虑词语的先后顺序也没有考虑句子/词语的相似关系。SVD计算复杂度高。
9.3 主题模型
pLSA主题模型 LSA是纯粹从数学矩阵分解保证最小损失的角度去处理而pLSA则是从统计学/概率学的角度去看待LSA。 根据文档-单词信息训练出单词-主题信息主题-文档信息。我们想要实现的是文档的主题划分模型。也就是主题-文档信息但是手头只有单词-文档信息数据缺少单词-主题信息不完整。因此需要EM算法在E步估计单词-主题信息伪标签。 可以把EM理解为深度学习中的伪标签。他们都是处理数据信息不完整的问题。 LSA隐含高斯分布假设pLSA多分布假设更符合文本特性。不再是人为限制r的数量而是从统计学去学习。在数据不充足的情况下没有引入先验经验而是直接用模型估计。受初始值影响大。 LDA主题模型
LDA和PLSA思想一致仅仅是将S改为D也就是引入先验分布狄利克雷分布Beta分布 9.4 文档哈希
思想把任意长度的输入文字、图像转化为固定长度的输出。
目标哈希码的相似程度能够直接反映输入内容的相似程度
文档哈希判断重复
文本预处理文档理解、句子分割、分词、词规范化、去停用词文本表示特征表示将高维特征向量映射成指纹通过比较两篇文章的f-bit指纹的汉明距离来判断是否重复 shingle算法PPT未讲
局部敏感哈希LSH
MinHashSimhash Simhash算法
分词将语句分词计算词的特征向量为每一个特征向量设置权重。hash选择simhash的位数通过hash函数为每一个特征向量计算hash值。加权在hash值基础上给特征向量加权遇到1则hash值直接乘权重遇到0则取-1乘权重。 合并将上述各个特征向量的加权结果累加变成一个序列串。 降维对于合并后的结果如果大于0则置1否则置0.
10. 第十一章 语言模型统计语言模型、神经网络语言模型 对于文本这个非结构化数据我们前面几章研究的算是比较透彻了。从一开始文本预处理文档解析、句子分割、分词基于词典的匹配算法、基于统计的方法、词规范化、去停用词到文本表示文本向量化、LSA、Plsa、LDA、主题模型、文档哈希。 接下去我们来学习语言模型算是文本表示之后的应用部分。在我们得到文本的向量表示之后可以利用这个信息来训练一个语言模型。它能够反馈一个句子的可信度也可以生成新的句子看具体任务。 n-gram语言模型 根据大数定理只要统计量足够相对频度就等于概率。但是当句子长了之后w1w2.....wn组合实在太多了会导致概率几乎为0。解决办法1.增加数据量2.平滑技术降低已出现的概率从而使未出现的非03.神经网络模型
提出n-gram语言模型 理论上n越大越好。经验上trigram用的最多。尽管如此能用bigram绝不使用trigram。 神经网络语言模型NNLM
N-gram模型无法建模更远的依赖关系。N-gram模型无法建模出词之间的相似度。N-gram模型泛化能力不够强。
最早神经网络模型结构
1.线性Embedding层 2.中间层 3.输出层 优点
词语之间的相似性可以通过词向量来体现。自带平滑功能。
11. 第十二章 词嵌入和文档嵌入 文字在经过预处理的五个阶段然后利用比较合适的方法进行文本表示。之后想要使用这些文本进行应用因此设计语言模型。当然在语言模型中延申出更好的文字表示词向量。语言模型分为统计语言模型n-gram语言模型、指数语言模型、神经网络语言模型nnlmword2vec。 其实文本表示章节就是在研究怎么把文本这个非结构数据表示为向量。但是无论我们用什么办法都无法很准确的描述向量表达能力不够例如无法表达相似关系。直到深度学习的出现其在应用的过程中首先就会将事物映射为相当复杂的向量然后再做处理特征提取。可以这么说
深度学习 特征提取特征使用深度学习模型 特征提取特征使用特征提取就是转化为合适的向量特征使用就是利用这些特征完成具体的任务分类、目标检测、自然语言生成等 对预测任务的理解 材料罐 特征铁矿石/木炭/石英炼金炉 模型不同配方函数每个材料提炼后的精华 模型特征提取精华的融合 模型特征使用改进炼丹炉 反向传播训练模型从初级升到高级炼丹炉 换模型温度控制 学习率目标产物 预测值黄金 人类说话本质上 输入是前面说过的话输出是要说的下一个字例如”我要去“通过前面这三个字大脑这个模型就会输出我心中最想去的地方作为输出”拉萨“那如果我去过”拉萨“了我的大脑模型就变了我会输出”云南“ NNLM存在的问题需要对词典中所有word都算一遍概率训练、推理速度都太慢。
前半部分训练词语的特征向量。后半部分通过词向量训练神经网络语言模型。
word2vec
CBOW模型利用周围词来计算中心词概率特征融合方法采用点对点加法。Skip-Gram模型根据某个词来计算周围词的概率。用成对单词进行训练input word,output word)输出是概率分布。引入层次和负采样来解决NNLM计算词典所有word的问题。
Doc2Vec 不仅能学习单词得向量还能学习文本的向量表示。用于聚类、分类。训练过程时同时训练词向量和段落向量。词向量随滑动窗口的改变而改变而段落向量只要在本段就不会改变。 Glove 改进了word2vec只能利用窗口中的局部信息的缺陷成功利用全语料库的信息。词共现矩阵表示了两词不同文档出共现次数。 词嵌入使用深度学习来进行文本表示将文本转化为词向量同时尽可能减少信息损失 不同方法本质都在想办法尽可能保留下文本信息。 12. 第十三章 文本分类
12.1 文本分类
定义用计算机对文本或其他实体按照一定的分类体系或标准进行自动分类标记。
应用
情感分析积极、消极、中性主题分析金融、体育、军事意图识别天气查询、歌曲搜索问答任务是、否自然语言推理导出、矛盾、中立
基本结构
特征表示词袋模型、TF-IDF、统计语言模型n-gram模型、神经网络语言模型nnlm等词嵌入。分类模型浅层深度学习参数较少在小规模上效果好、深度学习模型结构复杂对数据依赖性强
Doc2Vec文本分类
数据预处理训练Doc2Vec模型得到文档嵌入向量创建文档向量并划分数据集训练分类器
Word2Vec文本分类
方法流程同Doc2Vec类似区别在于是对文档中所有单词的嵌入向量加权平均得到文档向量。
12.2 fastText
Word2Vec的局限性
Word2Vec需要为每一个单词创建嵌入它不能处理任何在训练中没有遇到过的单词。对于词根相同的单词如eating、eat和eaten这些单词应该彼此有联系存在参数共享。
fastCNN改进的是特征提取这一块 找特征向量的时候以字符级去确定特征向量而不是整个单词。在训练中由于利用n-gram提取单词中子部分特征因此存在许多共享的部分eat和eating存在共享。因此训练速度更快。存储空间更大了因为需要存储更多词向量。 12.3 TextCNN 将计算机视觉中用于图像识别的CNN迁移到自然语言领域。改进的是特征使用这一块。准备不同大小的卷积核提取不同的信息然后利用池化层和全连接层来使用这些信息。TextCNN的卷积核只能在序列方向移动。
12.4 大语言模型中的Token化
前面我们对文字这个非结构数据的处理流程是文本预处理、文本表示、文本应用。
文本预处理里面提到分词从基于词典模型 到 基于统计模型HMM模型
但是这一类的模型仍然存在问题
词典依赖性。形态处理能力不足。歧义处理能力弱。跨语言适配差。
于是 分词中的全新流派——Token出现了
从此以后我们是按照Token去分词而不是按照词去分词~~
Token的优点
自由把词组合或拆分作为Token单位开放词汇表形态处理能力强跨语言适配性强 BPE
初始化词汇表 统计所有单词及其字符的出现频率 迭代合并高频字符对 终止条件 本质就是在 考虑字符 和 考虑词符 之间去找了一个平衡点。 核心思想 出现频率高相邻则合并有两个目的1.参考哈夫曼树的思想2.相邻意味着是一个词本身就要合并。需要Token细粒化到什么程度由预设词汇量决定。 优点 从字符层级去考虑分词。变为开放词汇表同时提高了形态处理能力。进行了有效压缩减少了全局分词的弊端。 13. 第十四章 Web图片数据 前面好多章我们一直在讲非结构数据中的文本部分。本章开始我们就来讲讲图片这个非结构数据。
13.1 web图像
图片分类
矢量图形 SVG图片基于XML可以用代码来画图随时插入到HTML中文字保留可编辑可搜寻状态 位图图像Bitmap使用颜色网格像素bit来表现图像。JPEG和GIF格式都是位图。
13.2 图像特征
从特征抽象程度来分
低层特征语义特征 从特征来源来分
局部特征全局特征
图像常见特征有
颜色特征纹理特征形状特征CNN特征
13.3 颜色特征
颜色是彩色图像最底层、最直观的物理特征通常对噪声图像质量的退化、尺寸、分辨率等变化有很强的鲁棒性。全局特征 颜色空间用数字表现颜色的抽象数学模型
RGB空间三种原色光描述自然界所有颜色用相互垂直的坐标轴来表示是一个加光模式。并不是完全符合人类对颜色相似性的视觉感知。 HSV空间人类视觉对亮度的敏感度大于色相的敏感度因此分为三种分量色相、饱和度、亮度。 转化公式RGB向HSV的转化公式 颜色直方图在颜色空间中采用一定的量化方法对颜色进行量化然后统计每一个量化通道在整个图像中所占的比重。
描述的是不同色彩在整幅图像中所占比例。描述分布特性。具有平移、尺度、旋转不变性。适合描述那些难以自动分割的图像。任何图像都有唯一一个直方图但是可能不同图像有相同的颜色分布直方图可以分割承子图像建立索引来区分。 颜色矩在颜色直方图的基础上计算出每个颜色的矩估计。 直方图是各个像素颜色的统计数据颜色矩是各个像素颜色的统计摘要用特征来表示。前者是全部说出来后者是把颜色统计信息转为数学特征去表示。
一阶矩均值二阶矩方差三阶矩斜度四阶矩峰态
使用这些特征量代替颜色的统计值从而代表一张图片。可以减少特征量三个颜色分量每一个使用三个低阶矩3*39就可以表示减少存储空间。
13.4 纹理特征
纹理特征指在图像中反复出现的局部模式和它们的排列规则描述了图像或者图像区域所对应的景物的表面性质。并不反映本质属性随分辨率变化有较大偏差受光照反射等影响造成误导。
不是基于像素点的特征而是基于像素区域的特征。是一种统计特征具有旋转不变性但是平移会发生改变。 基于信号处理方法描述纹理特征
对图像信号的频率和方向进行选择性滤波。基于信号处理的方法也称为滤波方法。常见的图像滤波方法有傅里叶变换和Gabor滤波器。 LBP特征局部二值模式。结合了纹理图像结构和像素统计关系的纹理特征描述方法。
一种有效的纹理描述算子对光照具有不变性具有旋转不变性灰度不变性 一般不用LBP图谱作为特征向量用于分类识别而是采用它的统计直方图作为特征向量。图谱和位置有很大关系会因为位置没有对准产生很大误差可以将图片划分为若干个子区域为每一个子区域建立LBP统计直方图。
13.5 形状特征
低级图像特征主要有颜色、纹理和形状。低级图像特征包括局部特征和全局特征全局特征是基于整幅图像提取的局部特征是基于图像的某个区域提取的。局部形状特征LBP、HOG、SIFT HOG特征方向梯度直方图计算和统计图像局部区域的梯度方向直方图来构成特征
梯度概念就是像素值变换最快的方向。在一幅图像中局部目标的表象和形状能够被梯度或边缘的方向密度分布很好的描述
HOG步骤
灰度化将图像看作灰度三维图像。采用Gamma矫正法对输入图像进行颜色空间标准化减少噪音、局部阴影等干扰。计算图像每个像素的梯度将图像划分为小Cell统计每个cell的梯度直方图为每一个局部区域保留一个编码充分考虑局部信息。将每几个cell组成一个block得到该block的HOG特征表述从局部信息中提炼稍大一点的全局信息非完全全局。将图像内所有block的HOG特征描述串联起来得到该图像的HOG特征。 HOG优点
由于HOG是在图像的局部方格单元上操作所以它对图像几何的和光学的形变都能保持比较好的不变性因为这两种形变只会出现在更大的空间领域上。在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下只要行人大体上能够保持直立的姿 势可以容许行人有一些细微的肢体动作这些细微的动作可以被忽略而不影响检测效果。特别适合人体图像检测。 SIFT特征
尺度不变特征转换。在空间尺度中寻找极值点提取出其位置、尺度、旋转不变量。应用机器人地图感知导航。尺度是客观存在的尺度空间的获取要用高斯模糊来实现。高斯卷积是表现尺度空间的一种形式。
SIFT算法步骤
建立尺度空间高斯差分金字塔。在不同尺度空间中检测极值点进行精准定位和筛选。特征点方向赋值位置、尺度、方向等计算特征描述子
14. 总结 终于更新完了不得不说Web数据管理的知识体量还是大的比数据可视化大多了。希望这篇博客能够给未来的学弟学妹们一点帮助。 如果想持续关注系列文章可以订阅
山东大学期末速通专用_十二月的猫的博客-CSDN博客
如果想学习计算机其他方面的核心知识都是猫猫的优质好文哦可以订阅
计算机网络_十二月的猫的博客-CSDN博客软件工程与面向对象_十二月的猫的博客-CSDN博客、操作系统与数据库_十二月的猫的博客-CSDN博客编译原理_十二月的猫的博客-CSDN博客算法启示录_十二月的猫的博客-CSDN博客 如果觉得本文对你有帮助友友们可以点个赞收个藏呀~