精华内容
下载资源
问答
  • 作者:梅昊铭 1. 导读 在大数据时代,我们经常在媒体或者网站上看到各种各样的信息图...本文将教大家如何使用Python来做中文分词并制作词云,欢迎大家跟着教程一步步实现。 项目地址:https://momodel.cn/workspace...

    作者:梅昊铭

    1. 导读

    在大数据时代,我们经常在媒体或者网站上看到各种各样的信息图。词云是文本大数据可视化的重要方式,可以将大段文本中的关键语句和词汇高亮展示。对于中文文本的可视化,我们需要先将中文文本进行分词;然后再将文本中的关键词做词云展示。本文将教大家如何使用Python来做中文分词并制作词云,欢迎大家跟着教程一步步实现。

    项目地址:https://momodel.cn/workspace/5e77afb7a8a7dc6753f582b9?type=app

    2. 中文分词

    2.1 分词入门

    所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。而英文词与词自带空格作为分隔符,相比于中文分词要简单。这里我们以中文分词为例来介绍。Python 为我们提供了 Jieba 库进行分词,接下来如何使用 Jieba 库进行中午呢分词。

    import jieba
    
    # 文本数据
    text = "MomodelAI是一个支持在线数据分析和AI建模的平台。"
    result = jieba.cut(text)
    
    # 将切分好的文本用" "分开
    print("分词结果: " + " ".join(result)) 
    
    '''
    分词结果: MomodelAI 是 一个 支持 在线 数据分析 和 AI 建模 的 平台 。
    '''
    

    2.2 特殊名词

    对于某些特别的名词,为了使得其切分时不被分开,我们可以选择在切分前强调一下这些名词。

    text = "Mo平台是一种支持模型开发与部署的人工智能建模平台。"
    
    # 强调特殊名词
    jieba.suggest_freq(('Mo平台'), True)
    result = jieba.cut(text)
    
    print("分词结果: "+" ".join(result)) 
    
    '''
    分词结果: Mo平台 是 一种 支持 模型 开发 与 部署 的 人工智能 建模 平台 。
    '''
    

    2.3 文本清洗

    一些特殊的符号在切分之后会单独成词,这些词会影响我们之后的分析。这里我们可以使用一个标点符号库 stopwords.txt,将切分出来的特殊符号剔除掉;对于“了”,“的”这样长度为一的词,显然对我们分析文本没有任何帮助。处理的方法为将长度为1的词全部剔除掉。

    #从文件导入停用词表
    stpwrdpath = "stop_words.txt"
    stpwrd_dic = open(stpwrdpath, 'rb')
    stpwrd_content = stpwrd_dic.read()
    
    #将停用词表转换为list  
    stpwrdlst = stpwrd_content.splitlines()
    stpwrd_dic.close()
    segs = jieba.cut(text)
    mytext_list = []
    
    # 文本清洗
    for seg in segs:
        if seg not in stpwrdlst and seg!=" " and len(seg)!=1:
            mytext_list.append(seg.replace(" "," "))
            
    cloud_text=" ".join(mytext_list) 
    print("清洗后的分词结果: " + cloud_text)
    
    '''
    清洗后的分词结果: Mo平台 一种 支持 模型 开发 部署 人工智能 建模 平台
    '''
    

    3. 词云制作

    3.1 简单词云制作

    在制作中文文本数据的词云之前,我们首先要用上面介绍的方法将中文文本进行分词。

    # 中文分词
    from wordcloud import WordCloud
    
    with open('./Mo.txt',encoding = 'utf-8', mode = 'r')as f:
        myText = f.read()
    
    myText = " ".join(jieba.cut(myText)) 
    print(myText)
    

    得到分词好的文本数据后,我们再使用 WordCloud 库制作词云。(注:由于 WordCloud 本身不支持中文字体,我们需要将下载的 simsun.ttf,作为指定输出字体。)

    # 制作词云
    wordcloud = WordCloud(background_color="white", font_path="simsun.ttf", height=300, width = 400).generate(myText)
    
    # 图片展示
    import matplotlib.pyplot as plt
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    
    # 将词云图片导出到当前文件夹
    wordcloud.to_file("wordCloudMo.png") 
    

    3.2 绘制指定形状的词云

    制作指定形状的词云的时候,我们需要先读入外部词云形状图片,这里我们使用 imageio 库。

    # 导入词云制作库wordcloud和中文分词库jieba
    import jieba
    import wordcloud
    
    # 导入imageio库中的imread函数,并用这个函数读取本地图片,作为词云形状图片
    import imageio
    mk = imageio.imread("chinamap.png")
    w = wordcloud.WordCloud(mask=mk)
    
    # 构建并配置词云对象w,注意要加scale参数,提高清晰度
    w = wordcloud.WordCloud(width=1000, height=700,background_color='white',font_path='simsun.ttf',mask=mk,scale=15)
    
    # 对来自外部文件的文本进行中文分词,得到string
    f = open('新时代中国特色社会主义.txt',encoding='utf-8')
    txt = f.read()
    txtlist = jieba.lcut(txt)
    string = " ".join(txtlist)
    
    # 将string变量传入w的generate()方法,给词云输入文字
    wordcloud = w.generate(string)
    
    
    import matplotlib.pyplot as plt
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()
    
    # 将词云图片导出到当前文件夹
    w.to_file('chinamapWordCloud.png')
    

    3.3 结果展示

    4. 参考资料

    1. 博客:https://www.jianshu.com/p/e4b24a734ccc
    2. Github项目:https://github.com/TommyZihao/zihaowordcloud
    3. 视频教程:https://www.bilibili.com/video/av53917673/?p=1

    ##关于我们
    Mo(网址:https://momodel.cn) 是一个支持 Python的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。

    近期 Mo 也在持续进行机器学习相关的入门课程和论文分享活动,欢迎大家关注我们的公众号获取最新资讯!

    展开全文
  • 一、 rJava的环境变量配置和分词代码(网上有具体安装步骤,比较麻烦,我安装了好久了才安装上)1. 下载jre最新版2. 打开环境变量:控制面板—系统—环境变量 or 我的电脑—属性a 新增变量“JAVA”,变量值=C:\...
    一、 rJava的环境变量配置和分词代码(网上有具体安装步骤,比较麻烦,我安装了好久了才安装上,我也是好多参考网上还有  朋友帮助才完成的)
    1. 下载jre最新版
    2. 打开环境变量:控制面板—系统—环境变量 or 我的电脑—属性
    a 新增变量“JAVA”,变量值=C:\Program Files\Java\jre6\bin
    b  PATH=C:\Program Files\Java\jre6\bin\server
    加载rJava包和Rwordseg包
    代码:
    >install.packages(“rJava”)
    >library(rJava)
    >install.packages("Rwordseg",repos= "http://R-Forge.R-project.org", type = "source")
    >library(Rwordseg)
    --可以测试了:
    >teststring1 <- "李建督促你将R语言学习到底。"
    >word1 <- segmentCN(teststring1)
    二、 导入文本、清理文本、词频统计、词云图
    library(Rwordseg)                            #分词的包
    #导入数据
     sale<-read.csv(file.choose())
    neg <- readLines(file.choose(), encoding = 'UTF-8')
    data = read.csv("E:/111/wuli.csv",stringsAsFactors=F)
    data<-read.csv(file.choose(),stringsAsFactors=F)
    #去除数字,英文字符
    data = gsub("[a-z0-9A-Z_]","",data)

    #分词,Rwordseg包, D:/R-3.3.3/library/Rwordseg
    words = segmentCN(data)
    #生成停词表stopwordsCN.txt,读入,确保是utf-8编码(E:/111/321123.txt为停词表地址)
    stopwordsCN = as.character(readLines("E:/111/321123.txt"))
    stopwordsCN = enc2utf8(stopwordsCN)
    stopwordsCN<-stopwordsCN[Encoding(stopwordsCN)!="unknown"]

    #编写去停词函数
    emoveStopWords <- function(x,stopwords) {
    
      temp <- character(0)
      index <- 1
      xLen <- length(x)
      while (index <= xLen) {
        if (length(stopwords[stopwords==x[index]]) <1)
          temp<- c(temp,x[index])
        index <- index +1
      }
      temp
    }
    #去停词
    words = lapply(words,removeStopWords,stopwordsCN)
    #画词云图
    install.packages(“wordcloud”)
    library(wordcloud)
    #计算词频
    wordsnum = table(unlist(words))
    wordsnum = sort(wordsnum)  #排序
    #选出词频最高的250个
    wordsnum = tail(wordsnum,250)
    #画词云图
    wordcloud(names(wordsnum),as.vector(wordsnum),random.order=FALSE,    random.color=FALSE,colors=brewer.pal(8,"Dark2"),family="myFont3")

    下面两个图为python爬虫华为手机与三星手机评论的文本数据所制作

    华为评论数据

    三星评论数据

    展开全文
  • 上次,我们分享了文本处理的方方面面的知识点,比较宏观,这次我们就其中的一点“分词”展开。一、为什么要分词“行文如流水”形容的是诗文、书法自然流畅不受拘束。这里我们借用一下就是,中文句子词汇之间如流水般...

    ​昨晚我们又做了一次技术分享,继续上次技术分享的话题“文本数据的处理”。上次,我们分享了文本处理的方方面面的知识点,比较宏观,这次我们就其中的一点“分词”展开。

    python-wordcloud.jpg

    一、为什么要分词

    “行文如流水”形容的是诗文、书法自然流畅不受拘束。这里我们借用一下就是,中文句子词汇之间如流水般无缝,不像英文那样单词之间用空格分开。比如:

    中文:我在猿人学网站上学Python

    英文:I learn Python on YuanRenXue.

    在程序里,从英文中得到一个一个单词很简单,用Python字符串的split()函数就可以搞定。而对于中文做同样的事情就比较难了,这时候我们就需要一个分词程序专门搞这件事。

    词汇是语义表达的基本单位。词语比单个字表达的意思更为精准。在搜索引擎里面,建立倒排索引的时候,需要对文本进行分割为一个个的语素,是分成一个一个的字好呢,还是分割成一个个词好呢?我们来看看下面的例子。

    首先,我们先简单理解一下“倒排索引”这个概念。我们可以把它类比成一个Python的字典,key是索引的语素(字或词),value是一个包含这个语素的文档ID的列表。下面我们对“我早上在海边跑步”这句话进行分割、索引,假设这句话的文档ID是1。

    按字分割:我/早/上/在/海/边/跑/步

    索引:

    wordseg-2.png

    在这个索引里面搜“上海”,先把查询词按照索引时同样的方法分割为“上”和“海”两个字,然后分别搜这两个字,索引里面都包含这两个字,它们都对应这ID为1的文档,也就是搜索到了文档ID为1的文档。但是,这句“我早上在海边跑步”跟“上海”是没什么关心的。

    也就是说,按字分割索引会让搜索引擎搜出很多不相关的结果出来。那么,按词索引呢?

    按词分割:我/早上/在/海边/跑步

    建立索引:

    wordseg-1.png

    从这个索引里面找“上海”就不能找到,从而不会返回不相关的结果。

    二、分词的原理

    分词是一个技术活也是一个累活儿。如果分词是建立在新闻类的语料基础上的,它对其它领域比如化工、医学等等领域的文本的分词效果往往不会好。这就需要我们对行业领域词汇进行收集,加入到分词词典中,才能得到更好的效果,这个过程是比较累人的。

    分词的方法一般有以下几种:

    1、基于词典的方法

    这个方法朴素而快速,但不能很好的解决歧义和未收录词。歧义就是下面这种句子根据词典可以有多种分割方法:

    “结婚/的/和/尚未/结婚/的”

    “结婚/的/和尚/未/结婚/的”

    未收录词就是分词词典没有包含的那些词,这个问题可以通过不断扩展词典在某种程度上解决。

    2、机器学习的方法

    首先,要人工标注大批量的语料给机器学习算法进行学习。标注的过程要耗费大量人力,标注的语料越多,机器学习的效果越好。机器学习的方法有HMM、CRF,以及近年流行的深度学习。它对歧义和未收录词的问题有较好的解决。但是,大量领域语料的缺失,也导致它不能很好的直接应用于其它专业领域。

    三、jieba分词工具

    上次技术分享中,我们介绍了多款分词工具。jieba作为一个纯Python实现的工具,使用起来非常方便。它支持简体和繁体分词,也可以自定义词典方便我们扩展领域词。

    结巴有三种分词模式:

    精确模式:适合文本分析。此法最常用

    全模式,把句子中所有可能的词都列出来。基本没啥用

    搜索引擎模式:把长词切分为短词,让搜索引擎提高召回率。建立搜索引擎的索引时用

    安装jieba很简单:

    pip install jieba

    使用结巴进行分词主要有两个函数:

    jieba.cut(text, cut_all=False, HMM=True)

    jieba.cut_for_search(sentence, HMM=True)

    其中,cut()函数最为常用。参数cut_all=True的话就开启了全模式,这种模式几乎不需要。默认的HMM=True会使用HMM模型尝试检测未登录词。

    写个简单的程序来测试一下几种不同的分词模式:

    segword-python-code.jpg

    得到的结果如下:

    精确模式:

    猿人/ 学是/ 一个/ 学习/ Python/ 的/ 网站

    全模式:

    猿人/ 人学/ 是/ 一个/ 学习/ Python/ 的/ 网站

    搜索引擎模式:

    猿人/ 学是/ 一个/ 学习/ Python/ 的/ 网站

    精确模式下,会把“学是”当做一个词分出来,这就是HMM计算的结果,当然对于这个例子,它计算错了。

    “猿人学”应该是一个词,但它没有分出来。这个时候我们就需要自定义词典。

    添加自定义的词,有两种方法:

    (1)通过函数添加:

    jieba.add_word(‘猿人学’, freq=5, tag=’n’)

    可以多次调用这个函数,添加更多的词。

    (2)通过词典文件:

    jieba.load_userdict(file_name)

    file_name就是一个词典文件的路径,它是一个文本文件,每行一个词,后面可以跟着它的频率和词性:

    猿人学 8 n

    js逆向 7

    APP脱壳 n

    异步IO

    词性标注

    jieba支持词性标注,具体在它的子模块 jieba.posseg

    import jieba.posseg as pseg

    words = pseg.cut('我在猿人学学Python')

    for word, flag in words:

    print('{} {}'.format(word, flag))

    我 r

    在 p

    猿人学 n

    学 n

    Python eng

    词性标注可以帮助我们更好的筛选文章主题词(或者叫关键词)。比如,介词、数量词不然名词、动词的意义更丰富,提取关键词时可以对名词等赋予更高的权重。

    主题词提取

    jieba提供的主题词提取的功能,具体在 jibba.analyse 子模块。它有两种算法的实现,分别是TF-IDF算法和TextRank算法。两者的效果差不多,但后者计算量大很多,比较慢。所以,推荐使用前者。

    TF-IDF算法

    jieba.analyse.extract_tags(

    text,

    topK=20,

    withWeight=False,

    allowPOS=())

    text 为待提取的文本

    topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20

    withWeight 为是否一并返回关键词权重值,默认值为 False

    allowPOS 仅包括指定词性的词,默认值为空,即不筛选词-权重

    TextRank算法

    jieba.analyse.textrank(

    text,

    topK=20,

    withWeight=False,

    allowPOS=('ns', 'n', 'vn', 'v'))

    直接使用,接口相同,注意默认过滤词性。

    四、词云图:可视化主题词

    前面我们通过jieba提取了文章的主题词,可以使用“词云图”这种方法把它可视化的表现出来。

    Python有个画词云图的第三方模块:wordcloud。用pip直接安装:

    pip install wordcloud

    使用它主要有两个类:

    WordCloud([font_path, width, height, …])

    画词云图的类

    ImageColorGenerator(image[, default_color])

    从一张彩色图片中生成词云图的颜色

    使用WordCloud类进行词云图绘制过程,需要注意的地方:

    中文字体 : 必须指定中文字体,不然中文就画不出来。

    mask :以图片物体形状绘制词云图。非物体形状部分为白色,颜色值为#FFF 或 #FFFFFF

    图片颜色->字体颜色:使用ImageColorGenerator 从mamsk图片提取颜色,把对应位置的字体颜色设置为同样的颜色。

    下面,我们以Python的logo作为词云图形状进行绘制。

    python-logo.jpg

    文章内容是猿人学网站上的文章《大规模异步新闻爬虫的实现思路》,通过jieba提取主题词,然后进行绘制。代码如下 :

    wordcloud-python-code.jpg

    运行这段代码后,生成了两个词云图,第一张是随机生成的字体颜色:

    wordcloud-style.jpg

    第二张是根据Python logo 图片中的颜色绘制字体颜色:

    wordcloud-style-color.jpg

    如果你选择色彩更丰富的图片,绘制出来的词云图色彩也会更丰富。

    这次技术分享,我们把jieba分词的使用结合实例介绍给大家,最后使用wordcloud做了主题词的可视化呈现。

    yrx_banner_pic.jpg

    我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

    ***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.com 原创,没有猿人学授权,请勿以任何形式转载。***

    展开全文
  • 这是很久之前写的一个小实验,R语言画红楼梦的词云图,下了一些分词词典,定义了些停用词
  • 利用jieba进行分词词云图展示

    千次阅读 2018-12-15 09:23:22
    import jieba from scipy.misc import ...这个是因为找不到你计算机上的字体而报错,需要你在字体的文件上看清字体的英文名称,路径为C:\Windows\Fonts 选中点击右键-属性: 复制英文名称到font_path参数
    import jieba
    from scipy.misc import imread
    from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
    import matplotlib.pyplot as plt
    import pandas as pd
    
    def get_word():
        df = pd.read_csv('weixiaobao_data/wen.txt', sep='\t')
        word_list = df['MsgTitle'].tolist()
        return word_list
    
    
    def get_word_list(mylist):
        word_list = [' '.join(jieba.cut(sen)) for sen in mylist]
        new_text = ' '.join(word_list)
        pic_path = 'buity.jpg'
        im_mask = imread(pic_path)
    
        wordcloud = WordCloud(background_color='white',
                              font_path=r'C:\Windows\Fonts\simfang.ttf',
                              mask=im_mask,
                              stopwords=STOPWORDS).generate(new_text)
    
        plt.imshow(wordcloud)
        plt.axis('off')
        plt.show()
        wordcloud.to_file('ciyun.jpg')
    
    
    word_list = get_word()
    get_word_list(word_list)
    

    在这里插入图片描述
    过程中常会出现的一个错误就是:

    OSError: cannot open resource
    

    这个是因为找不到你计算机上的字体而报错,需要你在字体的文件上看清字体的英文名称,路径为C:\Windows\Fonts
    在这里插入图片描述
    选中点击右键-属性:
    在这里插入图片描述
    复制英文名称到font_path参数

    展开全文
  • 验证码对我来说实在是太难绕开的关口,于是索性又花了点时间了解前端的那堆脚本,终于能够比较顺利地提取新浪微博的微博数据了,然后又顺手尝试了一下简单的分词词云,于是我来写个日记。主要是三个函数:登录微博...
  • 文章目录Jieba分词Jieba 分词的原理Jieba 分词的三种模式Jieba 分词使用方法载入词典的使用调整词典基于 TF-IDF 算法的关键词抽取基于 TextRank 算法的关键词抽取词性标注添加停用词的输出结果词云读取文章,并制作...
  • 我们词云制作工具是目前非常流行的tagxedo,tagxedo对于英文分词做的很好(废话,英文单词之间有空格),但是对于中文分词做的不好,于是我们需要用到另外一个在线工具http://life.chacuo.net/convertexportword...
  • #了解词云图展示的相关参数,才能看懂代码含义 font_path : string //字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (default=400) //输出的画布宽度,默认为400...
  • 文章目录1、英文词频统计和词云制作2、中文词频统计和词云制作2.1 错误发现2.2 错误改正  在之前的分词学习后,开始处理提取的词语进行词频统计,因为依据词频是进行关键词提取的最简单方法: 1、英文词频统计和...
  • 实现文本分词+在线词云实现工具   词云是NLP中比较简单而且效果较好的一种表达方式,...我们词云制作工具是目前非常流行的tagxedo,tagxedo对于英文分词做的很好(废话,英文单词之间有空格),但是对于中文分...
  • greg+1, greg+attr(greg,'match.length')-2), collapse=' ') } a111 names(a111) weibo_data gc() } # 去掉英文和数字,去掉@对象 weibo_data weibo_data return(weibo_data[1:min(as.numeric(number), N)]) } # ...
  • 使用Python做中文分词和绘制词云 李小璐出轨云词图 作为一门编程语言,Python的编写简单,支持库强大,应用场景多,越来越多的人开始将它作为自己的编程入门语言。 Python一个比较重要的场景是做舆情分析,比如...
  • jieba分词 jieba分词支持三种分词模式: 精确模式, 试图将句子最精确地切开,适合文本分析 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义 搜索引擎模式,在精确模式的基础上...
  • 2019-12-12中文文本分词词云图具体功能介绍与学习代码:import jiebaa="由于中文文本的单词不是通过空格或者标点符号来进行分割"#jieba.lcut()s是最常用的中文分词函数,用于精准模式,即将字符串分割为等量的中文...
  • 英文花样词云

    2018-11-24 11:41:58
    英文词云图 import numpy as np import pandas as pd from matplotlib import pyplot as plt from wordcloud import WordCloud,ImageColorGenerator %matplotlib inline df_train = pd.read_csv('./testporject/...
  • 文章目录关于jieba分词绘画词语图 关于jieba分词 绘画词语图 导入第三方模块 from wordcloud import WordCloud # 词云图 import matplotlib.pyplot as plt #画图 text = 'I love python but I dont want to learn...
  • 1. 分析构建词云需要具备:原料即文章等内容将内容进行分词分词后的内容利用构建词云的工具进行构建保存成图片2. 需要的主要模块jieba 中文... 英文词云英文分词和构建词云只需要wordcloud模块具体实现如下:1 f...
  • 基于python生成的wordcloud词云在这两年一直都热门...本篇我们讲解的是如何制作英文词云,下一期我们将给大家带来如何制作中文词云,敬请期待!快速生成词云from wordcloud import WordCloudf = open(u'txt/AliceEN...
  • 那你得先学会如何做中文文本分词。 跟着我们的教程,一步步用python来动手实践吧。? (由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。 如有需要,请点击文末的“阅读原文”按钮,访问可以正常...
  • jieba 分词 + 词云图安装所需要的库导包详细代码解释定义分词函数初始化Wordcloud计算词频绘制默认颜色的词云图生成与背景图片颜色的词云 安装所需要的库 我所用的是anaconda 的notebook 所以有一些库不需要格外安装...
  • wordcloud 安装报错与解决虽然网络上也有各种工具可以一键生成词云,但是使用Python制作词云感觉是一件很酷的事情。作为一个 Python 小白,使用 Python 的过程并不那么轻松。比如最最基础的,用Python 制作词云需要...
  • process_text(text) #将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的 fit_words(frequencies) ) recolor([random_state, color_func, colormap]) #对现有输出重新着色...
  • python生成中文词云需要的两个Python类库:jieba:中文分词分词工具wordcloud:Python下的词云生成工具代码组成简介代码部分来源于其他人的博客,但是因为bug或者运行效率的原因,我对代码进行了较大的改变代码第一部分,...
  •  以前做词云的时候网上看的python做词云的坑都很多,耗了很多时间才高清楚wordcloud制作词云的精髓和脉络,整理如下。相关文章准备Mac环境下直接pip install wordcloud安装windows环境下依赖c v++和.whl文件,将...
  • 英文词与词之间有空格 中文词与词之间无界限 分词原理 基于字典 机器学习:HMM、CRF 深度学习:Bi-LSTM+CRF 开源工具 jieba:MIT协议(python) LTP:哈工大开源(C++) THUNLP:清华开源(C++) 分词工具--jieba...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,279
精华内容 511
关键字:

英文分词词云