3.编写程序统计《三国演义》人物出场:输入电子版《三国演义》文本,输出出场率最高的15个人物和次数。
时间: 2024-06-09 09:08:24 浏览: 46
这是一个比较复杂的文本处理任务,需要使用Python编写程序来实现。下面是一种可能的实现方式:
```python
import re
from collections import Counter
# 读入《三国演义》文本
with open('sgyy.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用正则表达式提取人名
pattern = r'[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*'
names = re.findall(pattern, text)
# 统计人名出现次数
counter = Counter(names)
# 输出出现率最高的15个人物
for name, count in counter.most_common(15):
print(name, count)
```
上述代码中,我们首先使用`open()`函数读入《三国演义》文本文件,并将其存储在`text`变量中。接着,我们使用正则表达式提取文本中的人名,并将其存储在`names`列表中。正则表达式中,`[\u4e00-\u9fa5]{2,4}`表示匹配2到4个汉字,`(?:·[\u4e00-\u9fa5]{2,4})*`表示匹配0个或多个以中文点号分隔的汉字。这样就可以匹配出像“刘备”、“关羽”、“诸葛亮·孔明”这样的人名。
接着,我们使用`Counter`类对人名进行统计,并将结果存储在`counter`对象中。最后,我们使用`most_common()`方法获取出现率最高的15个人物,并输出它们的名称和出现次数。
需要注意的是,这种方法可能存在一些错误匹配的情况,比如将“主公”、“将军”等称呼也统计为人名。如果需要更精确的结果,可以考虑使用更复杂的模型或规则来进行分析。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)