统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现
生活随笔
收集整理的這篇文章主要介紹了
统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PLSA 概率潛在語義分析
import numpy as np import collections import jiebaclass PLSA:def __init__(self,text_list,k):self.k = kself.text_list = text_listself.text_num = len(text_list)self.get_X()def get_X(self):self.cuted_text = [jieba.lcut(text,cut_all=True) for text in self.text_list]self.word_all = []for i in self.cuted_text:self.word_all.extend(i)self.word_set = list(set(self.word_all))self.word_num = len(self.word_set)self.word_dict = {}for index,word in enumerate(self.word_set):self.word_dict[word] = indexself.X = np.zeros((self.word_num,self.text_num))for i in range(self.text_num):count_ = collections.Counter(self.cuted_text[i])for k, v in count_.items():self.X[self.word_dict[k],i] = vdef update_p_z_wd(self):self.z_wd = np.zeros((self.word_num,self.text_num,self.k))for i in range(self.word_num):for j in range(self.text_num):self.z_wd[i,j] = np.array([self.w_z[i]*self.z_d[:,j]]) / np.sum([self.w_z[i]*self.z_d[:,j]])def fit(self,max_iter):self.w_z = np.random.random((self.word_num,self.k))self.z_d = np.random.random((self.k,self.text_num))for iter in range(max_iter):self.update_p_z_wd()for k in range(self.k):for i in range(self.word_num):self.w_z[i,k] = np.sum(self.X[i]*self.z_wd[i,:,k])/\np.sum(self.X*self.z_wd[:,:,k])for j in range(self.text_num):self.z_d[k,j] = np.sum(self.X[:,j]*self.z_wd[:,j,k])/np.sum(self.X[:,j])def main():text_list = ['一個月前,足協杯十六進八的比賽,遼足費盡周折對調主客場,目的只是為了葫蘆島體育場的啟用儀式。那場球遼足5比0痛宰“主力休息”的天津泰達。幾天后中超聯賽遼足客場對天津,輪到遼足“全替補”,\1比3輸球,甘為天津泰達保級的祭品。那時,遼足以“聯賽保級問題不大,足協杯拼一拼”作為主力和外援聯賽全部缺陣的理由。','被一腳踹進“忘恩負義”坑里的孫楊,剛剛爬出來,又有手伸出來,要把孫楊再往坑里推。即使是陪伴孫楊參加世錦賽的張亞東(微博)教練,\也沒敢大義凜然地伸出援手,“孫楊愿意回去我不攔”,球又踢給了孫楊。張亞東教練怕什么呢?','孫楊成績的利益分配,以及榮譽的分享,圈里人都知道,拿了世界冠軍和全運冠軍,運動員都會有相應的高額獎金,那么主管教練也會得到與之對應的豐厚獎勵,\所以孫楊獲得的榮譽,也會惠及主管教練。']lsa = PLSA(text_list,k=2)lsa.fit(10)print(lsa.w_z)print(lsa.z_d)if __name__ == '__main__':main()##result------------------------------ Building prefix dict from the default dictionary ... Loading model from cache /var/folders/3w/zr18wp210691hlwzbw96h3fh0000gn/T/jieba.cache Loading model cost 0.689 seconds. Prefix dict has been built successfully. [[4.67969591e-02 3.78213435e-02][6.02791423e-03 6.12287057e-04][6.35791395e-03 2.18506271e-04][6.54102855e-03 1.05119379e-23][6.54102855e-03 9.97133787e-24][6.18450808e-03 4.25427360e-04][5.29082580e-17 3.12210120e-02]……………………[7.27607559e-18 1.56105060e-02][6.54102855e-03 1.71549969e-21]][[6.23685583e-05 9.99991157e-01 8.38329548e-01][9.99937631e-01 8.84278606e-06 1.61670452e-01]]總結
以上是生活随笔為你收集整理的统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计学习方法第十七章作业:LSA潜在语义
- 下一篇: 统计学习方法第十九章作业:马尔可夫链蒙特