山东大学软件学院WEB数据管理 复习串讲笔记(2025)
文章目录
- 2025WEB数据管理 串讲
- 第2讲 网络爬虫技术
- 爬虫定义
- 爬取过程(例子不考)
- URL normalization(规范化)
- 文档指纹FP
- URL 判重
- 爬虫功能
- 第3讲 网页分析技术
- 正则表达式 Regular Expression
- 定义
- 作用
- 特点
- 文档对象模型(document object model,DOM)
- 定义
- 正则表达式与DOM树方法的比较
- HTML解析器 HTML Parser
- Beautiful Soup 模块
- RE 与 BeautifulSoup 的比较
- Scrapy 介绍
- 第4讲 爬虫与网站的博弈
- Robot 协议
- User-agent
- IP屏蔽
- 用户登陆
- 模拟浏览器进行交互
- 验证码
- 第5讲 数据抽取与包装器
- Web数据抽取
- 包装器
- Web 数据抽取评价标准
- 第6讲 包装器页面抽取方法
- 网页的分类
- 多记录数据型页面的抽取方法
- 单记录数据型页抽取方法
- 单文档型页面Authority抽取方法
- 结合视觉信息的抽取方法
- 抽取路径学习/路径规则
- 改进的自适应数据抽取方法
- 第7讲 web数据存储
- 爬虫数据存储
- scrapy 支持的数据格式
- CSV(comma-separated values)
- JSON文件
- XML文件
- 存入数据库
- 第8讲 web数据预处理
- Web上爬取的数据
- 数据无量纲化
- 归一化和标准化的区别
- 如何选择 归一化 or 标准化
- 为什么要归一化 / 标准化?
- 离散化的自动方法
- 类别特征编码
- 白化 Whitening
- 第9讲 文本预处理
- 中文分词(Chinese Word Segmentation)
- 定义
- 方法1:基于理解的分词方法
- 方法2:基于字符串匹配的分词方法
- 方法3:基于统计的分词方法
- 基于HMM的中文分词方法
- 隐马尔科夫模型的三个基本问题
- HMM实现中文分词
- 第10讲 文本表示
- 文本向量化
- 主题模型 topic modeling
- PLSA主题模型
- LDA主题模型
- 文档哈希
- 第11讲 语言模型
- 统计语言模型
- N-Gram语言模型
- 神经网络语言模型
- NNLM
- 第12讲 词嵌入和文档嵌入
- 词向量化
- Word2Vec
- 3个用处
- CBOW(Continuous Bag-of-Words)
- 1. 核心思想
- 2. 模型结构
- 3. 数学表示
- 5. 应用
- Skip-Gram
- 1. 核心思想
- 2. 模型结构
- 3. 训练优化
- 4. 特点
- Doc2Vec
- Glove
- 损失函数公式
- 第13讲 文本分类
- `FastText`
- 子词嵌入
- `FastText` 文本分类
- TextCNN
- 第14讲 WEB图像数据
- 颜色特征
- 颜色直方图 ColorHistogram
- 颜色矩 ColorMoment
- 纹理特征
- LBP特征 Local Binary Patterns
- 局部形状特征
- HOG特征
- SIFT特征
2025WEB数据管理 串讲
题型:填空、名词解释、简答(所有的内容都在ppt上);不考编程
参考:
https://blog.csdn.net/weixin_63184383/article/details/145727824
第2讲 网络爬虫技术
爬虫定义
爬取过程(例子不考)
URL normalization(规范化)
- 对URL进行标准化处理的过程
- 将不同的URL转换为统一的、符合规范的等价URL
文档指纹FP
大批量文档快速判重
- shingle算法
- MinHash
- Simhash算法
- KSentence算法
URL 判重
- 提高查找和访问效率
- 在散列表中存放网址经过散列函数计算出的对应的固定长度的散列值
- 这样可以在平均情况下 O ( 1 ) O(1) O(1)的时间内查找和更新占用 O ( n ) O(n) O(n)空间的网址列表
爬虫功能
- 礼貌性: Web服务器有显式或隐式的策略控制爬虫的访问
- 只爬允许爬的内容、尊重 robots.txt
- 鲁棒性: 能从采集器陷阱中跳出,能处理Web服务器的其他恶意行为
- 性能和效率: 充分利用不同的系统资源,包括处理器、存储器和网络带宽优先抓取“有用的网页”
- 分布式: 可以在多台机器上分布式运行
- 可扩展性: 添加更多机器后采集率应该提高
- 新鲜度: 对原来抓取的网页进行更新
- 功能可扩展性:支持多方面的功能扩展,例如处理新的数据格式、新的抓取协议等
第3讲 网页分析技术
对于HTML文档,有两种看待方式:
- 一种是将文档看作字符流:正则表达式
- 一种是将文档看作树结构:基于DOM
正则表达式 Regular Expression
定义
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
作用
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
特点
-
正则表达式匹配速度快
-
但表达能力较弱,只具有正规文法的表示能力
-
在对网页内容的信噪比要求不高的情况下可以使用基于正则表达式匹配的爬取程序
文档对象模型(document object model,DOM)
定义
- DOM将一个XML文档转换成一个对象集合,然后可以任意处理该对象模型
- 这一机制也称为“随机访问”协议
- 可以在任何时间访问数据的任何一部分,然后修改、删除或插入新数据
- DOM将HTML视为树状结构的元素,所有元素以及他们的文字和属性可通过DOM树来操作与访问
正则表达式与DOM树方法的比较
正则表达式匹配
- 正则表达式匹配速度快,但表达能力较弱,只具有正规文法的表示能力
- 在对网页内容的信噪比要求不高的情况下可以使用基于正则表达式匹配的爬取程序
HTML DOM树
- HTML DOM树在解析HTML时速度较慢,但其表达能力相当于上下文无关文法
- 在网页自动分类等需要进行网页去噪处理的情况时使用基于HTML DOM树的爬取程序
HTML解析器 HTML Parser
- 将html标识解析为解析树
- jsoup 是一款Java 的HTML解析器(Beautiful Soup 不是、浏览器不是)
Beautiful Soup 模块
- python的一个模块
- 提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能
- 它是一个工具箱,通过解析文档为用户提供需要抓取的数据
- 简单好上手
RE 与 BeautifulSoup 的比较
- re正则表达式
- 匹配神器,速度快效率高
- BeautifulSoup
- 比较常用且使用简单的技术
- 由于在操作过程中,会将整个文档树进行加载然后进行查询匹配操作,使用过程中消耗资源较多
Scrapy 介绍
- 快速、高层次的屏幕抓取和web抓取框架
- 用于抓取web站点并从页面中提取结构化的数据
- Scrapy吸引人的地方在于它是一个框架
- 可重用设计
- 根据需求方便修改
- 轻松地实现爬虫项目
第4讲 爬虫与网站的博弈
- 网站反爬后端策略:网页在后端拦截
- User-Agent + Referer检测
- 账号及Cookie验证
- 验证码
- IP限制频次
- 网站反爬前端策略:网页在前端显示需要浏览器配合
- FONT-FACE拼凑式
Robot 协议
- 网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取
- robots.txt文件是一个文本文件
User-agent
- User-Agent是Http协议中的一部分,属于头域的组成部分,向访问网站提供访问者信息
IP屏蔽
网站:
- 同一 IP 访问频繁 -> 封
- 网站限制某些IP访问,仅允许指定IP地址访问
爬虫:
- 多IP并行
- 增大爬取时间间隔
- 连接代理服务器
- IP代理池
用户登陆
- 用户输入:用户名,口令
- 通过GET(POST)请求提交参数
- 后台PHP 程序生成的网页,数据在后台数据库
- 登陆成功,带着Cookie继续访问其他网页
模拟浏览器进行交互
- 登录录入:用户名,口令
- 键盘动作
- 鼠标动作
- 网站AJAX响应
验证码
- 交互内容不能提前预知
- 图像识别
- 获取图片
- 分析网页下载图片
- 屏幕截图
- 图片处理
- 获取图片中文字内容
- OCR
- 获取图片
第5讲 数据抽取与包装器
Web数据抽取
- Web 数据抽取是指从页面中将用户感兴趣的数据利用程序自动抽取到本地的过程
- 为了能够保证抽取的准确性,必须要能够识别页面模饭
- 定义(页面模板) 页面模板T= < C,L,S>
- C包含了导航、版权声明、固定页面修饰等这些不变的内容
- L包含了页面数据的格式规范
- S则是能够从页面数据中观察到的模式
包装器
包装器
- 针对某一类特定的网页
- 计算机可以理解并执行的程序或抽取规则
包装器的任务
- 将HTML格式的数据抽取并转化为结构化的格式
包装器的核心是抽取规则
对于HTML文档,有两种看待方式:
- 字符流
- 树结构
相应地,抽取规则也可以分为
- 基于分界符(或界标符)的规则
- 基于树路径的规则
包装器分类
从自动化程度来区分:
- 人工抽取
- 半自动抽取
- 自动抽取
Web 数据抽取评价标准
- 准确程度:查准率,查全率
- 抽取自动化程度:衡量用户在抽取过程中的参与程度,分为手工、半自动和全自动三类
- 适应性:指在页面的内容和结构发生较小变化的情况下,该抽取方法或工具具有自适应能力,仍然能够继续正常工作
- 修正率:需要手工调整使得准确率和召回率达到100%的Web数据库数量
查准率,查全率:
第6讲 包装器页面抽取方法
网页的分类
按照页面内数据组织形式的不同,分为
- 单记录页面
- 多记录页面
按照页面承载内容的不同,分为
- 数据型页面
- 文档型页面
两者组合起来共有4 种页面类型
- 多记录数据型页面
- 单记录数据型页面
- 单记录文档型页面
- 多记录文档型页面
多记录数据型页面的抽取方法
其中多记录数据型抽取不考观察和规则,掌握最后一页总结即可
单记录数据型页抽取方法
- 增量式抽取:从多个连续页面中抽取同结构的记录,以增量方式推导网页模板
- 部分树对齐算法:主要关心页面模式发生变化导致的页面模板变化时,如何调整和持续抽取数据的问题
单文档型页面Authority抽取方法
结合视觉信息的抽取方法
观察1:文档型页面中,其正文一般占用页面中最大的文本数据块;(记住下面公式)
视觉信息的抽取方法,将无法很好地处理如下情况:
- 短正文的抽取
- 包含大量评论的页面
抽取路径学习/路径规则
除了使用种子点seedElement
找出正文内容外,在内容返回前,还将正文的抽取路径保存到数据库中
改进的自适应数据抽取方法
- 基于视觉的方法+基于规则的方法 自动选择
- 一种基于贝叶斯最优决策的方法
- 定义(决策结果集合
DecisionSet
)- Vision: 表示最终将采用基于视觉的方法来抽取数据
- Rule: 表示最终将采用基于抽取路径的方法来抽取数据
第7讲 web数据存储
爬虫数据存储
结构化数据
- 结构化文件:Excel、CSV文件、JSON 文件
- 数据库
非结构化数据
- raw data 储存,直接存为txt文件、JPG文件
scrapy 支持的数据格式
CSV(comma-separated values)
- 是目前比较流行的一种文件存储格式
- 以逗号间隔
- 优点
- 被Excel和很多的应用程序支持
- 用来做数据存储容量小
- 很多数据集采用格式
JSON文件
- JavaScript 对象表示法 / JavaScript Object Notation
- 轻量级的文本数据交换格式
- 有对象和数组两种结构
- 最常用的格式是对象的键值对
XML文件
- Extensible Markup Language / 可扩展标记语言
- 数据重用(存储,携带,交换数据;不是显示数据)
- 半结构化集成数据
- XPath 使用路径表达式来选取 XML 文档中的节点或节点集
- XQuery 被设计用来查询 XML 数据
存入数据库
数据库提供了更强有力的数据存储和分析能力
-
关系型数据库 (SQLite、Mysql)
-
非关系型数据库 (MongoDB)
-
结构化数据存入 MySQL
-
非结构化数据存入 MongoDB
第8讲 web数据预处理
Web上爬取的数据
- 结构化数据 记录属性
- 存储
- 查询,合并
- 机器学习/数据挖掘
- 非结构化数据
- 单字段
- 大块 纯文本,图片
数据无量纲化
- 归一化 Normalization:将不同规格的数据转换为同一规格
- 将数据缩放到指定范围(通常是[0, 1])
- 将有量纲的表达式,经过变换,化为无量纲的表达式
- 标准化 Standardization:将不同分布的数据转换为特定分布的过程
归一化和标准化的区别
归一化
- 将样本的特征值转换到同一量纲下
- 把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定
- 因区间放缩法是归一化的一种
标准化
- 依照特征矩阵的列处理数据
- 其通过求z-score的方法,转换为标准正态分布
- 和整体样本分布相关,每个样本点都能对标准化产生影响
如何选择 归一化 or 标准化
归一化
- 对输出结果范围有要求
- 数据较为稳定,不存在极端的最大最小值
标准化
- 数据存在异常值和较多噪音
- 可以间接通过中心化避免异常值和极端值的影响
- 中心化:平均值为0,对标准差无要求
- 一般流程为先中心化再标准化
为什么要归一化 / 标准化?
- 无量纲化
- 例如房子数量和收入,因为从业务层知道,这两者的重要性一样,所以把它们全部归一化
- 避免数值问题
- 太大的数会引发数值问题
- 某些模型求解需要
- 一些分类器需要计算样本间的距离。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖
- 在使用梯度下降的方法求解最优化问题时, 归一化 / 标准化后可以提升模型的收敛速度
离散化的自动方法
基于决策树的离散化(决策树可以使连续值离散化)
- 使用决策树算法自动选择最优的分割点,将数据离散化
- 适用场景:需要离散化数据以构建决策树模型
类别特征编码
将类别变量转化为数值型数据
- 标签编码(Label Encoding)
- 将每个类别映射到一个唯一的整数
- 适用于类别之间有顺序关系的情况(例如,低、中、高)
- 独热编码(One-Hot Encoding)
- 将每个类别转换为一个二进制的向量
- 适用于类别之间没有顺序关系的情况(例如,颜色、国家等)
白化 Whitening
定义:白化是一种数据预处理技术,旨在通过线性变换使数据具有以下特性:
- 特征去相关:消除特征之间的相关性
- 方差归一化:使每个特征的方差为1
经过白化处理的数据,其协方差矩阵变为单位矩阵。
作用:
- 消除不同特征之间的相关性
- 降低输入数据特征之间的冗余性
- 输入数据经过白化处理后,特征之间相关性较低,并且所有特征具有相同的方差
- 白化的一个主要实现方式是使用PCA方法
为什么要进行白化
解决特征相关性带来的主要问题:模型不稳定、过拟合、冗余信息、解释性降低、梯度消失或爆炸(在深度学习中)
第9讲 文本预处理
词条化:将给定的字符序列拆分成一系列子序列的过程
中文分词(Chinese Word Segmentation)
定义
- 将一个汉字序列切分成一个一个单独的词
- 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程
方法1:基于理解的分词方法
通过让计算机模拟人对句子的理解,达到识别词的效果(语法分析树)
方法2:基于字符串匹配的分词方法
-
基于词典(规则)的方法
- “查字典” 法
- 按照一定策略将待分析的汉字串与一个“词典”中的词条进行匹配
- 如果匹配成功,那么该汉字串就是一个词
- 遇到不认识的字串就分割成单字词
-
策略
- 按照扫描方向:正向匹配和逆向匹配
- 按照扫描长度:最大匹配和最小匹配
- 最少切分(使每一句中切出的词数最小)
-
优点:
- 程序简单易行,开发周期短
- 仅需很少的语言资源(词表)
- 不需要任何词法、句法、语义资源
- 可以自定义词库,增加新词
-
缺点:
- Out of Vocabulary
- 歧义消解能力差
- 切分正确率不高,一般在95%左右
方法3:基于统计的分词方法
思想
- 用字与字相邻出现的频率来反应成词的可靠度
- 统计语料中相邻出现的各个字的组合的频度
- 当组合频度高于某一个临界值时,我们便可认为此字组可能构成一个词语
优点
- 分词准确度高
- 不需要切分词典
- 能够平衡地看待词表词和未登录词的识别问题
缺点
- 会经常抽出一些共现频度高、但并不是词的常用字组
- 对常用词的识别精度差,时空开销大
- 学习算法的复杂度往往较高,计算代价较大,依赖手工定义的特征工程
实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
基于HMM的中文分词方法
隐马尔可夫模型 Hidden Markov Model,HMM
隐马尔科夫模型的三个基本问题
HMM实现中文分词
Viterbi算法:对应于中文分词,它用来寻找最有可能产生某一句子的BEMS状态值序列
-
在维特比算法中,我们定义了一个weight数组
-
w e i g h t [ i ] [ j ] weight[i][j] weight[i][j]表示到 j j j 这个字(可见状态),隐藏状态为 i i i 的概率
-
还定义了一个数组 p a t h [ i ] [ j ] path[i][j] path[i][j] 表示当第 j j j 个字的隐藏状态为 i i i 时,第 j − 1 j-1 j−1 个字(向前回溯)的隐藏状态是 p a t h [ i ] [ j ] path[i][j] path[i][j] 的值
-
接下来包含4个步骤:
-
初始化第一列
-
使用递推式向右下角求出每个格子内的概率值
-
求到最后一个字的时候终止
-
回溯,沿着最终结果中最高的概率值,依据path数组,向前找回最大概率值路径
-
第10讲 文本表示
文本向量化
将文本信息数值化,从而便于进行建模分析
文档 —> 词条集合:
- 词袋(bag-of-words, BOW)
- 例如:搜索引擎
文本表示分为
- 离散表示
- 词袋模型,one-hot(也叫独热编码)、TF-IDF
- 分布式表示
- Distributed Representation(实现方式:主题模型 、文档哈希、语言模型)
主题模型 topic modeling
- 发现词之间的语义关联
- LDA 向量维度是主题维度
- 超级耗时,所以业界不喜欢用
PLSA主题模型
概率潜在语义分析 PLSA Probabilistic Latent Semantic Analysis
模型训练:自动地发现文档集中的主题(分布)
- 根据大量已知的文档-词项信息p(w|d)
- 训练出文档-主题p(z|d)和主题-词项p(w|z)
- 分布对应了两组Multinomial分布
- 采用EM算法估计这两组分布的参数
LDA主题模型
Latent Dirichlet Allocation 隐含狄利克雷分布
LDA和PLSA思想上一致,改进包括(1)增加了Dirichlet先验(2)全贝叶斯化
文档哈希
目标:hash code 的相似程度要能直接反映输入内容的相似程度
局部敏感哈希 LSH ——> Simhash算法
第11讲 语言模型
统计语言模型
N-Gram语言模型
- 通过泛化解决0概率问题*(句子越长出现0概率问题的概率就越大)*
n 较大时
- 提供了更多的语境信息,语境更具区别性
- 但是,参数个数多、计算代价大、训练语料需要多、参数估计不可靠
n 较小时
- 语境信息少,不具区别性
- 但是,参数个数少、计算代价小、训练语料无需太多、参数估计可靠
理论上,n越大越好;经验上,trigram用的最多;尽管如此,原则上,能用bigram解决,绝不使用trigram。
神经网络语言模型
NNLM
(使用前 n-1 个词预测第 n 个词)
解决了传统N-gram的两个缺陷:
- 词语之间的相似性可以通过词向量来体现
- 在相似的上下文语境中,
NNLM
模型可以预测出相似的目标词,而传统模型无法做到这一点
- 在相似的上下文语境中,
- 自带平滑功能
- 解决了词袋模型带来的数据稀疏、语义鸿沟等问题
第12讲 词嵌入和文档嵌入
词向量化
- 独热编码(One-Hot Encoding)
- 为每个词分配一个唯一的二进制向量
- 其中只有一个位置是1,其余位置是 0
- 词嵌入(Word Embeddings)
- 将每个词映射到低维连续向量空间
- 这些向量在语义上是相关的
- 如Word2Vec, GloVe, FastText等
Word2Vec
Word2Vec 通过训练神经网络模型,学习单词的分布式表示(词向量),主要基于以下两种模型架构:
- CBOW(Continuous Bag-of-Words)
- 根据上下文单词(周围词)预测当前词。
- 适合小型数据集,训练速度快。
- 示例:句子 “The cat sits on the mat” → 输入 [“The”, “cat”, “on”, “the”, “mat”],预测目标词 “sits”。
- Skip-gram
- 根据当前词预测上下文单词(反向CBOW)。
- 适合大型数据集,对稀有词表现更好。
- 示例:输入 “sits”,预测周围的 [“The”, “cat”, “on”, “the”, “mat”]。
3个用处
- 列出所有相似词语列表
- 词汇的语义的类比
- 寻找对应关系
CBOW(Continuous Bag-of-Words)
1. 核心思想
- 目标:利用上下文词汇预测中心词
- 输入:周围词的one-hot向量(窗口内的上下文词)
- 输出:预测中心词的概率分布
2. 模型结构
- 输入层:上下文词的one-hot向量(如窗口大小为2,则输入4个词)
- 投影层(共享权重):
- 将one-hot向量与嵌入矩阵 W V × N W_{V \times N} WV×N 相乘( V V V是词表大小, N N N是嵌入维度),得到词向量
- 对上下文词向量求平均,生成聚合的上下文表示
- 输出层:
- 将平均向量与输出矩阵 W N × V ′ W'_{N \times V} WN×V′ 相乘,通过softmax得到中心词的概率分布
3. 数学表示
y ^ = softmax ( 1 C ∑ i = 1 C W ⋅ x i ⋅ W ′ ) \hat{y} = \text{softmax}\left( \frac{1}{C} \sum_{i=1}^C W \cdot x_i \cdot W' \right) y^=softmax(C1i=1∑CW⋅xi⋅W′)
其中 C C C 是上下文词数量, x i x_i xi 是one-hot向量
损失函数:交叉熵损失,最小化预测中心词与真实标签的差异
5. 应用
训练结束后的W就是词向量的矩阵,任何一个单词的One-Hot表示乘以这个矩阵W就可以得到其词向量的表示
Skip-Gram
1. 核心思想
- 目标:用当前词(中心词)预测其周围窗口内的上下文词(如前后各2个词)
- 输入:中心词的one-hot向量
- 输出:上下文词的概率分布(多分类问题)
2. 模型结构
- 输入层:中心词的one-hot向量(维度为词表大小 V V V)。
- 投影层:
- 输入向量与嵌入矩阵 W V × N W_{V \times N} WV×N 相乘,得到中心词的词向量( N N N 是嵌入维度)
- 输出层:
- 将词向量与输出矩阵 W N × V ′ W'_{N \times V} WN×V′ 相乘,通过softmax得到每个上下文词的概率
3. 训练优化
- 损失函数:交叉熵损失,最大化上下文词的对数概率。
- 优化技巧:
- 负采样:训练时不让模型从整个词表找最可能的词,而是直接给出这个词,再给几个噪声词(负例),能找出来就成功
- 层次
Softmax
:训练的时候先统计词频,建立霍夫曼树,根据霍夫曼编码进行softmax回归,更快
4. 特点
- 优势:
- 对罕见词建模效果更好
- 适合大规模数据集,能捕捉更复杂的语义模式
- 劣势:
- 训练速度比CBOW略慢(需处理更多上下文词对)
Doc2Vec
Doc2Vec
:不仅能学习单词的向量,还能学习文本的向量表示。用于聚类、分类。训练过程时,同时训练词向量和段落向量。词向量随着滑动窗口的改变而改变,而只要滑动窗口还在本段落,段落向量不变(表示段落主题,只随着模型参数更新而改变)。
- 是Word2vec的扩展,不仅学习单词的向量,还学习文本的向量表示
- 能够使一个变长的句子、段落或文档表示为一个定长向量
- 段落向量模型添加了一个段落向量
Glove
- 全称是global vector,改进word2vector,成功利用语料库的全局信息
- 采用了局部上下文信息和全局统计特征
损失函数公式
J = ∑ i , j = 1 V f ( X i j ) ( w i T w j + b i + b ˉ j − log ( X i j ) ) 2 J = \sum_{i,j=1}^{V} f(X_{ij}) \left( w_i^T w_j + b_i + \bar{b}_j - \log(X_{ij}) \right)^2 J=i,j=1∑Vf(Xij)(wiTwj+bi+bˉj−log(Xij))2
- 符号说明:
- V V V:词表大小。
- X i j X_{ij} Xij:词 i i i 和词 j j j 在语料库中的共现次数(即词 j j j 出现在词 i i i 上下文中的频率)。
- w i , w j w_i, w_j wi,wj:词 i i i 和词 j j j 的向量表示。
- b i , b ˉ j b_i, \bar{b}_j bi,bˉj:词 i i i 和词 j j j 的偏置项(标量),用于捕捉词频的固有偏差。
- f ( X i j ) f(X_{ij}) f(Xij):权重函数,用于平衡高频词和低频词的影响。
GloVe
的优化目标是让词向量的内积 w i T w j w_i^T w_j wiTwj 加上偏置项后,尽可能接近共现次数的对数:
w i T w j + b i + b ˉ j ≈ log ( X i j ) w_i^T w_j + b_i + \bar{b}_j \approx \log(X_{ij}) wiTwj+bi+bˉj≈log(Xij)
第13讲 文本分类
FastText
FastText
在 Word2Vec
的基础上进行了改进,特别适合处理形态丰富的语言(如德语、土耳其语)和短文本分类任务。
子词嵌入
子词模型 Sub-word,它通过分解单词为更小的单元(n-gram 字符组合)来增强词向量的表示能力。
核心思想
- 传统
Word2Vec
将每个单词视为一个原子单位(如 “apple” 对应一个向量),但无法处理未登录词(OOV, Out-of-Vocabulary)。 FastText
将单词拆分为 字符级 n-gram(如 3-gram:“apple” →<ap
,app
,ppl
,ple
,le>
),并计算这些子词的向量之和作为单词的最终表示。
数学表示
对于一个单词 w w w,其向量 v w v_w vw 是所有子词向量 v g v_{g} vg 的平均或求和:
v w = ∑ g ∈ G w v g v_w = \sum_{g \in G_w} v_g vw=g∈Gw∑vg
其中 G w G_w Gw 是单词 w w w 的所有 n-gram 子词集合。
优势
✅ 解决未登录词问题:即使单词未在训练集中出现,仍可通过子词组合生成向量。
✅ 更好的形态学建模:适用于德语、俄语等具有复杂词形变化的语言。
✅ 共享子词信息:相似词(如 “running” 和 “runner”)共享部分子词,语义关联更强。
FastText
文本分类
FastText
提供了一种简单高效的文本分类方法,特别适合 短文本(如新闻分类、情感分析)。
核心思想
- 将整个文本表示为 所有词向量的平均(或求和)。
- 使用线性分类器(
Softmax
)预测类别标签。
模型结构
- 输入层:文本分词后,每个单词转换为子词向量
- 隐藏层:对一个文档中所有单词的向量进行叠加平均
- 输出层:Softmax 分类器
TextCNN
- 对CNN的输入层做了一些变形。
- 自然语言是一维数据,卷积核在一个方向上移动。
- 输入:通过词向量文件及词向量矩阵,将文本向量化,支持后续进行卷积池化等操作。
第14讲 WEB图像数据
图像的特征主要包括
-
低层特征(Primitive Features)
-
语义特征(Semantic Features)
-
局部特征
-
全局特征
低级图像特征主要有颜色、纹理和形状,低级图像特征包括局部特征和全局特征
颜色特征
- 颜色是彩色图像最底层、最直观的物理特征
- 通常对噪声,图像质量的退化,尺寸、分辨率和方向等的变化具有很强的鲁棒性
- 全局特征
颜色直方图 ColorHistogram
最简单、最常用的颜色特征
- 描述的是不同色彩在整幅图像中所占的比例
- 统计分布特性
- 具有平移、尺度、旋转不变性
- 特别适于描述那些难以进行自动分割的图像
- No space information
颜色矩 ColorMoment
基本思想
- 在颜色直方图的基础上计算出每个颜色的矩估计
- 颜色信息主要分布于低阶矩中
- 一阶矩(均值,mean)
- 二阶矩(方差,viarance)
- 三阶矩(斜度,skewness)
- 用这些统计量替代颜色的分布来表示颜色特征
- 它具有特征量少,处理简单的特点
优点
- 不需要颜色空间量化,特征向量维数低
- 常和其他特征结合
纹理特征
LBP特征 Local Binary Patterns
- LBP(局部二值模式)是一种用于纹理分析的局部特征描述方法,广泛应用于图像处理、人脸识别、物体检测等领域
- 其核心思想是通过比较像素点与其邻域的灰度关系,生成二进制编码来表示局部纹理特征
计算步骤
- 选择中心像素:对图像中的每个像素点 ( x c , y c ) (x_c,y_c) (xc,yc) ,取其邻域(通常是 3×3 窗口)
- 比较邻域像素:将邻域像素的灰度值与中心像素比较,大于等于中心值的记为
1
,否则记为0
- 生成二进制编码:按固定顺序排列这些二进制值,形成一个 8 位二进制数(如
11001011
) - 转换为十进制:将该二进制数转为十进制,作为中心像素的 LBP 值
- 对一幅灰度图提取其原始的LBP算子之后,得到LBP图谱,不过在应用中一般采用LBP特征谱的统计直方图
- 跟位置有很大关系,会因为位置没有对准而产生很大误差,可以将图片划分为若干子区域,然后每个子区域建立LBP的统计直方图
显著的优点
- 光照不变性
- 旋转不变性
- 灰度不变性
局部形状特征
HOG特征
- 方向梯度直方图
- Histogram of Oriented Gradient, HOG
- 通过计算和统计图像局部区域的梯度方向直方图来构成特征(描述局部目标的表象和形状)
HOG特征提取算法的实现过程
- 图像灰度化
- 对图像颜色进行Gamma校正
- 计算图像每个像素的梯度
- 将图像划分成小cells
- 统计每个cell的梯度直方图
- 将每几个cell组成一个block
- 将图像内的所有block的HOG特征descriptor串联
SIFT特征
- 尺度不变特征转换
- Scale-invariant feature transform或SIFT
算法步骤
- 建立尺度空间
- 即建立高斯差分(DoG)金字塔
- 在尺度空间中检测极值点,并进行精确定位和筛选
- 特征点方向赋值
- 完成此步骤后,每个特征点有三个信息:位置、尺度、方向
- 计算特征描述子
- SIFT优点:旋转、尺度、亮度不变性,稳定
- SIFT缺点:实时性不够高,有时特征点较少,对边缘光滑的目标无法准确提取特征点