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

词云图如下:


 

  • 16
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 好的,这是一个使用 Python文本关键词提取并可视化的完整代码示例: 首先,我们需要安装几个必要的库,这里使用了 jieba、wordcloud 和 matplotlib: ``` !pip install jieba wordcloud matplotlib ``` 然后,我们可以开始编写代码了: ```python import jieba import matplotlib.pyplot as plt from wordcloud import WordCloud # 读取长文本 with open('text.txt', 'r') as f: text = f.read() # 使用 jieba 库进行中文分词 words = jieba.cut(text) # 统计词频 word_freq = {} for word in words: if len(word) == 1: continue if word in word_freq: word_freq[word] += 1 else: word_freq[word] = 1 # 生词云 wordcloud = WordCloud(font_path='simhei.ttf').generate_from_frequencies(word_freq) # 显示词云 plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() ``` 在这段代码中,我们首先读取了一个长文本(保存在本地的 `text.txt` 文件中),然后使用 jieba 库对文本进行中文分词。接着,我们统计了所有词的词频,并使用 wordcloud 库生了一个词云。最后,我们使用 matplotlib 库将词云显示出来。 注意,在这段代码中使用的字体文件(`simhei.ttf`)是一个简体中文字体文件,你需要将其放在代码所在的目录中。如果你使用的是其他字体 ### 回答2: 长文本关键词提取后的可视化主要可以通过词云图来展示。下面是使用Python进行长文本关键词提取和可视化的完整代码示例: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt # 读取文本文件 with open('text.txt', 'r', encoding='utf-8') as f: text = f.read() # 使用结巴分词进行中文分词 word_list = jieba.lcut(text) words = ' '.join(word_list) # 创建词云对象 wordcloud = WordCloud(width=800, height=400, background_color='white', font_path='simhei.ttf').generate(words) # 显示词云图 plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() ``` 在代码中,首先读取文本文件(假设为text.txt),然后使用结巴分词库进行中文分词,将分词结果拼接为一个字符串作为词云的输入。接下来,创建一个词云对象,指定词云图的宽度、高度、背景颜色和字体。最后,使用`imshow`方法将词云显示出来,并通过`axis`方法将坐标轴设置为不可见,最终展示关键词的可视化效果。 注意:在代码中使用了中文字体文件`simhei.ttf`来支持中文显示,需要提前下载该字体文件并将其放在代码所在的目录下。 ### 回答3: 当需要对长文本进行关键词提取并进行可视化时,可以使用Python中的多个库来实现。以下是一个完整的示例代码: ```python # 导入必要的库 from wordcloud import WordCloud import matplotlib.pyplot as plt from collections import Counter import jieba # 读取文本文件 with open('text.txt', 'r', encoding='utf-8') as f: text = f.read() # 使用结巴分词文本单个词语 words = jieba.cut(text) # 过滤停用词,如果有需要可以自定义停用词 stopwords = ['的', '了', '是', '我', '你', '他'] filtered_words = [word for word in words if word not in stopwords] # 统计词频 word_freq = Counter(filtered_words) # 可以根据需要设置关键词的数量 top_keywords = word_freq.most_common(10) # 创建词云图 wordcloud = WordCloud(background_color='white', width=800, height=400).generate_from_frequencies(dict(top_keywords)) # 显示词云图 plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() ``` 以上代码假设你已经安装了相应的库(如`wordcloud`、`matplotlib`、`jieba`)并导入了它们。代码首先从文本文件中读取文本内容,然后使用结巴分词文本单个词语,并过滤掉停用词。接下来,使用`Counter`库统计词频,然后根据需要选择出现频率最高的词语作为关键词。最后,创建一个词云图并通过`matplotlib`库进行可视化展示注意,以上代码仅仅提供了一个基本的示例,你可以根据自己的需要进行修改和优化。例如,你可以根据具体情况自定义停用词,调整词云图的大小和颜色等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值