前言
因为想做一下文本自动摘要,文本自动摘要是NLP的重要应用,搜了一下,有一种TextRank的算法,可以做文本自动摘要。其算法思想来源于Google的PageRank,所以先把PageRank给了解一下。
马尔科夫链
我感觉说到PageRank,应该要提起马尔科夫链,因为PageRank在计算的过程中,和马尔科夫链转移是十分相似的,只是PageRank在马尔科夫链的转移上做了一些改动。
马尔科夫链的维基百科里是这么说的:
马尔可夫链是满足马尔可夫性质的随机变量序列 X 1 , X 2 , X 3 , . . . X_{1}, X_{2}, X_{3}, ... X1,X2,X3,...。即给出当前状态,将来状态和过去状态是相互独立的。从形式上看,如果两边的条件分布有定义(即如果 Pr ( X 1 = x 1 , . . . , X n = x n ) > 0 \Pr(X_{1}=x_{1},...,X_{n}=x_{n})>0 Pr(X1=x1,...,Xn=xn)>0则 Pr ( X n + 1 = x ∣ X 1 = x 1 , X 2 = x 2 , … , X n = x n ) = Pr ( X n + 1 = x ∣ X n = x n ) \Pr(X_{ {n+1}}=x\mid X_{1}=x_{1},X_{2}=x_{2},\ldots ,X_{n}=x_{n})=\Pr(X_{ {n+1}}=x\mid X_{n}=x_{n}) Pr(Xn+1=x∣X1=x1,X2=x2,…,Xn=xn)=Pr(Xn+1=x∣Xn=xn)。
X i Xi Xi的可能值构成的可数集S叫做该链的“状态空间”。
形式定义好像有点复杂。我这里只想介绍自己所认识的马氏链,一个简单通俗易懂的马氏链。
假设有一个离散型随机变量 w w w,表示的是当前社会中贫穷,中等和富有的人的概率,其初始分布是: w = ( 0.21 , 0.68 , 0.11 ) w=(0.21,0.68,0.11) w=(0.21,0.68,0.11) 表示社会中贫穷的人占28%,中等的人占68%,富有的人占11%,
这是初始状态,可以想象成这是我们所处地球的第一代人 X 1 X_{1} X1(那个时候就有贫富差距了),接下来第一代人要生小孩,形成第二代人 X 2 X_{2} X2,这个叫做状态的转移,从 X 1 X_{1} X1转移到 X 2 X_{2} X2。怎么转移呢,这是有一个概率的:
父代\子代 | 儿子是穷人 | 儿子是中等 | 儿子是富人 |
---|---|---|---|
父亲是穷人 | 0.65 | 0.28 | 0.07 |
父亲是中等 | 0.15 | 0.67 | 0.18 |
父亲是富人 | 0.12 | 0.36 | 0.52 |
上述表格代表的是,父亲属于哪个阶级,那儿子属于某个阶级的概率。比如父亲是富人,儿子也是富人的概率是 0.52,这表示大概一半的富二代以后都会败光家产。所以根据以上表格,第二代 X 2 X_{2} X2穷人的概率是 0.21 ∗ 0.65 + 0.68 ∗ 0.15 + 0.11 ∗ 0.12 = 0.252 0.21*0.65+0.68*0.15+0.11*0.12=0.252 0.21∗