close

在常見的科學文本中,由於交叉學科的發展,有的文本可能同時屬於多個主題,只是屬於每個主題的概率有差異而已。那麼Latent Dirichlet Allocation (LDA)算法可以進行這種模式的分類。通過LDA算法,可以把多個文檔中的多個關鍵詞歸為多個不同的主題。具體的R包就是akc包以及一些輔助的包。

主題分類步驟

1.首先我們來加載需要使用的包,使用自帶數據進行數據清洗
library(tidyverse)library(akc)library(tidytext)library(topicmodels)# 進行數據的清洗text <- bibli_data_table%>% keyword_clean()%>% keyword_merge(reduce_form = "stem")

然後對清洗的數據進行計數,將其轉化為文檔術語矩陣

# 進行數據的準備工作text_analysis <- text%>% # 對關鍵詞進行計數 count(id,keyword)%>% # 將數據轉化為文檔術語矩陣 cast_dfm(id,keyword,n)

3.進行LDA分析
# LDA分析LDA_analysis <- LDA(text_analysis, # 劃分為兩個主題 k = 2, # 設定隨機種子,使得結果能重複 control = list(seed=200))

4.可以查看每個關鍵詞對應的主題
# 查看每個關鍵詞對應的主題LDA_topic <- LDA_analysis%>%tidy(matrix = "beta")LDA_topic

5.通過函數查看每個主題下頻率最高的5個關鍵詞,甚至更多
# 查找每個主題下的頻率最高的5個關鍵詞top_keywords <- LDA_topic%>% # 按照主題分組 group_by(topic)%>% # 提取前5個關鍵詞 top_n(5,beta)%>% ungroup()%>% arrange(topic,-beta)top_keywords

6.使用ggplot函數進行數據的可視化
# 可視化結果top_keywords%>% mutate(keyword = reorder_within(term,beta,topic))%>% ggplot(aes(term,beta,fill=factor(topic)))+ geom_bar(stat = "identity")+ facet_wrap(~topic,scales = "free")+ coord_flip()+ scale_x_reordered()

7.判斷每個文檔術屬於每個主題的概率
# 判斷每個文檔屬於每個主題的概率LDA_gamma <- tidy(LDA_analysis,matrix = "gamma")LDA_gamma

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()