在中文的文本挖掘中,对海量文本进行准确分词是其中至关重要一步。当前的Python语言下存在多种开源文本分析包,其中jieba这个包能够提供相对高效的分词方案。

结合jieba代码和一些相关资料,基本得知jieba是基于Trie树结构实现的高效词图扫描,生成句子中汉字所有可能成词情况的有向无环图(DAG)。 结巴分词中自带了一个叫做dict.txt的词典,里面包含词,词条出现次数(基于人民日报等语料库),词性。结巴会根据词典对分词句子切分,生成DAG,与此同时将每个词的出现次数转换成频率。 该频率会根据动态规划查找最大路径,找出基于词频的切分组合。

对于不存在与词典中的词,结巴则采用了基于汉字成词能力的HMM模型,使用Viterbi算法进行分词。也就是说如果dict.txt词典中没有任何词,结巴也能够根据HMM模型分词。下面写一个demo测试下结巴的分词能力。

测试文本数据采用了一篇翻译过来的医学论文《Importance of Being Adaptable Developing Guidelines for Lung Nodule Evaluation》.

结巴的提取关键词API非常易用, 这里我们提取测试文本中出现频率前100的高频词汇。 并将中文编码转为unicode.

content = open("testing.txt","rb").read()

# tags extraction based on TF-IDF algorithm

tags = jieba.analyse.extract_tags(content, topK=100, withWeight=False)

text =" ".join(tags)

text = unicode(text)

在变量text中存储了我们需要的关键词结果。

接下来我们使用python中wordcloud这个库来快速生成一个词云图。由于wordcloud并不包含中文字体。对于显示中文分词,一定要对word cloud指定中文字体位置,否则最后词云图的中文都是方框乱码。

wc = WordCloud(font_path='simsun.ttc',

background_color="white", max_words=300, mask=trump_coloring,

max_font_size=40, random_state=42)

# generate word cloud

wc.generate(text)

词云图结果

wordcloud2.png

从词云图结果上大概可以看出,关键性高频名词基本被容纳进去,但是有一些无意义的高频介词也被包括进去。后期在提高模型正确率时,一方面需要扩充语义库,另一方面要对词性进行定义,将某些高频但无意义的词进行过滤。

全文代码:

# -*- encoding:utf-8 -*-

import jieba.analyse

from os import path

from scipy.misc import imread

import matplotlib as mpl

import matplotlib.pyplot as plt

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

if __name__ == "__main__":

mpl.rcParams['font.sans-serif'] = ['FangSong']

#mpl.rcParams['axes.unicode_minus'] = False

content = open("testing.txt","rb").read()

# tags extraction based on TF-IDF algorithm

tags = jieba.analyse.extract_tags(content, topK=100, withWeight=False)

text =" ".join(tags)

text = unicode(text)

# read the mask

d = path.dirname(__file__)

trump_coloring = imread(path.join(d, "Trump.jpg"))

wc = WordCloud(font_path='simsun.ttc',

background_color="white", max_words=300, mask=trump_coloring,

max_font_size=40, random_state=42)

# generate word cloud

wc.generate(text)

# generate color from image

image_colors = ImageColorGenerator(trump_coloring)

plt.imshow(wc)

plt.axis("off")

plt.show()

参考资料:

python文本词频统计是字典吗_Python文本挖掘: 词频统计,词云图相关推荐

  1. python中采用字典建立统,Python中使用Counter进行字典创建以及key数量统计的方法...

    这里的Counter是指collections中的Counter,通过Counter可以实现字典的创建以及字典key出现频次的统计.然而,使用的时候还是有一点需要注意的小事项. 使用Counter创建 ...

  2. python 引入同一路径的类_Python实现Wordcloud生成词云图的示例

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前 ...

  3. python词云图实验报告_Python实现Wordcloud生成词云图的示例

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前 ...

  4. python统计汉字个数是_Python中文词频统计

    今天看到的一个统计,统计的金庸小说里面的高频词语.想着看了一周python,试试看能不能统计. 网上找的代码,调整顺序拼接了一下,分词库是结巴分词. 解决了python2.7中字典显示中文乱码的问题 ...

  5. python统计元音字母个数_python正则表达式如何统计元音?

    在我们最先接触语文的时候,就是从读音字母开始的,有些小伙伴还记得我们的元音和辅音吧.小编当时学的时候也不是很轻松,要是问现在具体的元音和辅音的个数还真答不上来,不过小编有办法用python中的正则表达 ...

  6. python graphql query返回一组字典数据_Python的sqlalchemy使用原生sql查询如何返回字典形式的数组?...

    首先使用一个变量接收你以上的查询结果.这个查询结果是一个list,在这个list中包含着一个或多个tuple,其实这并不是标准的Python tuple,而是一个特殊的类型"",这 ...

  7. python统计文章单词次数_Python实现的统计文章单词次数功能示例

    本文实例讲述了Python实现的统计文章单词次数功能.分享给大家供大家参考,具体如下: 题目是这样的:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认 ...

  8. python读取配置文件并添加字典中_Python如何使用ConfigParser读取配置文件

    在项目过程中,需要设置各种IP和端口号信息等,如果每次都在源程序中更改会很麻烦(因为每次都要重启项目重新加载配置信息),因此将需要修改的参数写在配置文件(或者数据库)中,每次只需修改配置文件,就可以实 ...

  9. python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3. ...

最新文章

  1. P2P之UDP穿透NAT的原理
  2. 设计模式之Composite
  3. 优秀交互设计的 UI 原则
  4. mooc c语言测验答案,MOOC-SPOC测试题(部分答案)(至数组一章)-C语言-宣城校区2016年...
  5. 未在本地计算机上注册Microsoft.Jet.OLEDB.4.0解决方案
  6. python启动http服务_Python命令开启http.server服务器
  7. 安卓开发语言php,go语言支持安卓开发吗
  8. 把数组变换成字符串(8)
  9. 老王的常用资源下载(全部附CSDN资源链接 12月19日 更新RetopoFlow3至3.00.2)
  10. 【数据采集】-目前比较流行的几种数据采集方式
  11. Hive 建表语句详解
  12. matlab计算惯性矩,动力总成主惯性矩计算及扭矩轴(TRA)位置确定
  13. win10 计算机网络密码,详细教你Win10怎么查看无线网络密码
  14. 如何用vm虚拟机当服务器,vm虚拟机如何做云服务器
  15. 计算机如何设置光驱启动,怎样将电脑设置成从光驱启动
  16. MIKE 21 教程 1.7 网格生成过程中的常见报错与问题
  17. 抖音视频突然播放量少了很多,抖音限流怎么查看?
  18. vim: command not found 绝妙解决方案
  19. LaTeX 插入高亮代码(LaTex、Python、Java、C、C++等主流语言都支持)
  20. Hprose 是轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件

热门文章

  1. 汇编对sp指针进行修改_从汇编理解函数调用的过程
  2. 一名合格的电子工程师,不能逃避的“梗”
  3. 35岁电子工程师的艰难抉择
  4. 《c语言从入门到精通》看书笔记——第1章 C语言的概述
  5. 惠普战66怎么用u盘进入系统_惠普笔记本怎么用u盘启动装系统,空间也要大所以超来超受欢迎!...
  6. android实现重复动画,android – 多次重复AnimatorSet动画
  7. python多线程共享全局变量_Python多线程-共享全局变量
  8. rosserial_java_ros系统下通过pyserial模块实现串口通讯(Python)
  9. oracle导出一个表数据库,excel怎么导出多个表格数据库数据-一个excel表格中有多个sheet,如何将其导入oracle数......
  10. ei会议论文录用但不参加会议_会议论文投稿可以不参会吗