2017.06.22:LDA與困惑度程式碼
LDA程式碼:
class LDAModel(object): def __init__(self, dpre): self.dpre = dpre # 獲取預處理引數 # # 模型引數 # 聚類個數K,迭代次數iter_times,每個類特徵詞個數top_words_num,超引數α(alpha) β(beta) # self.K = K self.beta = beta self.alpha = alpha self.iter_times = iter_times self.top_words_num = top_words_num # # 檔案變數 # 分好詞的檔案trainfile # 詞對應id檔案wordidmapfile # 文章-主題分佈檔案thetafile # 詞-主題分佈檔案phifile # 每個主題topN詞檔案topNfile # 最後分派結果檔案tassginfile # 模型訓練選擇的引數檔案paramfile # self.wordidmapfile = wordidmapfile self.trainfile = trainfile self.thetafile = thetafile self.phifile = phifile self.topNfile = topNfile self.tassginfile = tassginfile self.paramfile = paramfile # p,概率向量 double型別,儲存取樣的臨時變數 # nw,詞word在主題topic上的分佈 # nwsum,每各topic的詞的總數 # nd,每個doc中各個topic的詞的總數 # ndsum,每各doc中詞的總數 self.p = np.zeros(self.K) self.nw = np.zeros((self.dpre.words_count, self.K), dtype="int") self.nwsum = np.zeros(self.K, dtype="int") self.nd = np.zeros((self.dpre.docs_count, self.K), dtype="int") self.ndsum = np.zeros(dpre.docs_count, dtype="int") self.Z = np.array( [[0 for y in xrange(dpre.docs[x].length)] for x in xrange(dpre.docs_count)]) # M*doc.size(),文件中詞的主題分佈 # 隨機先分配型別 for x in xrange(len(self.Z)): self.ndsum[x] = self.dpre.docs[x].length for y in xrange(self.dpre.docs[x].length): topic = random.randint(0, self.K - 1) self.Z[x][y] = topic self.nw[self.dpre.docs[x].words[y]][topic] += 1 self.nd[x][topic] += 1 self.nwsum[topic] += 1 self.theta = np.array([[0.0 for y in xrange(self.K)] for x in xrange(self.dpre.docs_count)]) self.phi = np.array([[0.0 for y in xrange(self.dpre.words_count)] for x in xrange(self.K)]) def sampling(self, i, j): topic = self.Z[i][j] word = self.dpre.docs[i].words[j] self.nw[word][topic] -= 1 self.nd[i][topic] -= 1 self.nwsum[topic] -= 1 self.ndsum[i] -= 1 Vbeta = self.dpre.words_count * self.beta Kalpha = self.K * self.alpha self.p = (self.nw[word] + self.beta) / (self.nwsum + Vbeta) * \ (self.nd[i] + self.alpha) / (self.ndsum[i] + Kalpha) for k in xrange(1, self.K): self.p[k] += self.p[k - 1] u = random.uniform(0, self.p[self.K - 1]) for topic in xrange(self.K): if self.p[topic] > u: break self.nw[word][topic] += 1 self.nwsum[topic] += 1 self.nd[i][topic] += 1 self.ndsum[i] += 1 return topic def est(self): # Consolelogger.info(u"迭代次數為%s 次" % self.iter_times) for x in xrange(self.iter_times): for i in xrange(self.dpre.docs_count): for j in xrange(self.dpre.docs[i].length): topic = self.sampling(i, j) self.Z[i][j] = topic logger.info(u"迭代完成。") logger.debug(u"計算文章-主題分佈") self._theta() logger.debug(u"計算詞-主題分佈") self._phi() logger.debug(u"儲存模型") self.save() def _theta(self): for i in xrange(self.dpre.docs_count): self.theta[i] = (self.nd[i] + self.alpha) / (self.ndsum[i] + self.K * self.alpha) def _phi(self): for i in xrange(self.K): self.phi[i] = (self.nw.T[i] + self.beta) / (self.nwsum[i] + self.dpre.words_count * self.beta)
困惑度:
def f_perplexity(word_frequency,word_count): #計算困惑度
duishu=-math.log(word_frequency)
kuohaoli=duishu/word_count
perplexity=math.exp(kuohaoli)
return perplexity
相關推薦
2017.06.22:LDA與困惑度程式碼
LDA程式碼: class LDAModel(object): def __init__(self, dpre): self.dpre = dpre # 獲取預處理引數 # # 模型引數 # 聚類個數K,迭代次數iter_times,每個類特徵詞個數
2017.06.22
nds 之間 mon 印度 new rand extend ear instance package Java.Test; import java.util.Calendar; public class Lianxi { public static void main
微軟 Build 2017 開發者大會:Azure 與 AI 的快速發展
一年一度的微軟 Build 大會準時起航,本年度大會從舊金山移師西雅圖,一個近年來憑藉女神湯唯而在中國家喻戶曉的美國西部海濱城市。 距離開場15分鐘,大會主會場已經就緒。 會議開頭是一個 MineCraft 拼出的 Seattle。 首先薩提亞·內德拉開始 Build 2017 開題演講,首
Android API level 與version對應關係(最新整理2017.06.26 16:21)
Platform Version API Level VERSION_CODE 中文名稱 Android API 26 26 Android 7.1.1/7.1 25 Nougat Android 7
【2017-05-22】WebForm內置對象:Application和ViewState、Repeater的Command用法
操作數 傳值 rep 服務器 創建 bject bsp strong () 一、內置對象 1、Application 存貯在服務器端,占用服務器內存生命周期:永久 所有人訪問的都是這一個對象 傳值:傳的是object類型可以傳對象。 string s =TextBox1.T
【2017-06-20】Linux應用開發工程師C/C++面試問題之一:Linux多線程程序的同步問題
依次 其它 如果 開發工程師 logs 特殊 另一個 特殊情況 發生 參考之一:Linux 線程同步的三種方法 鏈接地址:http://www.cnblogs.com/eleclsc/p/5838790.html 簡要回答: Linux下線程同步最常用的三種方法就是互斥鎖、
2017-06-28(passwd 主要組與附屬組 gpasswd newgrp)
鎖定 同時 tro 名稱 strong 刪除 span new gpa passwd passwd -l 用戶名 (鎖定用戶) passwd -u 用戶名 (解鎖用戶) passwd -d 用戶名 (清楚用戶密碼) 主要組與附屬組 一個用戶可以同
第一次作業:Linux 2.6.32的進程模型與調度器分析
範圍 喚醒 最大 被調用 test ini writeback uid endif 1.前言 本文分析的是Linux 2.6.32版的進程模型以及調度器分析。在線查看 源碼下載 本文主要討論以下幾個問題: 什麽是進程?進程是如何產生的?進程都有那些? 在操作系統中,
百度強勢入場,AI們集體打 call:揭秘百度智能客服背後的語音技術與應用
一起 直接 net sap pac 上下 應用 class 例子 兩年前的今天,AI流行下圍棋;今天,AI流行打電話……這個潮流的最近一次上演,是幾天前的百度AI開發者大會上,李彥宏現場播放了百度AI客服邀請開發者的真實電話錄音。當時我就在現場,第一通電話裏那位開發者方言比
Android:禁止viewpager左右滑動,去除viewpager切換時動畫,解決viewpager與百度地圖滑動衝突
Android自定義viewpager,禁止viewpager左右滑動,去除viewpager切換時動畫,解決viewpager與百度地圖滑動衝突 public class CustomViewPager extends ViewPager { private boolean e
RISC-V雙週簡報0x1a:RISC-V Day Shanghai即將舉行,紀念版T恤不容錯過(2018-06-22)
RISC-V 雙週簡報 (2018-06-22) 要點新聞: RISC-V Day Shanghai即將舉行,紀念版T恤不容錯過 第二輪 RISC-V Day 2018 Shanghai學生參會資助計劃開啟 RV新聞 RISC-V Day 2018 Sha
Spark:在Spark叢集中,叢集的節點個數、RDD分割槽個數、cpu核心個數三者與並行度的關係??
梳理一下Spark中關於併發度涉及的幾個概念File,Block,Split,Task,Partition,RDD以及節點數、Executor數、core數目的關係。 輸入可能以多個檔案的形式儲存在HDFS上,每個File都包含了很多塊,稱為Block。 當Spark
【工具】Visual Studio 2017安裝提示:找不到與以下引數匹配的產品
問題: 下載好Visual Studio 2017 Installer執行安裝時,提示: 解決: 刪除隱藏檔案C:\ProgramData\Microsoft\VisualStudio\Packages; cmd視窗中執行C:\Program Files (x
數據結構開發(22):二叉樹的轉換、深層特性與存儲結構設計
his 9.png 二叉 klist efi remove ren binary 兩個 0.目錄 1.樹到二叉樹的轉換 2.二叉樹的深層特性 3.二叉樹的存儲結構設計 4.小結 1.樹到二叉樹的轉換 通用樹結構的回顧: 雙親孩子表示法 每個結點都有一個指向其雙親的指針
【Android UI設計與開發】第06期:底部選單欄(一)使用TabActivity實現底部選單欄
轉載請註明出處:http://blog.csdn.net/yangyu20121224/article/details/8989063 從這一篇文章開始,我們將進入到一個應用程式主介面UI的開發和設計中了,底部選單欄在Android的應用開發當
python下進行lda主題挖掘(三)——計算困惑度perplexity
到2018年3月7日為止,本系列三篇文章已寫完,可能後續有新的內容的話會繼續更新。 本篇是我的LDA主題挖掘系列的第三篇,專門來介紹如何對訓練好的LDA模型進行評價。 訓練好好LDA主題模型後,如何評價模型的好壞?能否直接將訓練好的
LDA(一):LDA前身PLSA介紹與推導
PLSA介紹與推導: 概率隱語義分析(PLSA)是一個著名的針對文字建模的模型,是一個生成模型。因為加入了主題模型,所以可以很大程度上改善多詞一義和一詞多義的問題。 數學基礎: 生成模型: 預測模型的公式是P(y|x),即給定輸入,輸出給定輸入的概
QT:火星座標系 (GCJ-02) 與百度座標系 (BD-09ll) 簡介及轉換演算法
首先向轉換演算法的作者 @coolypf 致敬!轉換演算法文章:http://blog.csdn.net/coolypf/article/details/8569813 1、美國GPS使用的是WGS84座標系統,以經緯度的形式來表示地球平面上的某一個位置。但在我國,出於國家安全考慮,國內所有導
CIIS2018演講實錄丨百度王海峰:語言與知識
文章釋出於公號【數智物語】 (ID:decision_engine),關注公號不錯過每一篇乾貨。 轉自 | 中國人工智慧學會 作者 | 王海峰 此次小編為大家整
關於前端直播(videoJS與百度雲web播放器:Cyberplayer3.0試用)
文章目錄 videoJS 開啟方式 記錄 初始化 居中播放按鈕 百度視訊播放器demo 開啟方式 修改