EM算法推导pLSA
简介
概率潜在语义分析(Probabilistic Latent Semantic Analysis)模型简称pLSA。可以使用EM算法来估计pLSA的参数。
已知
有文档集合D={d1,...,dN}D=\{d_1,...,d_N\}D={d1,...,dN},词语集合W={w1,...,wM}W=\{w_1,...,w_M\}W={w1,...,wM},文档的(不可观测的隐变量)类别集合Z={z1,...,zK}Z=\{z_1,...,z_K\}Z={z1,...,zK}。可以知道生成过程如下:
p(di)选取到文档di   ⟹  \implies⟹ p(zk|di)的概率文档di属于类别zk   ⟹  \implies⟹ p(wj|zk)的概率zk类的文档中有单词wj
能观测得到的数据是n(di,wj)n(d_i,w_j)n(di,wj),而ZZZ是观测不到的
独立性假设:p(di,wj∣zk)=p(di∣zk) p(wj∣zk)(1)p(d_i,w_j|z_k)=p(d_i|z_k)\,p(w_j|z_k)\qquad(1)p(di,wj∣zk)=p(di∣zk)p(wj∣zk)(1)
参数
需要求解的pLSA的参数是p(zk∣di)p(z_k|d_i)p(zk∣di)和p(wj∣zk)p(w_j|z_k)p(wj∣zk),因为:
p(di,wj)=∑k=1Kp(zk,di,wj)=∑k=1Kp(di,wj∣zk)p(zk)=∑k=1Kp(di∣zk)p(wj∣zk)p(zk)  [∗独立性假设(1)∗]=p(di,zk)p(wj∣zk)=∑k=1Kp(zk∣di)p(di)p(wj∣zk)=p(di)∑k=1Kp(zk∣di)p(wj∣zk)(2)\begin{aligned}p(d_i,w_j)&=\sum_{k=1}^{K}p(z_k,d_i,w_j) =\sum_{k=1}^{K}p(d_i,w_j|z_k)p(z_k)\\&=\sum_{k=1}^{K}p(d_i|z_k)p(w_j|z_k)p(z_k)\;[*独立性假设(1)*]\\&=p(d_i,z_k)p(w_j|z_k) \\&=\sum_{k=1}^{K}p(z_k|d_i)p(d_i)p(w_j|z_k) \\&=p(d_i)\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k) \qquad\qquad(2) \end{aligned}p(di,wj)=k=1∑Kp(zk,di,wj)=k=1∑Kp(di,wj∣zk)p(zk)=k=1∑Kp(di∣zk)p(wj∣zk)p(zk)[∗独立性假设(1)∗]=p(di,zk)p(wj∣zk)=k=1∑Kp(zk∣di)p(di)p(wj∣zk)=p(di)k=1∑Kp(zk∣di)p(wj∣zk)(2)
而由(2),联合概率转为条件概率:
p(wj∣di)=p(di,wj)p(di)=∑k=1Kp(zk∣di)p(wj∣zk)(3)p(w_j|d_i)=\frac{p(d_i,w_j)}{p(d_i)}=\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)\qquad(3)p(wj∣di)=p(di)p(di,wj)=k=1∑Kp(zk∣di)p(wj∣zk)(3)
(好像也可以这么考虑,从did_idi生成zkz_kzk,是p(zk∣di)p(z_k|d_i)p(zk∣di),固定did_idi,有zkz_kzk类文档,所以会有∑k=1K\sum_{k=1}^{K}∑k=1K,而文档对应的是单个单词wjw_jwj,所以p(wj∣di)会是如上形式p(w_j|d_i)会是如上形式p(wj∣di)会是如上形式)
“极大似然”
要使得p(D,W)p(D,W)p(D,W)最大,也就是使得LLL最大,表示文档did_idi中出现单词wjw_jwj为n(di,wj)n(d_i,w_j)n(di,wj)的概率,累乘得到LLL,这和极大似然估计里面是一样的,使得由参数生成这样子的样本的可能性最大:
L=∏i=1N∏j=1M[p(di,wi)]n(di,wj)=∏i=1N∏j=1M[p(di)∑k=1Kp(zk∣di)p(wj∣zk)]n(di,wj)\begin{aligned}L &=\prod_{i=1}^{N}\prod_{j=1}^{M}[p(d_i,w_i)]^{n(d_i,w_j)} \\&=\prod_{i=1}^{N}\prod_{j=1}^{M}[p(d_i)\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)]^{n(d_i,w_j)} \end{aligned}L=i=1∏Nj=1∏M[p(di,wi)]n(di,wj)=i=1∏Nj=1∏M[p(di)k=1∑Kp(zk∣di)p(wj∣zk)]n(di,wj)
采用对数似然函数logLlogLlogL,累乘变成累加,有:
logL=∑i=1N∑j=1Mn(di,wj)log[p(di)∑k=1Kp(zk∣di)p(wj∣zk)]=∑i=1N∑j=1Mn(di,wj)log p(di)  +  ∑i=1N∑j=1Mn(di,wj)log[∑k=1Kp(zk∣di)p(wj∣zk)]  (4)\begin{aligned}logL&=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)log[p(d_i)\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)]\\ &=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)log\,p(d_i)\;+\;\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)log[\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)]\;(4) \end{aligned}logL=i=1∑Nj=1∑Mn(di,wj)log[p(di)k=1∑Kp(zk∣di)p(wj∣zk)]=i=1∑Nj=1∑Mn(di,wj)logp(di)+i=1∑Nj=1∑Mn(di,wj)log[k=1∑Kp(zk∣di)p(wj∣zk)](4)
观察式(4),可以发现,现在要极大logLlogLlogL,但是前半部分的n(di,wj)n(d_i,w_j)n(di,wj)是可以观察得到的,p(di)p(d_i)p(di)也是可以观察得到的,都不是变量,都是常数,这种情况下,极大logLlogLlogL,则只考虑后半部分,后半部分记做L1L_1L1。继续推导
L1=∑i=1N∑j=1Mn(di,wj)log[∑k=1KQk(zk)p(zk∣di)p(wj∣zk)Qk(zk)]≥∑i=1N∑j=1Mn(di,wj)∑k=1KQk(zk)log[p(zk∣di)p(wj∣zk)Qk(zk)](5)\begin{aligned}L_1&=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)log[\sum_{k=1}^{K}Q_k(z_k)\frac{p(z_k|d_i)p(w_j|z_k)}{Q_k(z_k)}]\\ &\ge\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}Q_k(z_k)log[\frac{p(z_k|d_i)p(w_j|z_k)}{Q_k(z_k)}]\quad(5) \end{aligned}L1=i=1∑Nj=1∑Mn(di,wj)log[k=1∑KQk(zk)Qk(zk)p(zk∣di)p(wj∣zk)]≥i=1∑Nj=1∑Mn(di,wj)k=1∑KQk(zk)log[Qk(zk)p(zk∣di)p(wj∣zk)](5)
上式中,得到L1≥(5)L_1\ge(5)L1≥(5),是由于Jensen不等式:log∑jλjyj≥∑jλjlogyjλj≥0,∑jλj=1log\sum_{j}\lambda_jy_j\ge\sum_{j}\lambda_jlogy_j\qquad\lambda_j\ge0,\sum_{j}\lambda_j=1logj∑λjyj≥j∑λjlogyjλj≥0,j∑λj=1
我们需要随便选择一个Qk(zk)Q_k(z_k)Qk(zk),使得p(zk∣di)p(wj∣zk)Qk(zk)=c\frac{p(z_k|d_i)p(w_j|z_k)}{Q_k(z_k)}=cQk(zk)p(zk∣di)p(wj∣zk)=c
ccc是一个常数,不依赖于zkz_kzk。这样的Qk(zk)Q_k(z_k)Qk(zk)有很多,但是可以这样取,取为p(zk∣di,wj)p(z_k|d_i,w_j)p(zk∣di,wj)。因为有:
p(zk∣di,wj)=p(zk,di,wj)p(di,wj)=p(di,wj∣zk)p(zk)p(di,wj)=p(di∣zk)p(wj∣zk)p(zk)p(di,wj)=p(wj∣zk)p(zk∣di)p(di)p(di,wj)=p(wj∣zk)p(zk∣di)∑k=1Kp(zk∣di)p(wj∣zk)(6)\begin{aligned} p(z_k|d_i,w_j)&=\frac{p(z_k,d_i,w_j)}{p(d_i,w_j)}=\frac{p(d_i,w_j|z_k)p(z_k)}{p(d_i,w_j)}\\ &=\frac{p(d_i|z_k)p(w_j|z_k)p(z_k)}{p(d_i,w_j)}\\ &=\frac{p(w_j|z_k)p(z_k|d_i)p(d_i)}{p(d_i,w_j)}\\ &=\frac{p(w_j|z_k)p(z_k|d_i)}{\sum_{k=1}^{K}p(z_k|d_i)p(w_j|z_k)}\qquad(6) \end{aligned}p(zk∣di,wj)=p(di,wj)p(zk,di,wj)=p(di,wj)p(di,wj∣zk)p(zk)=p(di,wj)p(di∣zk)p(wj∣zk)p(zk)=p(di,wj)p(wj∣zk)p(zk∣di)p(di)=∑k=1Kp(zk∣di)p(wj∣zk)p(wj∣zk)p(zk∣di)(6)
把Qk(zk)Q_k(z_k)Qk(zk)带入(5)可得:
∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)p(zk∣di,wj)](7)\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)log[\frac{p(z_k|d_i)p(w_j|z_k)}{p(z_k|d_i,w_j)}]\qquad(7)i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)log[p(zk∣di,wj)p(zk∣di)p(wj∣zk)](7)
(7)中,log部分下面的分母在求极大时可以省去,因为在logloglog函数对参数p(zk∣di)p(z_k|d_i)p(zk∣di)和p(wj∣zk)p(w_j|z_k)p(wj∣zk)求偏导数时,如(ln5x)’=1/x,所以可以省去,如果保留,在下面也会发现不影响。
(7)省去了log下的分母后,得到:
f=∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)](8)f=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)log[p(z_k|d_i)p(w_j|z_k)]\qquad(8) f=i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)log[p(zk∣di)p(wj∣zk)](8)
所以接下来要做的就是最大化(8)。
EM算法
E-step:更新Qz(zk)=p(zk∣di,wj)Qz(z_k)=p(z_k|d_i,w_j)Qz(zk)=p(zk∣di,wj)
M-step:最大化式(8),得到参数p(zk∣di)p(z_k|d_i)p(zk∣di)和p(wj∣zk)p(w_j|z_k)p(wj∣zk)
约束条件:
s.t.∑k=1Kp(zk∣di)=1∑j=1Mp(wj∣zk)=1\begin{aligned}s.t.&\sum_{k=1}^{K}p(z_k|d_i)=1\\ &\sum_{j=1}^{M}p(w_j|z_k)=1 \end{aligned}s.t.k=1∑Kp(zk∣di)=1j=1∑Mp(wj∣zk)=1
通过不断求取下界最大化(≥\ge≥),逼近似然极大化。
拉格朗日法极大化(8)
使用拉格朗日法求驻点,构造函数LgLgLg:
Lg=f+∑i=1Nρi[1−∑k=1Kp(zk∣di)]+∑i=1Nτi[1−∑j=1Mp(wj∣zk)]Lg=f+\sum_{i=1}^{N}\rho_i[1-\sum_{k=1}^{K}p(z_k|d_i)]+\sum_{i=1}^{N}\tau_i[1-\sum_{j=1}^{M}p(w_j|z_k)]Lg=f+i=1∑Nρi[1−k=1∑Kp(zk∣di)]+i=1∑Nτi[1−j=1∑Mp(wj∣zk)]
对LgLgLg的变量p(zk∣di)p(z_k|d_i)p(zk∣di)求偏导得到:
∇p(zk∣di)Lg=∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)p(zk∣di)  −  ∑k=1K∑i=1Nρi  =0\nabla_{p(z_k|d_i)}Lg=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}\frac{p(z_k|d_i,w_j)}{p(z_k|d_i)}\;-\;\sum_{k=1}^{K}\sum_{i=1}^{N}\rho_i\;=0∇p(zk∣di)Lg=i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di)p(zk∣di,wj)−k=1∑Ki=1∑Nρi=0
对于减号左右两项,p(zk∣di)p(z_k|d_i)p(zk∣di)都是对k和i的累加(右边现在还没有),可以两边同时乘以p(zk∣di)p(z_k|d_i)p(zk∣di),得:
∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)=∑i=1N∑k=1Kρip(zk∣di)(9)\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)=\sum_{i=1}^{N}\sum_{k=1}^{K}\rho_ip(z_k|d_i)\qquad(9)i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)=i=1∑Nk=1∑Kρip(zk∣di)(9)
而由约束条件∑k=1Kp(zk∣di)=1\sum_{k=1}^{K}p(z_k|d_i)=1∑k=1Kp(zk∣di)=1,所以从上式求得:
ρi=∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)\rho_i=\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)ρi=j=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)
因为∑k=1Kp(zk∣di,wj)  =1\sum_{k=1}^{K}p(z_k|d_i,w_j)\;=1∑k=1Kp(zk∣di,wj)=1,所以ρi\rho_iρi也可以表示为ρi=n(di)\rho_i=n(d_i)ρi=n(di)。
继续,对于LgLgLg的变量p(wj∣zk)p(w_j|z_k)p(wj∣zk)求偏导得到:
∇p(wj∣zk)Lg=∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)p(wj∣zk)  −  ∑i=1M∑k=1Kτk  =0\nabla_{p(w_j|z_k)}Lg=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}\frac{p(z_k|d_i,w_j)}{p(w_j|z_k)}\;-\;\sum_{i=1}^{M}\sum_{k=1}^{K}\tau_k\;=0∇p(wj∣zk)Lg=i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(wj∣zk)p(zk∣di,wj)−i=1∑Mk=1∑Kτk=0
∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)p(wj∣zk)=∑i=1M∑k=1Kτk\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}\frac{p(z_k|d_i,w_j)}{p(w_j|z_k)}=\sum_{i=1}^{M}\sum_{k=1}^{K}\tau_ki=1∑Nj=1∑Mn(di,wj)k=1∑Kp(wj∣zk)p(zk∣di,wj)=i=1∑Mk=1∑Kτk
两边乘上p(wj∣zk)p(w_j|z_k)p(wj∣zk)得:
∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)=∑k=1Kτk∑i=1Mp(wj∣zk)(10)\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)=\sum_{k=1}^{K}\tau_k\sum_{i=1}^{M}p(w_j|z_k)\qquad(10)i=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)=k=1∑Kτki=1∑Mp(wj∣zk)(10)
由约束条件∑j=1Mp(wj∣zk)=1\sum_{j=1}^{M}p(w_j|z_k)=1∑j=1Mp(wj∣zk)=1,得:
∑i=1N∑j=1Mn(di,wj)∑k=1Kp(zk∣di,wj)=∑k=1Kτk\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)\sum_{k=1}^{K}p(z_k|d_i,w_j)=\sum_{k=1}^{K}\tau_ki=1∑Nj=1∑Mn(di,wj)k=1∑Kp(zk∣di,wj)=k=1∑Kτk
变形一下:
∑k=1K∑i=1N∑j=1Mn(di,wj)p(zk∣di,wj)=∑k=1Kτk\sum_{k=1}^{K}\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)p(z_k|d_i,w_j)=\sum_{k=1}^{K}\tau_kk=1∑Ki=1∑Nj=1∑Mn(di,wj)p(zk∣di,wj)=k=1∑Kτk
∴\therefore∴
τk=∑i=1N∑j=1Mn(di,wj)p(zk∣di,wj)\tau_k=\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)p(z_k|d_i,w_j)τk=i=1∑Nj=1∑Mn(di,wj)p(zk∣di,wj)
于是,M步更新的两个参数p(wj∣zk)p(w_j|z_k)p(wj∣zk)和p(zk∣di)p(z_k|d_i)p(zk∣di)可以通过它们来表示,具体来看,先看(9)式,里面的未知量ρi\rho_iρi已经表示出来了,所以可以通过(9)求得p(zk∣di)p(z_k|d_i)p(zk∣di):
∑k=1K∑j=1Mn(di,wj)p(zk∣di,wj)ρi  =  ∑k=1Kp(zk∣di)\frac{\sum_{k=1}^{K}\sum_{j=1}^{M}n(d_i,w_j)p(z_k|d_i,w_j)}{\rho_i}\;=\;\sum_{k=1}^{K}p(z_k|d_i)ρi∑k=1K∑j=1Mn(di,wj)p(zk∣di,wj)=k=1∑Kp(zk∣di)
p(zk∣di)  =  ∑j=1Mn(di,wj)p(zk∣di,wj)n(di)p(z_k|d_i)\;=\;\frac{\sum_{j=1}^{M}n(d_i,w_j)p(z_k|d_i,w_j)}{n(d_i)}p(zk∣di)=n(di)∑j=1Mn(di,wj)p(zk∣di,wj)
可以通过(10)求解p(wj∣zk)p(w_j|z_k)p(wj∣zk):
p(wj∣zk)=∑i=1Nn(di,wj)τkp(w_j|z_k)=\frac{\sum_{i=1}^{N}n(d_i,w_j)}{\tau_k} p(wj∣zk)=τk∑i=1Nn(di,wj)
p(wj∣zk)=∑i=1Nn(di,wj)∑i=1N∑j=1Mn(di,wj)p(zk∣di,wj)p(w_j|z_k)=\frac{\sum_{i=1}^{N}n(d_i,w_j)}{\sum_{i=1}^{N}\sum_{j=1}^{M}n(d_i,w_j)p(z_k|d_i,w_j)} p(wj∣zk)=∑i=1N∑j=1Mn(di,wj)p(zk∣di,wj)∑i=1Nn(di,wj)
……
数学在挂科边缘试探的我……只希望模式识别能好好过去,推上面第一次推了一个下午才推完
EM算法推导pLSA相关推荐
- 人人都能看懂的EM算法推导
作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...
- em算法 实例 正态分布_人人都能看懂的EM算法推导
↑ 点击蓝字 关注极市平台作者丨August@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/36331115编辑丨极市平台 极市导读 EM算法到底是什么,公式推导怎么去 ...
- EM算法(1)—— 彻底理解EM算法推导
最近看了很多关于EM算法推导的文章,包括<统计学习方法(第二版)>中关于EM算法的内容,总感觉说得不够清楚.虽然公式都写得挺详细,但是没有说清楚为什么要这样算,怎么想到这样变形的,本文总结 ...
- 贝叶斯网络、EM算法推导
文章目录 一.贝叶斯网络 1.1 网络推导 1.2 例题解析 二.EM算法 一.贝叶斯网络 贝叶斯网亦称"信念网",它借助有向无环图(Directed Acyclic Graph, ...
- EM算法推导以及在高斯混合模型中的应用(详细)
文章目录 EM算法的导出 EM算法的收敛性 EM算法在高斯混合模型中的应用 高斯混合模型 高斯混合模型参数估计的EM算法 算法步骤 算法推导 以一维情形为例p=1 参考教材:<统计学习方法> ...
- 概率语言模型及其变形系列-PLSA及EM算法
转载自:http://blog.csdn.net/yangliuy/article/details/8330640 本系列博文介绍常见概率语言模型及其变形模型,主要总结PLSA.LDA及LDA的变形模 ...
- 主题模型(3)——PLSA模型及其EM算法求解
之前整理过两篇关于主题模型的博客<文本建模之Unigram Model,PLSA与LDA>和<再看LDA主题模型>,主要是整理了主题模型的由来和推导过程,关于模型参数怎么计算没 ...
- 第八课.EM算法的合理性与算法推导
目录 EM算法背景 EM算法迭代的合理性 EM算法推导 EM算法的E步和M步 分析EM算法的由来 EM算法背景 在硬币投掷和班级身高问题中,引入了隐变量问题,模型变成了混合模型,我们不能直接利用极大似 ...
- 机器学习笔记(十七)——EM算法的推导
一.Jensen 不等式 在EM算法的推导过程中,用到了数学上的Jensen不等式,这里先来介绍一下. 若Ω是有限集合{x1,x2,-,xn}{x1,x2,-,xn}\{x_1,x_2,\ldots, ...
最新文章
- 功能很全的图书馆管理系统
- java编程50实例_java编程实例大全及详解谜底(50例).doc
- xcode 允许SVN管理项目文件
- x86中的页表结构和页表项格式
- 锁存器的工作原理_数字电路学习笔记(十):更多锁存器和触发器
- 多项式除法,多项式取模
- python随机抽取人名_python实现艾宾浩斯背单词功能,实现自动提取单词、邮件发送,再也不用担心背单词啦...
- 上位机与基恩士plc以太网通讯_2020湛江AB罗克韦尔PLC主机回收二手或全新
- 关闭windows自带杀毒软件Windefend命令,命令行关闭windows服务
- [PY3]——IO——文件目录操作
- java拷贝文件夹和删除文件夹
- 现在70岁左右的人算不算是老年人?
- POJ NOI MATH-7831 计算星期几
- RHCE系列之权限管理----ACL(访问控制列表)
- Tensorflow官方文档学习理解 (五)-卷积MNIST
- Linux如何修改makefile文件,linux中Makefile的使用
- 同网段的VLAN隔离
- python梦幻西游辅助_GitHub - woshiliushan/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
- linux中man手册用法,Linux中man手册的使用
- 车辆保险详细说明举例介绍