qq怎么弄关键字云图

Python015

qq怎么弄关键字云图,第1张

qq怎么弄关键字云图

第三方词云工具固然方便,但是使用起来也是各种问题(如中文乱码、词云形状、字体颜色调整等等)。我和大家分享一下如何使用 R 语言的 jiebaR 和 wordcloud2 扩展包来完成中文文本(英文当然不在话下)的分词,并且绘制关键词词云。

0.前期准备

准备1:安装 R ,你可以前往 The Comprehensive R Archive Network 下载并安装程序。

准备2:把你需要分词的文本放在一个 txt 文件中(强调:务必是 txt 格式!)。(你可以使用爬虫获取这部分文本,或者手动复制粘贴得到文本信息)

1.中文分词

分词是绘制词云的基础,说得简单一点就是将中文文本分割成一个个词汇。举个例子,我们现在按照XX算法对句子“ 对公司相关运营数据进行提取、多维度分析和整理”进行分词,得到如下结果:

对、公司、相关、运营数据、进行提取、多维度、分析、和、整理

只有进行了分词,才可以进行词云的绘制;如果你已经完成了这一步,并且统计出了每一个词汇的频数,可以直接略过这一步。

我们用 R语言的 jiebaR 包实现上述操作,如下:

1)安装并加载 jiebaR 包

install.packages("jiebaR") library(jiebaR)

2)导入原始文本

f<-scan('/Users/XXX/Desktop/数据运营JD.txt',sep='\n',what='',encoding="UTF-8")

需要注意的是 /Users/XXX/Desktop/数据运营JD.txt 应该是你的txt文件的路径,不要直接copy。

3)开始分词

分词有很多种算法,其原理不是我们要关注的重点

seg<-qseg[f]

4)分词处理

因为分词出来可能会有很多常见的词汇,但是没啥用的,比如“的”、“是”、“什么”一类的。我们需要将这个词汇屏蔽掉。同时特别长的词汇这里我们也不要。

我的做法是将字符数控制在3-16之间,也就是最多4个汉字(1个汉字=4个字符),最少3个英文。

seg<-seg[nchar(seg)>2]

seg<-seg[nchar(seg)<17]

seg

这个时候分词结果,也就是 seg 可以显示在你的R程序上,如下图所示:

5)对分词进行转置

为了方便后面的处理,我们需要对 seg 进行一次转置(把横着放变成竖着放)

m1<-data.frame(seg)

2.统计词频

完成分词后,你需要统计每一个词出现的频数,比如“ 数据分析 10 ”这样的。

1)加载 sqldf 包

install.packages("sqldf")

library(sqldf)

2)统计词频

自然语言处理(NLP)是机器学习重要分支之一,主要应用于篇章理解、文本摘要、情感分析、知识图谱、文本翻译等领域。而NLP应用首先是对文本进行分词,当前中文分词器有Ansj、paoding、盘古分词等多种,而最基础的分词器应该属于jieba分词器(比较见下图)。

下面将分别应用R和python对jieba分词器在中文分词、词性标注和关键词提取领域的应用进行比较。

R实现

通过函数worker()来初始化分词引擎,使用segment()进行分词。有四种分词模式:最大概率法(MP)、隐马尔科夫模型(HMM)、混合模型(Mix)及索引模型(query),默认为混合模型。具体可查看help(worker).

#install.packages('jiebaR')library(jiebaR)mixseg <- worker()segment( "这是一段测试文本" , mixseg ) #或者用以下操作mixseg['这是一段测试文本']mixseg <= "这是一段测试文本"

python实现

python中需安装jieba库,运用jieba.cut实现分词。cut_all参数为分词类型,默认为精确模式。

import jiebaseg_list = jieba.cut(u"这是一段测试文本",cut_all = False)print("Full mode: "+ ",".join(seg_list))  #默认精确模式

无论是R还是python都为utf—8编码。

R实现

可以使用<=.tagger 或者tag 来进行分词和词性标注,词性标注使用混合模型模型分词,标注采用和 ictclas 兼容的标记法。

words = "我爱北京天安门"tagger = worker("tag") #开启词性标注启发器tagger <= words    #    r        v      ns      ns    # "我"    "爱"  "北京" "天安门"

python实现

#词性标注import jieba.posseg as psegwords = pseg.cut("我爱北京天安门")for word,flag in words:    print('%s, %s' %(word,flag))

R实现

R关键词提取使用逆向文件频率(IDF)文本语料库,通过worker参数“keywords”开启关键词提取启发器,topn参数为关键词的个数。

keys = worker("keywords",topn = 5, idf = IDFPATH)keys <= "会议邀请到美国密歇根大学(University of Michigan, Ann Arbor)环境健康科学系副教授奚传武博士作题为“Multibarrier approach for safe drinking waterin the US : Why it failed in Flint”的学术讲座,介绍美国密歇根Flint市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。"#结果:#        48.8677        23.4784        22.1402        20.326        18.5354 #      "饮用水"        "Flint"        "卫生"      "水污染"        "生活"

python实现

python实现关键词提取可运用TF-IDF方法和TextRank方法。allowPOS参数为限定范围词性类型。

#关键词提取import jieba.analysecontent = u'会议邀请到美国密歇根大学(University of Michigan, Ann Arbor)环境健康科学系副教授奚传武博士作题为“Multibarrier approach for safe drinking waterin the US : Why it failed in Flint”的学术讲座,介绍美国密歇根Flint市饮用水污染事故的发生发展和处置等方面内容。讲座后各相关单位同志与奚传武教授就生活饮用水在线监测系统、美国水污染事件的处置方式、生活饮用水老旧管网改造、如何有效减少消毒副产物以及美国涉水产品和二次供水单位的监管模式等问题进行了探讨和交流。本次交流会是我市生活饮用水卫生管理工作洽商机制运行以来的又一次新尝试,也为我市卫生计生综合监督部门探索生活饮用水卫生安全管理模式及突发水污染事件的应对措施开拓了眼界和思路。'#基于TF-IDFkeywords = jieba.analyse.extract_tags(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords:        print item[0],item[1]  #基于TF-IDF结果# 饮用水 0.448327672795# Flint 0.219353532163# 卫生 0.203120821773# 水污染 0.186477211628# 生活 0.170049997544

#基于TextRankkeywords = jieba.analyse.textrank(content,topK = 5,withWeight = True,allowPOS = ('n','nr','ns'))for item in keywords:        print item[0],item[1]    #基于TextRank结果:# 饮用水 1.0# 美国 0.570564785973# 奚传武 0.510738424509# 单位 0.472841889334# 讲座 0.443770732053

写在文后

自然语言处理(NLP)在数据分析领域有其特殊的应用,在R中除了jiebaR包,中文分词Rwordseg包也非常常用。一般的文本挖掘步骤包括:文本获取(主要用网络爬取)——文本处理(分词、词性标注、删除停用词等)——文本分析(主题模型、情感分析)——分析可视化(词云、知识图谱等)。本文是自然语言处理的第一篇,后续将分别总结下应用深度学习Word2vec进行词嵌入以及主题模型、情感分析的常用NLP方法。

参考资料

Introduction · jiebaR 中文分词 https://qinwenfeng.com/jiebaR/segment.html

知乎:【文本分析】利用jiebaR进行中文分词 https://zhuanlan.zhihu.com/p/24882048

雪晴数据网:全栈数据工程师养成攻略 http://www.xueqing.tv/course/73

搜狗实验室,词性标注应用 http://www.sogou.com/labs/webservice/

【R文本挖掘】中文分词Rwordseg http://blog.163.com/zzz216@yeah/blog/static/162554684201412895732586/