python--对文本分词去停用词提取关键词并词云展示完整代码示例

对文本分词、去停用词、提取关键词、并词云展示完整代码示例

首先,文本all.txt的内容如下:

北京故宫是中国明清两代的皇家宫殿,旧称紫禁城,位于北京中轴线的中心,是中国古代宫廷建筑之精华。北京故宫以三大殿为中心,占地面积72万平方米,建筑面积约15万平方米,有大小宫殿七十多座,房屋九千余间。是世界上现存规模最大、保存最为完整的木质结构古建筑之一。
北京故宫于明成祖永乐四年(1406年)开始建设,以南京故宫为蓝本营建,到永乐十八年(1420年)建成。它是一座长方形城池,南北长961米,东西宽753米,四面围有高10米的城墙,城外有宽52米的护城河。紫禁城内的建筑分为外朝和内廷两部分。外朝的中心为太和殿、中和殿、保和殿,统称三大殿,是国家举行大典礼的地方。内廷的中心是乾清宫、交泰殿、坤宁宫,统称后三宫,是皇帝和皇后居住的正宫。 [1] 
北京故宫被誉为世界五大宫之首(法国凡尔赛宫、英国白金汉宫、美国白宫、俄罗斯克里姆林宫),是国家AAAAA级旅游景区, [2-3]  1961年被列为第一批全国重点文物保护单位; [4]  1987年被列为世界文化遗产。 [5] 
2012年1月至2018年6月,故宫累计接待观众达到1亿人次。2019年起,故宫将试行分时段售票 [6]  。2018年9月3日,故宫养心殿正式进入古建筑研究性保护修缮工作的实施阶段。 [7]  2019年3月4日,故宫公布了2019年下半年展览计划。

完整代码如下:

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt  #绘制图像的模块
import jieba.analyse as anls  # 关键词提取
import re
from collections import Counter

'''功能描述:
   1、读取文本
   2、分词
   3、加载停用词表
   4、去停用词
   5、提取关键词2种方法
   6、画词云展示
'''

#1、读取文本
text = open("all.txt", 'r', encoding='utf-8').read()
#加载停用词表
stopwords = [line.strip() for line in open('stopWords_CH.txt', encoding='UTF-8').readlines()]  # list类型
#分词未去停用词
text_split = jieba.cut(text)  # 未去掉停用词的分词结果   list类型

#去掉停用词的分词结果  list类型
text_split_no = []
for word in text_split:
    if word not in stopwords:
        text_split_no.append(word)
#print(text_split_no)

text_split_no_str =' '.join(text_split_no)  #list类型分为str

#基于tf-idf提取关键词
print("基于TF-IDF提取关键词结果:")
keywords = []
for x, w in anls.extract_tags(text_split_no_str, topK=20, withWeight=True):
    keywords.append(x)   #前20关键词组成的list
keywords = ' '.join(keywords)   #转为str
print(keywords)


#画词云
wordcloud = WordCloud(
   #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
   font_path="C:/Windows/Fonts/simfang.ttf",
   #设置了背景,宽高
   background_color="white",width=1000,height=880).generate(keywords)   #keywords为字符串类型

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()


运行结果:

控制台输出;

基于TF-IDF提取关键词结果:
故宫 北京故宫 2019 外朝 2018 中心 古建筑 大殿 紫禁城 永乐 统称 宫殿 万平方米 列为 九千余 世界 和内廷 72 15 1406

词云图如下:

python--对文本分词去停用词提取关键词并词云展示完整代码示例_第1张图片
 

你可能感兴趣的:(Python,自然语言处理)