使用python读取"三国演义.txt",并统计出《三国演义》排名前十五的人物以及其出现的次数。使用词云展示出现的人物。
时间: 2024-10-21 14:14:31 浏览: 73
分析三国演义和红楼梦,进行中文分词,统计人物出场频次,生成词云图
在Python中,我们可以使用`requests`库来从网络上获取文本文件(如果文件不在本地),然后使用内置的`open()`函数读取本地文件。接着,我们可以使用`nltk`库来进行文本处理,特别是分词和计数。为了统计人物及其出现频率,我们需要先对文本进行预处理,例如去除标点、停用词等,然后通过正则表达式识别人名。
下面是一个简化的步骤说明:
1. 安装必要的库:
```bash
pip install requests nltk
```
2. 导入所需的模块,并下载停用词表:
```python
import requests
import re
from collections import Counter
from nltk.corpus import stopwords
from wordcloud import WordCloud
# 下载停用词
nltk.download('stopwords')
```
3. 读取文件内容并提取人名:
```python
def extract_persons(text):
# 此处假设人名是由两个汉字组成的连续字符串
pattern = r'[A-Za-z\u4e00-\u9fa5]{2}'
return [word for word in re.findall(pattern, text) if word not in stopwords.words('chinese')]
# 获取文件内容
if __name__ == '__main__':
url = 'https://example.com/三国演义.txt' # 如果是网络文件,请替换为实际链接
response = requests.get(url)
text = response.text
persons = extract_persons(text)
```
4. 统计出现频率并排序:
```python
person_counter = Counter(persons).most_common(15)
top_15_persons = [person[0] for person in person_counter]
top_15_counts = [person[1] for person in person_counter]
```
5. 创建词云:
```python
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white').generate_from_frequencies(dict(zip(top_15_persons, top_15_counts)))
wordcloud.to_file('top_people_wordcloud.png')
```
在这个例子中,我们假设有一个名为'simhei.ttf'的字体文件来支持中文显示。最后,将生成的词云图片保存到本地。
阅读全文