使用R语言的wordcloud2包进行词云图绘制的简单展示

文摘   2025-01-02 18:33   山东  
‌词频统计‌

      词频统计‌是指在文本或语音数据中,统计每个单词或符号出现的次数,以便对文本或语音数据进行分析和预处理。它是自然语言处理中的一个重要任务,旨在为后续的文本分析、情感分析、机器翻译等任务做好准备‌。

      词频统计的概念包括将文本或语音数据转换成单词或符号的形式,然后统计每个单词或符号出现的次数,并将其存储为一个数据集或字典。这些数据集或字典可以用来训练机器学习模型或进行文本分类、情感分析等任务‌。




具体应用场景

一、文本分类‌:词频统计可以帮助确定最重要的单词或符号,以帮助分类器进行分类。

二、情感分析‌:在情感分析中,词频统计可以帮助确定文本中最常见的情感,以便进行分类。

三、机器翻译‌:词频统计可以帮助确定翻译的单词或符号。

四、信息检索‌:在信息检索中,词频统计可以帮助确定查询中最重要的单词或符号,以便进行查询匹配‌。

词频统计的具体方法

‌1.使用Python‌:Python是一种非常流行的编程语言,有许多库和工具可以用于文本处理和统计。可以使用NumPy、Pandas和SciPy等库来计算文本中词频统计。例如,可以使用NumPy中的str_freq函数来计算字符串中单词出现的频率‌。

‌2.使用R语言‌:R是一种统计软件,可以轻松地进行数据可视化和统计分析。可以使用R中的text mining包来计算文本中词频统计,例如使用tm包中的tf_idf函数来计算文本的分词和词频统计‌。

‌3.使用Java‌:Java也有许多库和工具可以用于文本处理和统计。




什么是词云图?

      词云图(Word Cloud)是一种文本数据的可视化表现形式,通过将高频关键词以视觉上突出的方式展示,帮助用户快速理解文本的核心内容。‌词云图通常由文本数据中提取的词汇组成,通过放大和强调高频词,使人们在视觉上快速抓住文本的核心内容。‌

词云图的特点

‌一、可视化表达‌:词云图通过字体大小、颜色等视觉元素来展示词汇的重要性,帮助用户直观地理解文本数据。

二、关键词突出‌:词云图能够突出显示高频关键词,过滤掉大量无关信息,使浏览者一眼就能领略文本的主旨。

三、应用广泛‌:词云图常用于新闻、文章、演讲稿等文本的分析和展示,也适用于发布会、专家演讲和研究报告等场合。




词云图的应用场景:

1‌.文本分析‌:用于统计和展示新闻、文章、演讲稿等文本的核心词汇。

2‌.用户画像和标签‌:在用户分析和市场研究中,词云图可以帮助展示用户的标签和特征。

‌3.热点关键词展示‌:在发布会、演讲等场合,词云图用于展示热点关键词,增强视觉冲击力。

词云图与标签云、关键词云的区别与联系:

词云图、标签云和关键词云都是文本数据的可视化表现形式,它们的核心都是通过视觉元素突出显示高频关键词。词云图更注重词汇的图形化和颜色变化,而标签云和关键词云则可能包含更多的设计元素和交互功能。





今天我们尝试用R语言的jiebaRD包、wordcloud2包、Rwordseg,进行词云图绘制的简单展示。我们先以三字经为例,熟悉一下中文字符处理等简单流程。








#安装并加载包

install.packages("HMM")

install.packages("jiebaRD") #安装包

install.packages("wordcloud2") #安装包

install.packages("rJava") 

#安装R的JAVA包(先装好JDK,并配置好JAVA_HOME,path,CLASSPATH这三个环境变量)

install.packages("Rwordseg") #安装包

install.packages("Rwordseg",
repos="http://R-Forge.R-project.org")

install.packages("
C:/Users/L/Desktop/Rwordseg_0.3-2.tar.gz", 

   repos = NULL, type = "source")

library(jiebaRD) #加载中文分词用包

library(wordcloud2) #加载词云图用包

library(rJava)

library(Rwordseg)#中文分词segmentCN函数用包





# 读取示例文本

text <- "人之初,性本善,性相近,习相远。苟不教,性乃迁,教之道,贵以专。

昔孟母,择邻处,子不学,断机杼。窦燕山,有义方,教五子,名俱扬。

子不教,父之过,教不严,师之惰。子不学,非所宜,幼不学,老何为?

玉不琢,不成器,人不学,不知义。为人子,方少时,亲师友,习礼仪。

香九龄,能温席,孝于亲,所当执。融四岁,能让梨,弟于长,宜先知。

首孝悌,次见闻,知某数,识某文。一而十,十而百,百而千,千而万。

三才者,天地人,三光者,日月星。三纲者,君臣义,父子亲,夫妇顺。

曰春夏,曰秋冬,此四时,运不穷。曰南北,曰西东,此四方,应乎中。

曰水火,木金土,此五行,本乎数。十干者,甲至癸,十二支,子至亥。

曰黄道,日所躔。曰赤道,当中权。赤道下,温暖极。我中华,在东北。

曰江河,曰淮济。此四渎,水之纪。曰岱华,嵩恒衡。此五岳,山之名。

曰士农,曰工商。此四民,国之良。曰仁义,礼智信,此五常,不容紊。

地所生,有草木。此植物,遍水陆。有虫鱼,有鸟兽。此动物,能飞走。

稻粱菽,麦黍稷。此六谷,人所食。马牛羊,鸡犬豕。此六畜,人所饲。

曰喜怒,曰哀惧,爱恶欲,七情具。青赤黄,及白黑,此五色,目所识。

酸苦甘,及辛咸,此五味,口所含。膻焦香,及腥朽,此五臭,鼻所嗅。

匏土革,木石金,丝与竹,乃八音。曰平上,曰去入,此四声,宜调协。

高曾祖,父而身,身而子,子而孙。自子孙,至玄曾,乃九族,人之伦。

父子恩,夫妇从,兄则友,弟则恭;长幼序,友与朋,君则敬,臣则忠。

此十义,人所同,当顺叙,勿违背。斩齐衰,大小幼。至缌麻,五服终。

礼乐射,御书数,古六艺,今不具。唯书学,人共遵,既识字,讲说文。

有古文,大小篆,隶草继,不可乱。

若广学,惧其繁,但略说,能知源。凡训蒙,须讲究,详训诂,明句读。

为学者,必有初,小学终,至四书。论语者,二十篇,群弟子,记善言。

孟子者,七篇止,讲道德,说仁义。作中庸,子思笔,中不偏,庸不易。

作大学,乃曾子,自修齐,至平治。孝经通,四书熟,如六经,始可读。

诗书易,礼春秋,号六经,当讲究。有连山,有归藏,有周易,三易详。

有典谟,有训诰,有誓命,书之奥。我周公,作周礼,著六官,存治体。

大小戴,注礼记,述圣言,礼乐备。曰国风,曰雅颂,号四诗,当讽咏。

诗既亡,春秋作,寓褒贬,别善恶。三传者,有公羊,有左氏,有谷梁。

经既明,方读子,撮其要,记其事。五子者,有荀扬,文中子,及老庄。

经子通,读诸史,考世系,知终始。自羲农,至黄帝,号三皇,居上世。

唐有虞,号二帝,相揖逊,称盛世。夏有禹,商有汤,周文武,称三王。

夏传子,家天下,四百载,迁夏社。汤伐夏,国号商,六百载,至纣亡。

周武王,始诛纣,八百载,最长久。周辙东,王纲坠,逞干戈,尚游说。

始春秋,终战国,五霸强,七雄出。蠃秦氏,始兼并,传二世,楚汉争。

高祖兴,汉业建,至孝平,王莽篡。光武兴,为东汉,四百年,终于献。

魏蜀吴,争汉鼎,号三国,迄两晋。宋齐继,梁陈承,为南朝,都金陵。

北元魏,分东西,宇文周,与高齐。迨至隋,一土宇,不再传,失统绪。

唐高祖,起义师,除隋乱,创国基。二十传,三百载,梁灭之,国乃改。

梁唐晋,及汉周,称五代,皆有由。炎宋兴,受周禅。十八传,南北混。

辽与金,皆称帝,元灭金,绝宋世。舆图广,超前代,九十载,国祚废。

太祖兴,国大明,号洪武,都金陵。迨成祖,迁燕京,十六世,至崇祯。

权阉肆,寇如林,李闯出,神器焚。清世祖,膺景命,靖四方,克大定。

由康雍,历乾嘉。民安富,治绩夸。道咸间,变乱起。始英法,扰都鄙。

同光后,宣统弱。传九帝,满清殁。革命兴,废帝制。立宪法,建民国。

古今史,全在兹。载治乱,知兴衰。史虽繁,读有次。史记一,汉书二。

后汉三,国志四。兼证经,参通鉴。读史者,考实录,通古今,若亲目。

口而诵,心而惟,朝于斯,夕于斯。昔仲尼,师项橐,古圣贤,尚勤学。

赵中令,读鲁论,彼既仕,学且勤。彼蒲编,削竹简,彼无书,且知勉。

头悬梁,锥刺股,彼不教,自勤苦。如囊萤,如映雪,家虽贫,学不辍。

如负薪,如挂角,身虽劳,犹苦卓。苏老泉,二十七,始发愤,读书籍。

彼既老,犹悔迟,尔小生,宜早思。若梁灏,八十二,对大廷,魁多士。

彼既成,众称异,尔小生,宜立志。莹八岁,能咏诗,泌七岁,能赋棋。

彼颖悟,人称奇,尔幼学,当效之。蔡文姬,能辨琴,谢道韫,能咏吟。

彼女子,且聪敏,尔男子,当自警。唐刘晏,方七岁,举神童,作正字。

彼虽幼,身已仕,尔幼学,勉而致。有为者,亦若是。

犬守夜,鸡司晨,苟不学,曷为人?蚕吐丝,蜂酿蜜,人不学,不如物。

幼而学,壮而行。扬名声,显父母,光于前,裕于后。

人遗子,金满籯,我教子,惟一经。勤有功,戏无益,戒之哉,宜勉力。"







# 中文分词

segment <- segmentCN(text)

# 创建词频表

word_freq <- table(segment)

# 排序词频表

word_freq <- sort(word_freq, decreasing = TRUE)

# 词频统计输出,导出词频表至EXCEL

print(word_freq)

library(writexl) #加载包

write_xlsx(as.data.frame(word_freq),
   "C:/Users/L/Desktop/词频统计表.xlsx")








# wordcloud2()函数绘制词云图

wordcloud2(word_freq, 

  size = 1, minSize = 0.5, 

  color = 'random-dark', 

  backgroundColor = "white")








#也可以选择不同的shape:

wordcloud2(word_freq, shape = 'cardioid',size=1.5)#心形

wordcloud2(word_freq, shape = 'diamond',size=1.5)#钻石形

wordcloud2(word_freq, shape = 'triangle-forward',size=1.5)#朝前的三角形

wordcloud2(word_freq, shape = 'triangle',size=1.5)#三角形

wordcloud2(word_freq, shape = 'pentagon',size=1.5)#五边形

wordcloud2(word_freq, shape = 'star',size=1.5)#星形








#我们也可以读取txt文件,对文件里的文本进行词频统计并绘制词云图

#安装并加载必要的R包

install.packages("stringr")

install.packages("readr")

library(stringr)

library(readr)

# 设置系统编码

Sys.setlocale("LC_ALL","UTF-8")

#指定文件编码为GBK

file_encoding <-"GBK"






# 读取道德经全文的txt文本文件

text2<-read_delim("C:/Users/L/Desktop/道德经全文.txt",

  delim ="\t",

  locale=locale(encoding=file_encoding))

text2

#执行相关操作,例如数据清洗

text2<-str_replace_all(text2,",","。")

# 中文分词

segment2 <- segmentCN(text2)

# 创建词频表

word_freq2 <- table(segment2)

# 排序词频表

word_freq2 <- sort(word_freq2, decreasing = TRUE)

write_xlsx(as.data.frame(word_freq2), 

"C:/Users/L/Desktop/词频统计表2.xlsx")

# 词频统计输出

print(word_freq2)

# 绘制词云图

wordcloud2(word_freq2, size = 1, 

  minSize = 0.5,

   color = 'random-dark',

           shape = 'star',

           backgroundColor = "white")








同样,我们也可以对实验室检测得出的所有标本中,检出的各种病原体频次进行词频分析。

#实例(读取病原分布词频表并绘制词云图)

#读取实验室产生的病原体阳性标本数

#安装并加载所有包

install.packages("segmented")

library(segmented)

library(readxl)

Text3 <- read_excel("C:/Users/L/Desktop/病原词频统计表.xlsx", col_names = TRUE)

Text3










对于有频次数据的表格,我们可以直接对其进行绘图

# 绘制词云图

wordcloud2(Text3, size = 1, minSize = 0.5, color = 'random-dark', backgroundColor = "white")

# 绘制词云图

wordcloud2(Text3, size = 1, minSize = 0.5, 

           color = 'random-dark',

           shape = 'circle',

           backgroundColor = "white")









值得注意的是,绘制出的词云图,是一张可交互的图,鼠标悬停在某位置时,可以查看具体数值,并可以另存为html网页文件,保存后随时查看。






医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!





医学统计数据分析
分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!
 最新文章