用python写一个程序,进行文本分析及可视化 ① 统计出《三国演义》排名前十五的人物以及其出现的次数。使用词云展示出现的人物。 ② (选做)设置词云的形状。
时间: 2024-10-16 10:05:19 浏览: 59
python学习文本词频统计hamlet三国演义
在Python中,我们可以利用NLTK库进行文本分析,matplotlib库进行数据可视化,尤其是通过WordCloud模块制作词云。以下是简单的步骤:
首先,安装必要的库:
```bash
pip install nltk wordcloud matplotlib
```
然后,编写一个脚本来完成任务:
1. **统计并排序人物及其出现次数**:
```python
import jieba
from collections import Counter
import pandas as pd
# 假设我们有一个包含《三国演义》文本的字符串
text = "三国演义全文...(需要替换为你实际的文本)"
# 使用jieba分词处理文本
tokens = jieba.lcut(text)
# 提取人名(这里仅作为示例,实际需要根据文本结构调整)
person_list = ["赵云", "刘备", "关羽", ...] # 实际上可能需要从文本中提取
tokens = [token for token in tokens if token in person_list]
# 使用Counter统计词频
top_people = Counter(tokens).most_common(15)
# 转换为DataFrame以便显示
df = pd.DataFrame(top_people, columns=['人物', '频率'])
print(df)
```
2. **创建词云**:
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 将人物名称和频率列表转换为适合WordCloud的数据
word_data = ' '.join([f'{name}: {count}' for name, count in top_people])
# 设置词云参数
wc = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=400)
# 创建词云图像
wordcloud = wc.generate(word_data)
# 显示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
如果想设置词云的形状,`WordCloud`有个`mask`参数可以接受一个二值图片,你可以准备一个特定形状的PNG文件作为词云的背景。
阅读全文