Python进行文本分词并统计出现频率前10的关键词可视化
时间: 2023-05-28 18:02:23 浏览: 63
以下是使用Python进行文本分词并统计出现频率前10的关键词可视化的示例代码:
```python
import jieba
from collections import Counter
import matplotlib.pyplot as plt
# 读取文本文件内容
with open("text.txt", "r", encoding="utf-8") as f:
text = f.read()
# 对文本进行分词
words = jieba.cut(text)
# 统计词频并选取出现频率前10的关键词
counter = Counter(words)
top10 = counter.most_common(10)
# 可视化关键词词频分布
x = [i[0] for i in top10]
y = [i[1] for i in top10]
plt.bar(x, y)
plt.title("Top 10 Keywords")
plt.xlabel("Keywords")
plt.ylabel("Frequency")
plt.show()
```
在运行以上代码前,需要先安装jieba和matplotlib库。其中,jieba用于进行中文分词,matplotlib用于绘制关键词词频分布图。此外,代码中的"text.txt"需要替换为自己的文本文件路径。运行以上代码后,即可得到一张关键词词频分布图,展示了出现频率前10的关键词及其对应的词频。
相关问题
长文本关键词提取后,进行可视化,Python代码示例
下面是一个使用 Python 进行长文本关键词提取并可视化的代码示例。这里使用了 jieba 库进行中文分词,并使用 wordcloud 库进行可视化。
首先,需要安装 jieba 和 wordcloud 库:
```python
!pip install jieba
!pip install wordcloud
```
然后,导入所需的库:
```python
import jieba
import jieba.analyse
from wordcloud import WordCloud
```
接下来,使用 jieba 库进行分词,并使用 jieba.analyse.extract_tags 函数进行关键词提取。这里设置了参数 topK=20,表示提取出现频率最高的 20 个关键词:
```python
# 将文本进行分词
text = "这是一段长文本,用于演示长文本关键词提取的代码示例。"
words = jieba.cut(text)
# 提取关键词
keywords = jieba.analyse.extract_tags(text, topK=20)
print(keywords)
```
最后,使用 wordcloud 库进行可视化:
```python
# 生成词云
wc = WordCloud(font_path='simhei.ttf', background_color='white', max_words=20)
wc.generate_from_frequencies(keywords)
# 展示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
完整的代码如下:
```python
import jieba
import jieba.analyse
from wordcloud import WordCloud
# 将文本进行分词
text = "这是一段长文本,用于演示长文本关键词提取的代码示例。"
words = jieba.cut(text)
用python进行中文词频统计并利用词云图进行数据可视化
好的,以下是一个简单的中文词频统计和词云图的实现示例:
1. 中文词频统计
```python
import jieba
import collections
from collections import Counter
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba对文本进行分词
seg_list = jieba.cut(text)
# 去除停用词
stopwords = ['的', '了', '是', '我', '你', '他', '她', '我们', '你们', '他们']
words = [word for word in seg_list if word not in stopwords]
# 统计词频并按照频率从高到低排序
word_counts = Counter(words)
word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
# 输出前10个词和频率
for word, count in word_counts[:10]:
print(f'{word}: {count}')
```
2. 利用词云图进行数据可视化
```python
import jieba
import collections
from collections import Counter
import wordcloud
import matplotlib.pyplot as plt
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba对文本进行分词
seg_list = jieba.cut(text)
# 去除停用词
stopwords = ['的', '了', '是', '我', '你', '他', '她', '我们', '你们', '他们']
words = [word for word in seg_list if word not in stopwords]
# 统计词频并按照频率从高到低排序
word_counts = Counter(words)
word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)
# 生成词云图
wc = wordcloud.WordCloud(font_path='msyh.ttc', background_color='white',
max_words=2000, max_font_size=200, width=800, height=600)
wc.generate_from_frequencies(dict(word_counts))
# 显示词云图
plt.imshow(wc)
plt.axis('off')
plt.show()
```
其中,`text.txt`为待统计的文本文件,`msyh.ttc`为中文字体文件,需自行下载。执行以上代码后,会输出前10个词和频率,并在窗口中显示词云图。