jieba分词 是一款开源的中文分词包,同时它还带有分析模块,可以用TF-IDF等算法进行关键词分析
jieba
下面的小程序的基本思路是:
通过jieba从 保存好的txt文本中提取关键词,根据关键词的权重等决定关键词的文字大小,用matplotlib将它们呈现出来
#coding:utf-8
import os
import tkFileDialog #文件对话框模块
import jieba #jieba分词模块
import jieba.analyse #jieba分词分析模块
import codecs #中文编码转换模块
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
default_dir = r"D:/py/" # 设置默认打开目录
fname = tkFileDialog.askopenfilename(title=u"选择文件",
initialdir=(os.path.expanduser(default_dir))) #选择供分析用的文本文件
fig=plt.figure()
fig.suptitle(u'关键词语TF-IDF分析',fontsize=14,fontweight='bold')
ax=fig.add_subplot(111)
ax.set_xlim(0,10)
ax.set_ylim(0,10)
fig.subplots_adjust(top=0.85)
with codecs.open(fname) as fr:
s=fr.read()
s_out=jieba.analyse.extract_tags(s, withWeight=True) #用jieba提取关键词
max_weight=max(list(map(lambda y: y[1],s_out)))
f_scale=int(1/max_weight)
for x, w in s_out:
print('%s %s' %(x,w))
locate=np.random.rand(2)
size=int(f_scale64w)
col=int(8w)+1
ax.text(locate[0]10,locate[1]*10,x,
fontsize=size,fontdict=None,color='blue') #pad表示与字的边距
plt.show()
从百度百科上取一段文字做测试:
蒙古族 编辑
蒙古族(蒙古语:ᠮᠣᠩᠭᠣᠯᠦᠨᠳᠦᠰᠦᠲᠡᠨ,西里尔字母:Монгол үндэстэн),是主要分布于东亚地区的一个传统游牧民族,是中国的少数民族之一,同时也是蒙古国的主体民族。此外,蒙古族在俄罗斯等亚欧国家也有分布,鄂温克族和土族也有时被认为是蒙古族的分支。[1]
蒙古族始源于古代望建河(今额尔古纳河)东岸一带。13世纪初,以成吉思汗为首的蒙古部统一了蒙古地区诸部,逐渐形成了一个新的民族共同体。
蒙古族人民世居草原,以畜牧为生计。过着“逐水草而居”的游牧生活,尽管这种生存方式在现代社会被弱化,但仍然被视作蒙古族的标志。
蒙古族在科学文化事业上比较发达,而且音乐、舞蹈也在艺术上居于相对显赫的地位[2] 。
《蒙古秘史》、《蒙古黄金史》、《蒙古源流》被称为蒙古族的三大历史巨著,其中《蒙古秘史》被联合国教科文组织确定为世界著名文化遗产。英雄史诗《江格尔》是中国的三大史诗之一。[3]
中文名 蒙古族 外文名 Mongols 人 口 约1000万 人口分布 中国,蒙古国,俄罗斯等 语 言蒙古语 文 字回鹘式蒙古文,西里尔蒙古文 信 仰萨满教,藏传佛教,回教 别 称 蒙古人,草原骄子,马背上的民族 方 言 内蒙古,卫拉特,巴尔虎布里亚特
目录
1 名称
2 历史
▪ 原始社会时期
▪ 民族的统一与对外征伐
▪ 元朝灭亡后的蒙古诸部
▪ 蒙古国的独立与内蒙古自治区的建立
3 人口
4 政治
原文比较长,就不全部贴上了。
关键词分析结果:
蒙古 0.169165636577
蒙古族 0.126360191488
蒙古人 0.055626259173
成吉思汗 0.0423217004291
民族 0.033926093091
四胡 0.0298077928858
....
分析之后的可视化结果: