机器学习-TopicModel

  1. 概率图模型基础
  2. 概率潜在语义分析(PLSA)
  3. LDA
概率图模型基础
猜球游戏
有两个信封,其中一个装有一个红球,一个黑球。另一个信封有两个黑球。
假设红球价值100元,黑球价值1元。
你随机从其中拿起一个信封,从里面随便取出一个球,然后你发现这个球是黑色的。
请问此时,如果让你选择其中一个信封,你会选择哪个?已经检查过的还是未被检查过的?
分析: 如果在没有看之前,选择两个信封的概率都是1/2。由于增加了已知条件,后验概率P(E=1|B=b)改变了。
定义两个随机变量:信封编号:E∈{1,2},1号含有红球。小球颜色:B∈{r,b}
根据定义:P(E=1)=P(E=2)=1/2   ;   P(B=r|E=1)=1/2  ;  P(B=r|E=2)=0
问题:P(E=1|B=b)>=1/2 ??
P(E=1|B=b):刚才看的黑球的信封是 1 号信封的概率如果大于1/2,那么就选择这个信封,否则选择那个未开封的信封。
思路一:
概率图模型:有节点和边的集合构成,节点集表示一组 随机变量 X1,X2...Xn,连接节点的边表示变量之间的关联(概率)
为什么要用概率图模型:
如果不用概率图模型,我们要表示一个P(x1,x2,...xn)联合概率(如果 x∈{0 , 1} ),则总共需要 存 2^n-1 个概率值。如
p(x1=0,x2=0,...xn=0) ,p(x1=1,x2=0,...xn=0),p(x1=0,x2=1,...xn=0)...
难以解释条件独立关系。
已知: x1    x2    x3    和 p(x1,x2,x3,y1,y2,y3)
未知:y1     y2    y3
那么要求p(y1|x1,x2,x3)  p(y2|x1,x2,x3)   p(y3|x1,x2,x3) 
如果我们用概率图表示:
假设图为
如果我们要求 P(A|C,E,F,B)  由于A 与B 条件独立,那么我们就不需要B                                                                         , P(A|C,E,F,B) =P(A|C,E,F)
我们根据图就可以看出A与B条件独立。
概率图模型两个任务:
  • 推理(Inference)
给定联合分布 P(x1,x2...xn) ,计算 ,其中 (已知节点与未知节点并集为全图)
例如:Q={n},E={1,2...n-1}
根据联合概率和已知节点求未知节点取值的概率。
  • 学习(Learning)
从训练数据中 X(1),X(2)...X(n)(其中 X(i)=(X(i)1,X(i)2...X(i)n)) 中估计联合分布p(x1,x2...xn)
注意:有边有点不等于图模型。
神经网络,决策树,网络流都是不是。
因为节点不是“随机变量”,边不是概率概率关系(因为概率无向图模型中的边不是概率,是概率关系,因为势函数定义在最大团上,很难说边是概率)。
概率有向图模型,也叫贝叶斯网。
一个基于 有向无环图的贝叶斯网可以用下面的分布表示。
  • 其中Pak 是 xk 的父节点集合
  • p(xk|Pak)是在 xk 点上的条件概率分布
  • 通过确定所有点上的条件概率分布,能唯一的确定一个图模型p(X)
如:下贝叶斯网:
本图模型需要存储的数据:P(x1=1),P(x2=1),P(x3=1)   注意:P(x1=0) 可用1-P(x1=1) 表示。  3个
P(x4|x1,x2,x3)   2^3 (x1,x2,x3 的排列组合)   8个
p(x5|x1,x3)  2^2 =4 个
p(x6|x4)    2^1= 2 个
p(x7|x4,x5)    2^2=4 个
3+8+4+2+4=21< 2^7-1 =128-1=127
贝叶斯网的精简表示:
例如:我们在朴素贝叶斯中假设文章的特征由所有词来表示,所有词的都是独立的。所以我们根本不能精确地表示出来。
         
所有词表示文章                       精简型
精简型中蓝筐中是所有词,N 表示词的个数。w 表示文章。
概率条件独立性
如果随机变量 A,B 独立则,P(A,B)=P(A)P(B) 或者 P(A|B)=P(A)
如果随机变量 A,B 关于C条件独立则,P(A,B|C)=P(A|C)P(B|C) 或者 P(A|B,C)=P(A|C)
以上公式可以扩展到多变量。
我们可以根据上边的公式去证明A,B是否独立。但是我们我可以用D-Separation 图,我们一眼就能看出来是否独立。
贝叶斯网中的条件独立性可以用Directed separation 精确表示。
D-separation
任意两组节点 A 和 B 关于另一个节点 C 条件独立,如果所有从 A中任一节点到 B 中任一节点的无向路径都被阻断。
某一路径是阻断的。
证明独立性:P(AB)=P(A)P(C)
证明条件独立性:P(A,B|C)=P(A|C)P(B|C) 
情景一:A,B 总的来说相互依赖,但是A,B 关于C 条件独立。
一个可见点 C 是一个 tail-to-tail 节点,阻断了路径A-B,所以A,B 独立
图 a                         图 b
证明:P(A,B,C)=P(C)P(A|C)P(B|C)    (由图模型结果得,图 b)
P(A,B,C)=P(A,B|C)P(C)             (条件概率公式)
P(A,B|C)=P(A|C)P(B|C)            (结论A,B关于C条件独立)
如果 C 已知(如图 b)P(A,B|C)=P(A)P(B)
如果 C 已知,P(A,B,C)=P(C)P(A|C)P(B|C)==>P(A,B,C)=P(A,B)P(C)=P(C)P(A)P(B)
情景二:A,B 总的来说相互依赖,但是A,B 关于C 条件独立。
一个可见点 C 是一个 head-to-tail 节点,阻断了路径A-B,所以A,B 独立。
P(A,B,C)=P(A)P(C|A)P(B|C)=P(A,C)P(B|C)=P(C)P(A|C)P(B|C)           与情景一等价。
证明:P(A,B,C)=P(A)P(C|A)P(B|C)    (由图模型结果得)
如果 C 已知(如图 b)P(AB|C)=P(A)P(B)
如果 C 已知(如图 b)P(A,B,C)=P(A)P(C|A)P(B|C)==>P(A,B,C)=P(A)P(C)P(B)==>P(A,B)=P(A)P(B)     (A,B 关于条件独立)
其实情景一与情景二是等价的。
情景三:A,B 总的来说相互独立:如果C是一个可见点(已知)那么A,B 关于 C 条件依赖。
一个可见点 C 是一个 head-to-head 节点,打开了路径A-B
证明:P(A,B,C)=P(A)P(B)P(C|A,B)    (由图模型结果得)
P(C|A,B)P(A,B)=P(A,B,C)          (条件概率公式)
P(A,B)=P(A)P(B)                      (A,B 独立)
如果 C 已知(如图 b)P(A,B|C)=P(A)P(B)          
练习1:给定 C 的条件下,A和B 不独立。
分析:给定 C ,那么 E 也已知部分信息(就上最开始的猜球游戏,一旦我们知道一个球的信息,那么就也知道部分信封的信息),那么A 与 F 之间的路径被打开,A 与 F 关于 E 条件依赖,F 与 B依赖,那么 A 与 B 不独立。
如果 C 未知,A B 独立,因为A,F关于E 是Head to Head 那么A与F 独立,所以路径被阶段。
练习2:给定 F 的条件下,A和B 独立。
分析:A 与 F 独立,没有路径从 A 到 B。
一般图模型是由我们根据自己知识画出来的。像特征一样,我们根据自己知识设置特征的个数与种类。但是也有高级方法自动学习图模型,自动学习特征。
概率无向图模型
概率无向图模型也叫马尔科夫随机场 MRF(Markov Random Fields)
无向图中的团:一个全连接的节点集。
最大团:团中数量最多的一些团。
最大团为蓝色框内的 { x2,x3,x4 },x1 不包括在内,因为x1和x4 之间的没有连线。
定义一个最大团 C 上的非负势函数,    φ(x1,x2,...xn)>0  
这表示:自定义一个势函数:(x^2,e ^x 等)φc,自变量 Xc 是最大团中随机变量的一组随机变量如:x2,x3,x4,输出是大于0 的实数。
φc 在物理中叫能量函数。
势函数定义好以后就可以写出图模型的概率分布写出来。
   
P(X)=所有 最大团的势函数的连乘。1/Z  的作用是归一化。
Z 对于图模型(离散型)求和。
如果势函数不是定义在最大团上,那么在连乘时比较麻烦,找全所以的项。项也比较多。
Z 是分配函数(partition function)
下边我们看一个马尔科夫随机场简单的例子:
x1,x2 属于{-1,1} 单一团C,定义函数:
我们希望达到什么目标,都是通过势函数来反映。
            
由于x1,x2 属于{-1,1},所以一共有4中组合:{1,1},{-1,-1},{-1,1},{1,-1}
Z 是这四种参数的势函数之和。
我们可以看到符号相同的概率相同。
当a>0时,e^a>e^-a ,所以p(1,1)和P(-1,-1)的概率大于P(-1,1)和P(1,-1)。
  • 当a>0,模型倾向x1,x2同类(概率大)
  • 当a<0,模型倾向x1,x2异类(概率大)
我们看一下这样一个应用(图像的恢复,图像的去噪)。
           
原图                    丢失数据图         无向图模型
我们将图片中每个像素定义为一个随机变量,这个随机变量可以取两个值(黄色,蓝色),所在模型中构成一层,组成网络。每个随机变量都对应另外一个随机变量。下边相连的节点表示真实图像中的像素点的取值。上边那一次是“丢失数据图”上像素点的取值(可观察去预测真实图像的像素值(未知,是空白))。
模型中有两种最大团,一种下边层中 x 与 x 的最大团,一种是上下层间的 x 与 y 之间的最大团。
概率最大时,就是能力函数值最小。
因为物理上,能量越小,越稳定。
:表示先验,就是图像80%是背景色。
:表示上下最大团。
:表示下边那层网的最大团。
我们找一组随机变量X,Y 是我们图模型的概率最大,那么这组随机变量的组合,就是我们要找的。
如果 β η 同为正数,那么我们希望相邻像素的颜色相同。真实像素的颜色(x)应该跟我们看到颜色(y)应该相同。
如果 β 很大: 在 丢失数据图 中要求相邻元素尽可能相似,过度去噪,可能造成上边那个蓝点消失,甚至使整个图片都是黄色。
如果 η 很大:在丢失数据图 中要求每个元素与生产的元素尽可能相似,那么可能造成生成的图片与  丢失数据图 一摸一摸样。
势函数决定了无向图能做什么!
马尔科夫随机场的条件独立性
如图:两组变量 A,B 关于 C 条件独立,假如除去C 中的节点及所有与其连接的边后,A,B 变成非联通状态。
在马尔科夫随机场中,如果任意个节点可达,都不独立。
概率潜在语义分析    Probabilistic Latent Semantic Analysis(PLSA)
概率有向图模型(贝叶斯网)
分析观察数据背后的潜在影响因素:
应用:
1:根据用户行为挖掘兴趣。一个用户多个兴趣,不同用户相同的兴趣。
2.一词多义和一义多词。
假设一个电商要预测用户兴趣,给用户推荐更合适的商品。如果用概率模型做,这是个回归问题。需要回归用户对每件商品的概率。
     
图a                                       图b
图a 计算量:亿级别 * 亿级别                   
图b,将用户聚类(K个)。计算量:K * 亿级别
图b 是将用户硬分类。如果我们要将用户软聚类。
图c
图 c
z 就是用户兴趣组。
计算量:2 * k * 亿级别 (如果 k 比用户和商品数小的很多的话,性能提升不少)    
图 c 就是 PLSA 的原理。
PLSA 最早出现在搜索领域,在PLSA出现之前,只能与关键词匹配才能搜索到信息。不能根据语义搜索。
PLSA的实现
所需的数据结构:
  • 词表 W={w1,w2...wm}
  • 文档集 D={d1,d2...dn}
  • 词文档矩阵 N,,表示wj 在di 中出现次数。
PLSA 模型
假设一个Topic集合:Z={z1,z2,...,zk}
N 中每一个词都对应一个 z 值。
所以图模型为
黄球是:word                 ( m 个)
篮球是:topic                 ( k 个)
红球是:document          ( n 个)
共需存储 n*k + k*m + n 
n:p(d)
n*k:p(z|d)
m*k:p(w|z)
PLSA 图模型表示:
这两图模型是等价的。d,w 关于 z 条件独立。
参数估计:
在训练开始前,我们知道 d 和 w 但是我们知道 z 的信息,根据已知信息推出隐藏变量信息我们用EM算法(在不完全数据上估计)。
E-step 求隐藏变量的后验概率。(正是所缺少的  z 信息 )P(z|d,w) 已知d 和 w ,z 的概率。
M-step 有了P(z|d,w) 最大似然来更新 (解析解)
n(d,w):词频
注意:M-step:之所以我们要将p(d|z),p(w|z),p(z) 转化为正比于  p(z|d,w) ,是因为E-Step 求出了后验概率。
p(z|d,w)推导:
优化:在每次迭代 E 中,我们需要p(z),p(d|z),p(w|z) 三个数相乘,其实我们可以通过公式变形,减少变量的统计,及计算。
这样只有p(z|w)p(d|z) 两个概率相乘。
注意:在开始时,我们还没有p(z|d,w)的数据,我们为每个文章,每个词随机生成一个概率值。
由于EM 算法循环,我们也可以随机出来p(z|w) 和 p(d|z) 这两个值。当然根据公式不同,我们也可以随机p(d|z) 和 p(w|z),然后根据p(d|z) 和 p(w|z)计算出p(z)。
最大似然:由于文章时独立同分布。P(D)=∏ p(d) 等号两边取对数。
log(P(D))=∑log(p(d))
E-Step
这一步就是根据公式计算后验概率(在没有看到文章时 z 是先验概率,在看到文档和词时,z 的概率是后验概率)。
M-Step
如图:橘黄色的圆圈是词,是可见的。蓝色的圆圈是Topic,是不可见的。
计算p(d|z):横向 sum [z1,z2...,zk]=n(d,z)
计算p(d|z):纵向 sum [z1,z2...,zk]=n(w,z)   假设每列都是同一个Word。
计算p(z):sum(n(d,z),n(w,z))=n(z)=[z1,z2...zk]
p(d,zi)∝n(d,zi)
p(d|zi)=n(d,zi)/n(zi)
p(w|zi)=n(w,zi)/n(zi)
p(zi)=n(zi)/sum(n(z))
p(z|d,w) 是在每篇文章中对每个词Z1,Z2...Zk 分别统计,然后归一化(注意乘以词频)。
一义多词:
这相当于对词进行聚类。
最后我们能得到 P(w|z) ,我们可以根据 z 中概率最大的词作为标头。
一词多义:p(z|d,w) 得出。
PLSA 总结:
PLAS 是无监督。
我们可用PLSA做文章和词聚类(根据Topic)。
当然我们也可以用PLSA做分类。
来了一篇新文章来“预测”(这里预测是计算出新文章的所属Topic 的概率分布,这和分类还是有一定区别的,因为Topic并不是我事先指定的。甚至我们不知道他们的含义),由于我们没有新文章的p(d|z) 所以没有办法预测,这正是PLSA泛化能力不足之处。但是我们可以P(w|z)来模拟.p(d|z) 所以没有办法预测,这正是PLSA泛化能力不足之处。但是我们可以P(w|z)来模拟p(d|z)
p(d|z)模拟:
topic1topic2...tk
word1...
word2...
......
word m...
我们根据文章中词,在上边的词词表所有的Topic 相加,然后归一化。然后根据公式
,
计算p(z|d).
如果训练数据足够大,这样的方法还是比较靠谱的。
PLSA 可以解决有标注数据的稀疏问题(标注数据很少)。
假设我们有1000篇标注文章数据,有100万篇未标注的数据。
我们先用100万未标注的数据用PLSA得到词的 topic ,将1000篇标注文章套那些 topic ,计算出来这1000篇文章的 topic ,作为特征向量,进行模型的训练。这样比直接用词作为特征向量来训练模型好的多。
PLSA 的不足:
  1. 参数数量随着文档集大小线性增长。
  2. 泛化能力不足(解决方案:加入对文章的先验分布,参数化p(z|d),也就是LDA)  
LDA (Latent Dirichlet Allocation) 潜在狄利克雷分配:
基本思想:
如图:PLSA 就是图中黑点是每篇文章都对应一个P(d|z),是离散的,对于新文章就没有p(d|z)。为了解决这个问题,我们想拟合一个分布(如图中线),这样就将离散的文章变成连续的值。来了新文章,我们可以找到对应的p(d|z)。
LDA 用的是Dirichlet 分布。
在解释Dirichlet 分布,我们先看一下Bate分布。Bate 分布一元概率分布,Dirichlet 分布是将Bate分布扩展到多元。
这几条线就像,几家造币厂。有些造币厂造的币比较均匀了,像那根绿线,大部分硬币上抛正反面的概率都是0.5。粉红那条线表示的造币厂质量稍微有偏差,80%都是正面,20%是背面。这些表示概率分布。
Dirichlet 分布:
三个角表示三个Topic。
图 a,文档集中文章大部分都在讨论第 3 个话题。
图 b,文档集中文章大部分都在讨论第1,2个话题。
图 c,文档集中文章讨论 3 个 比较均匀。
图 d,文档集中文章大部分都在讨论第1,3个话题。
θ:是 topic θ∈(0,1) 是概率。
LDA 过程:建模文档生成过程
1.确定文章词的个数(n)
2.θ=[],θ=dir(α) ,由 参数为 α 的Dirichlet 分布生成一个θ (就像在参数 α 的分布下抛了一个硬币,注意每次可能都一不一样,并且此处的 θ 是多元的Topic分布。之前PLSA文章的Topic是唯一确定,这里是由另一个分布产生的)。
3. for i in range(n):  每次循环生成一个词。本篇文章在同一个参数 θ 的Dirichlet 分布下产生。
topic=Multinomial(q)    由 θ 的多项分布生成一个 topic.  这是一个具体的topic
word=Multinomial(topic)  相当于在topic 下所有词中又抛出一个词。
有这个过程我们可以画出LDA的图模型了。
由于只有 w 是已知的,所以我们用全概率公式将θ 积分积掉。z 用求和去掉。
P(D|α,β) 是整个文档集的似然。
β 就是word and topic的矩阵。
topic1topic2...tk
word1...
word2...
......
word m...
θ:就是文章所属 topic 的分布。θ 从分布而来。z:词所属的 topic(一个Topic) 。θ,z 是隐藏变量(θ,α 是 k 维的实数向量),
N 是一篇文章中词个数(特征数)。
M 是文档集中文档数。
P(w|α,β) :全概率公式。θ 是连续,求积分。对z 求和。
图模型可以做推理
p(θ,z|w,α,β):已知w 和α,β 来计算文章所有的Topic,即词所属的topic。
根据条件概率公式我们知道上边的公式。p(θ,z,w|α,β) 蛮好求的。
P(w|α,β) 很难计算
P(w|α,β)  是无法计算的。没有办法用EM算法,E 步骤后验概率 p(θ,z|α,β,w) 计算不了。
可以用变分法和Gibbs 采样法。
Smoothed LDA
LDA 中,如果遇到没有训练集中没有遇到过的词,当然可以很暴力的丢弃掉。也可以像LDA解决PLSA的泛化能力问题一样,让词也从分布而来。
每个topic 在词集上分布 βi 也是随机变量,服从参数为 ηi 的Dirichlet分布。
图模型:
k: 是topic 个数(相当于服从参数为 ηi 的Dirichlet分布,k个筛子同时抛)
N:表示一篇文章中的词个数
M:文档个数
Gibbs 采样法
模型:smoothed 的LDA
参数估计:1.对每个词所对应的 topic 进行采样。
2.根据整个文档集采样的结果估计参数。
φj:第 j 个topic w(词 的概率
θj:第 j 个topic 文章 的概率
在PLSA中 P(z|d),P(z|w),P(z)是通过行统计和列统计出来的。Gbbis 采样的是通过抛硬币得出来的。硬币不是随便抛的。先计W5 的[z1,z2...zk],根据概率大小抛硬币,抛出哪个就哪个。
在这样一个区间上抛硬币,z的区间越大,被抛中的概率越大。
这里蓝色球时某一个Topic,不是列表(topic,[z1,z2...zk])。对所有蓝色节点都采完样后,我们就可以最大似然进行计算。
上边介绍的方法其中要计算出w5 [z1,z2...zk]。
1.在全表(除 w5 )找到出现的w5的词 A。如果一列是同一个词,就是一列上统计。
2.统计A中zi 的个数 len(zi),len(zi)/len(A)   与图左边的公式(加了平滑)一致。这样就计算出W5 [z1,z2...zk]
我们要找d1[z1,z2,...zk]
1.在一行中出w5 词外,其他的词A
2.统计A中zi 的个数 len(zi),len(zi)/len(A)   与图左边的公式(加了平滑)一致。这样就计算出d1 [z1,z2...zk]
将w5[z1,z2,...zk] 和d1[z1,z2,...zk] 相乘,然后归一化就得到 z 的后验概率分布。
然后循环上1000轮后,就可以用W5 [z1,z2...zk]和d1 [z1,z2...zk]作为最后结果了。
评价和应用:
perplesity(混乱度)
由于我们优化时是最大似然优化的,所以用最大似然来评价当然是最好的,似然值越大越好。
但是log似然的值太小,写报告不好看,所以用了尺度变换,是最后的数字比较好看。
训练完毕后我们得到 p(z|d) 和 p(z|w) 。
p(z|d):文档分类,聚类,检索
p(z|w):词分类,词聚类
我们可以直接用p(z|d) 直接作为文章的特征向量。之前所有对文章的机器学习方法都可以用了。
下边我们看一下使用文档的topic 分布作为特征和用词作为词效果比较。
文本分类:
有图看到:训练数据比较少时,LDA Features 效果还是比较好。随着训练数据增大两者差不多,最后甚至word Features 可能会更好。因为LDA 假设先验分布(Dirichlet分布),真实数据可能不是Dirichlet分布,而是长尾分布。
协同过滤
训练:利用用户对电影的喜好数据建模
预测:基于用户的部分数据Wobs预测其对新电影 W 的喜好程度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 OLED

文章目录 前言一、OLED是什么&#xff1f;二、使用步骤1.复制 OLED.C .H文件1.1 遇到问题 2.统一风格3.主函数引用头文件3.1 oled.h 提供了什么函数 4.介绍显示一个字符的函数5. 显示十进制函数的讲解 三、使用注意事项3.1 配置符合自己的引脚3.2 花屏总结 前言 提示&#xff…

简单vue指令实现 el-table 可拖拽表格功能

安装 SortableJS sorttableJs 相关优点如下&#xff1a; 相关配置项 参考 &#x1f449; SortableJS中文官网 pnpm i sortablejs封装成指令 不多逼逼&#xff0c;直接上才艺 &#x1f92a;&#x1f92a;&#x1f92a; 先安装一个 nanoid 插件 用于生成随机id&#xff0c;注…

亚洲市场|人工智能对固态硬盘SSD需求影响

随着人工智能(AI)技术的快速发展&#xff0c;对于高效能存储的需求也在日益增长。在亚洲市场中&#xff0c;固态硬盘(SSD)作为关键的数据存储设备&#xff0c;其重要性不言而喻。 扩展阅读&#xff1a; 内存&#xff1a;生成式AI带来全新挑战与机遇 这可能是最清晰的AI存储数…

瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板&#xff0c;搭载了瑞芯微RK3566芯片&#xff0c;类树莓派设计&#xff0c;是Laval官方社区主荐的一款鸿蒙开发主板。 一、安装输入法并查看输入…

YOLOv8改进 | 主干篇,YOLOv8改进主干网络为华为的轻量化架构GhostNetV1

摘要 摘要:将卷积神经网络(CNN)部署在嵌入式设备上是困难的,因为嵌入式设备的内存和计算资源有限。特征图的冗余是成功的 CNN 的一个重要特征,但在神经网络架构设计中很少被研究。作者提出了一种新颖的 Ghost 模块,用于通过廉价操作生成更多的特征图。基于一组内在特征图…

使用Python和Proxy302代理IP高效采集Bing图片

目录 项目背景一、项目准备环境配置 二、爬虫设计与实现爬虫设计思路目标网站分析数据获取流程 代码实现1. 初始化爬虫类&#xff08;BingImageSpider&#xff09;2. 创建存储文件夹3. 获取图像链接4. 下载图片5. 使用Proxy302代理IP6. 主运行函数 运行截图 三、总结 项目背景 …

VS开发 - 静态编译和动态编译的基础实践与混用

目录 1. 基础概念 2. 直观感受一下静态编译和动态编译的体积与依赖项目 3. VS运行时库包含哪些主要文件&#xff08;从VS2015起&#xff09; 4. 动态库和静态库混用的情况 5. 感谢清单 1. 基础概念 所谓的运行时库&#xff08;Runtime Library&#xff09;就是WINDOWS系统…

WPS在表格中填写材料时,内容过多导致表格不换页,其余内容无法正常显示 以及 内容过多,导致表格换页——解决方法

一、现象 1&#xff0c;内容过多导致表格不换页&#xff0c;其余内容无法正常显示 2&#xff0c;内容过多&#xff0c;导致表格换页 二、解决方法 在表格内右击&#xff0c;选择表格属性 在菜单栏选择行&#xff0c;勾选允许跨页断行&#xff0c;点击确定即可 1&#xff0…

【WRF工具】WRF Domain Wizard第二期:服务器中下载及安装

【WRF工具】WRF Domain Wizard第二期&#xff1a;服务器下载及安装 准备WRF Domain Wizard下载及安装WRF Domain Wizard下载WRF Domain Wizard安装添加环境变量&#xff08;为当前用户永久添加环境变量&#xff09;Java环境安装报错-Exception in thread "main" java…

STM32F1+HAL库+FreeTOTS学习15——互斥信号量

STM32F1HAL库FreeTOTS学习15——互斥信号量 1. 优先级翻转2. 互斥信号量3. 相关API函数&#xff1b;3.1 互斥信号量创建3.2 获取信号量3.3 释放信号量3.4 删除信号量 4. 操作实验1. 实验内容2. 代码实现3. 运行结果 上期我们介绍了数值信号量。这一期我们来介绍互斥信号量 1. 优…

[Docker学习笔记]利用Dockerfile创建镜像

Dockerfile 指令 指令作用from继承基础镜像maintainer镜像制作者信息(可缺省)run用来执行shell命令expose暴露端口号cmd启动容器默认执行的命令entrypoint启动容器真正执行的命令volume创建挂载点env配置环境变量add复制文件到容器copy复制文件到容器workdir设置容器的工作目录…

QT C++ 自学积累 『非技术文』

QT C 自学积累 『非技术文』 最近一段时间参与了一个 QT 项目的开发&#xff0c;使用的是 C 语法&#xff0c;很遗憾的是我之前从来没有接触过 C &#xff0c;大学没有开过这堂课&#xff0c;也没用自己学习过&#xff0c;所有说上手贼慢&#xff0c;到现在为止其实也不是很清楚…

【IOS】申请开发者账号(公司)

目录 申请开发者账号前提 查询/申请D-U-N-S 编号 申请开发者 官网&#xff1a;Apple Developer (简体中文) 申请开发者账号前提 如果是第一次申请建议注册一个新的apple id作为组织的开发者账号。&#xff08;确保apple id的个人信息是真实的&#xff0c;不能是网名或者是…

Chainlit集成LlamaIndex实现知识库高级检索(组合对象检索)

检索原理 对象组合索引的原理 是利用IndexNode索引节点&#xff0c;将两个不同类型的检索器作为节点对象&#xff0c;使用 SummaryIndex &#xff08;它可以用来构建一个包含多个索引节点的索引结构。这种索引通常用于从多个不同的数据源或索引方法中汇总信息&#xff0c;并能…

【TabBar嵌套Navigation案例-新特性页面-介绍图片 Objective-C语言】

一、接下来,我们接着来说这个介绍图片啊, 1.看一下我们的示例程序,在这一块儿,有一些介绍图片, 这个飞镖的盘子,全新娱乐场,疯狂什么玩意儿,这些东西呢,实际上,都是我们的素材啊,在素材里边,Guide里边,我们这儿有一个guide1, Open With External Editor,这张图片…

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址&#xff1a;https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能&#xff0c;在会话窗口底部&#xff0c;显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等&#xff1a; &#xff08;完整窗口&#xff0…

蓝桥杯—STM32G431RBT6(RTC时钟获取时间和日期)

一、RTC是什么&#xff0c;有什么用&#xff1f; 在 STM32 中&#xff0c;RTC&#xff08;Real-Time Clock&#xff0c;实时时钟&#xff09;主要有以下作用&#xff1a; 时间保持&#xff1a;即使在系统断电情况下&#xff0c;也能持续记录时间。&#xff08;需要纽扣电池供电…

【2.使用VBA自动填充Excel工作表】

目录 前言什么是VBA如何使用Excel中的VBA简单基础入门控制台输出信息定义过程&#xff08;功能&#xff09;定义变量常用的数据类型Set循环For To 我的需求开发过程效果演示文件情况测试填充源文件测试填充目标文件 全部完整的代码sheet1中的代码&#xff0c;对应A公司工作表Us…

简易CPU设计入门:取指令(一),端口列表与变量声明

取指令这一块呢&#xff0c;个人觉得&#xff0c;不太好讲。但是呢&#xff0c;不好讲&#xff0c;我也得讲啊。那就尽量地讲吧。如果讲得不好的话&#xff0c;那么&#xff0c;欢迎大家提出好的意见&#xff0c;帮助我改进讲课的质量。 首先呢&#xff0c;还是请大家去下载本…

【专题】2024年中国白酒行业数字化转型研究报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37755 消费人群趋于年轻化&#xff0c;消费需求迈向健康化&#xff0c;消费场景与渠道走向多元化&#xff0c;这些因素共同驱动企业凭借数据能力来适应市场的变化。从消费市场来看&#xff0c;消费群体、需求、场景及渠道皆展现出与…