LDA文件主題發現R
1.# 載入rJava、Rwordseg、tm、lda庫
library(rJava);
library(Rwordseg);
library("lda", lib.loc="~/R/win-library/3.3")
library("tm", lib.loc="~/R/win-library/3.3")
2.# == 讀入資料
lecture=read.csv("E:\\worldcup_test.txt",sep=",");
1.用正則剔除URL
res=lecture[lecture!=" "];
res=gsub(pattern="http://t.cn/[A-Za-z0-9]+$+" ,"",res);
res=gsub(pattern="[我|你|的|了|是]","",res);
2.jieba
library(jiebaR) #載入
3.加入詞典,以及停用詞,去除標點
cutter <- worker(bylines = T,user = "G:\\hhe\\15W.txt",stop_word = "G:\\hhe\\dtop.txt")
4.分詞
comments_seg <- cutter["G:\\hhe\\8yue2.txt"]
5.讀入分詞後的檔案
comments<- readLines("G:\\hhe\\8yue2.segment.2017-05-04_19_40_41.txt" ,encoding="UTF-8")
6.向量化
comments <- as.list(comments) #將向量轉化為列表
doc.list <- strsplit(as.character(comments),split=" ") #將每行文字,按照空格分開,每行變成一個詞向量,儲存在列表裡
7.建立一個詞典,並給每個詞取一個編號:
term.table <- table(unlist(doc.list))
#這裡有兩步,unlist用於統計每個詞的詞頻;table把結果變成一個交叉表式的factor,原理類似python裡的詞典,key是詞,value是詞頻.
8.排序
term.table <- sort(term.table, decreasing = TRUE) #按照詞頻降序排列
9.為了提高建模效果,我們可以將單字去掉,同時也可以把出現次數少於5次的詞去掉。
del <- term.table < 5| nchar(names(term.table))<2 #把不符合要求的篩出來
term.table <- term.table[!del] #去掉不符合要求的
vocab <- names(term.table) #建立詞庫
10.把文字的格式整理成lda包建模需要的格式
get.terms <- function(x) {
index <- match(x, vocab) # 獲取詞的ID
index <- index[!is.na(index)] #去掉沒有查到的,也就是去掉了的詞
rbind(as.integer(index - 1), as.integer(rep(1, length(index)))) #生成矩陣結構
}
documents <- lapply(doc.list, get.terms)
11.引數設定
這些為LDA建模需要先設定的幾個引數,關於alpha、eta的設定和作用,引用樑斌penny的一段話:
其中α,大家可以調大調小了試試看,調大了的結果是每個文件接近同一個topic,即讓p(wi|topici)發揮的作用小,這樣p(di|topici)發揮的作用就大。其中的β,調大的結果是讓p(di|topici)發揮的作用變下,而讓p(wi|topici)發揮的作用變大,體現在每個topic更集中在幾個詞彙上面,或者而每個詞彙都儘可能的百分百概率轉移到一個topic上。
接下來是主題建模的過程,以文字量大小和迭代次數多少,用時會不同,多則幾十分鐘,少則一兩分鐘。
K <- 10 #主題數
G <- 5000 #迭代次數
alpha <- 0.10
eta <- 0.02
12.開始建模,以文字量大小和迭代次數多少,用時會不同
library(lda)
set.seed(357)
fit <- lda.collapsed.gibbs.sampler(documents = documents, K = K, vocab = vocab, num.iterations = G, alpha = alpha, eta = eta, initial = NULL, burnin = 0, compute.log.likelihood = TRUE)
13.視覺化引數
theta <- t(apply(fit$document_sums + alpha, 2, function(x) x/sum(x))) #文件—主題分佈矩陣
phi <- t(apply(t(fit$topics) + eta, 2, function(x) x/sum(x))) #主題-詞語分佈矩陣
term.frequency <- as.integer(term.table) #詞頻
doc.length <- sapply(documents, function(x) sum(x[2, ])) #每篇文章的長度,即有多少個詞
14.視覺化
library(LDAvis)
json <- createJSON(phi = phi, theta = theta,
doc.length = doc.length, vocab = vocab,
term.frequency = term.frequency)#json為作圖需要資料,下面用servis生產html檔案,通過out.dir設定儲存位置
serVis(json, out.dir = './vis', open.browser = FALSE)
15為了解決亂碼的問題,我們需要將其中的lda.json檔案的編碼改成UTF8格式,你可以手動改,也可以用R來自動改。
writeLines(iconv(readLines("./vis/lda.json"), from = "GBK", to = "UTF8"),
file("./vis/lda.json", encoding="UTF-8"))
相關推薦
LDA文件主題發現R
1.# 載入rJava、Rwordseg、tm、lda庫 library(rJava); library(Rwordseg); library("lda", lib.loc="~/R/win-library/3.3") library("tm",
[python] LDA處理文件主題分佈程式碼入門筆記
以前只知道LDA是個好東西,但自己並沒有真正去使用過。同時,關於它的文章也非常之多,推薦大家閱讀書籍《LDA漫遊指南》,最近自己在學習文件主題分佈和實體對齊中也嘗試使用LDA進行簡單的實驗。這篇文章主要是講述Python下LDA的基礎用法,希望對大家有所幫助。如果文章中有錯誤或不足之處,還請海涵~
LDA(文件主題生成模型)--零基礎(一)
本文目的在於用最簡單的語言,給大家介紹LDA的原理以及使用方法。 首先,我們這裡有M篇文件,每篇文件有個單詞,如果文件是英文,就是每個單獨的單詞;如果是中文,則需要分詞處理,分詞處理又需要用已有的分詞的演算法,比較複雜,所以我們這裡先只考慮英文。我們現在想知道,每篇文章,
讀《基於文件主題結構的關鍵詞抽取方法研究》有感(一)
沒錯,這是一篇讀後感。今天拜讀了劉知遠老師的博士畢業論文。 一、研究內容: 1、基於文件內部資訊,利用文件的詞聚類演算法構建文件主題,進行關鍵詞抽取。 2、基於文件外部資訊,利用隱含主題模型構建文件主題,進行關鍵詞抽取。 3、綜合利用隱含主題模型和文件結構資訊,進行關鍵詞抽取。 4、
Confluence 6 文件主題合併問答
在 Confluence 官方 前期釋出的訊息 中,文件主題在 Confluence 6.0 及其後續版本中已經不可用。我們知道你可能對這個有很多好好奇的問題,因此我們在這裡設定了一個問答用於幫助你將這個主題升級到 Confluence 6.0。 如果你還有其他問題,你可以在
android 項目R文件丟失解決的方法
系統 size error tar XML ror ont androi col R文件丟失的原因有非常多,這裏提供幾種解決的方法: 1. 選中項目,點擊 Project — Clean , 清理一下項目。 2. 選中項目,右鍵 選擇 Android Tools —
作業一:登錄界面(優化,能讀取鎖定文件中的任意用戶名,一旦發現所輸入的用戶名是鎖定文件中的,立即告知並跳出循環)
col cnblogs 循環 lin auth pen str flag div 1 #Author:AXIN 2 #功能:登錄窗口 3 # 1.輸入用戶名,密碼 4 # 2.認證成功後輸出提示信息,表示歡迎 5 # 3.輸錯
R語言文件相關的操作
文件權限 min git -1 長度 rename path ech 作用 1. 文件系統介紹 R語言對文件系統的操作,包括文件操作和目錄操作,函數API都定義在base包中。 2. 目錄操作 2.1 查看目錄 查看當前目錄下的子目錄。 # 啟動R程序 ~
R中讀取文件,找不到路徑問題 No such file or directory
con tracking air csdn rac rect 路徑 路徑和 data R中讀取文件,找不到路徑問題 No such file or directory 近日,讀取文件時。出現例如以下問題 > passenger = read.c
老男孩教育每日一題-第82天-發現文件系統只讀了,是什麽原因?如何解決?
文件系統 只讀 每日一題 參考答案目前已知造成硬盤分區只讀的可能原因有:文件系統錯誤內核相關硬件驅動bug磁盤壞道HBA卡故障RAID卡故障解決方法:1.重啟系統後看看是否可以自動恢復2.使用fdisk修復3.卸載只讀的分區,然後重新mount掛載mount -o remount,rw /網友回答
項目GEN包下的R文件丟失
list lis http r文件丟失 5% ongl aid 文件丟失 hao123 %E5%85%B3%E4%BA%8E%E6%8E%A7%E4%BB%B6%E7%9A%84%E5%8A%A8%E7%94%BB%E7%BC%A9%E6%94%BE%E9%97%AE%E9
操作系統-文件目錄(又發現一個數據結構)
spa 文件目錄 height 數據結構 png 操作系統 src title 技術分享 另外一種回答 ——————————————————- 操作系統-文件目錄(又發現一個數據結構)
R讀取excel文件
方法 讀取 pen jar 出現 很多 顯示 數據 lan 2017.09.05 我一個下午的成果啊啊啊啊,看看失敗 不禁感嘆一聲,失敗的路真是多啊!!!! 一.安裝xlsx包 下面具體講一講怎麽弄的(太笨了,所以學得慢,需要一步一步的來) 用R讀取excel文件,
【轉】python文件打開方式詳解——a、a+、r+、w+區別
不能 mos open col strong cnblogs span ast last 原文地址:http://blog.csdn.net/ztf312/article/details/47259805 第一步 排除文件打開方式錯誤: r只讀,r+讀寫,不創建 w新建只寫
R數據接口_CSV文件
als 3.2 接口 frame row 文本 lte star creat 獲取和設置工作目錄 可以使用getwd()函數來檢查R工作區指向哪個目錄,使用setwd()函數設置新的工作目錄。 # Get and print current working director
R讀 txt 文件
clas rck 分隔符 ota 表示 community truct utf-8 post house<-read.table("house_data.txt", header = TRUE, sep=‘|‘,fileEncoding =‘UTF-8‘)id|hou
python文件讀寫 - 文件r+ open讀寫實際表現
打開 而不是 imp 指定 tell int 文件打開 aid end 先說結論: 文件r+ open: 1. write()不能實現插入寫,它總是覆蓋寫或附加寫; 2. 如果文件一打開即write(),則從開頭覆蓋寫; 3. 如果文件一打開,用f.seek()
expect+scp傳輸文件發現文件丟失
如果 都是 背景 post 大小 鏈接 就是 原來 測試 背景 使用expect+scp去跨機器傳輸文件,(別問我為什麽,因為公司的測試機器都是通過堡壘機的,無法繞開堡壘機,只能暫時使用這個方法了),結果發現從A傳遞到B的tar.gz文件大小不一致了的,當時心裏MMP了
R語言:提取路徑中的文件名字符串(basename函數)
lena art star filename div base none gpo highlight 假設存在路徑C:/coverage/Homo_sapiens.sort.add_exon1_coverage.txt,欲提取Homo_sapiens.sort.add_ex
eclipse向tomcat部署站點發現沒有class文件。
而不是 uil 指向 最終 會有 tomcat部署 現在 tomat 部署 其實大部分解決辦法在網上都有的,例如這裏: https://blog.csdn.net/shiyuehit/article/details/53262807 eclipse下無法自動編譯或編譯失敗等