用python写出红楼梦前十五个出现最多的人名需要排除一些人名无关词汇,如“什么”、“一个”等。
时间: 2023-10-09 11:07:38 浏览: 84
使用Python编写程序,统计书籍《红楼梦》中前20位出场次数最多的人物
5星 · 资源好评率100%
好的,我可以为您提供一个基于Python的解决方案。首先,需要先排除一些无关词汇,可以使用中文停用词表进行过滤。接下来,可以通过正则表达式提取文本中的人名,并使用Python中的字典统计每个人名出现的次数,最后按照出现次数从大到小排序,得到前十五个出现最多的人名。
下面是一个示例代码:
```python
import re
# 加载中文停用词表
stopwords = set()
with open("stopwords.txt", "r", encoding="utf-8") as f:
for line in f:
stopwords.add(line.strip())
# 加载红楼梦文本
with open("hongloumeng.txt", "r", encoding="utf-8") as f:
text = f.read()
# 提取人名
pattern = re.compile("[\u4e00-\u9fa5]+") # 匹配中文字符
names = []
for sentence in text.split("。"):
sentence = sentence.strip()
if not sentence:
continue
for word in sentence.split():
if word not in stopwords and pattern.match(word):
names.append(word)
# 统计人名出现次数
name_count = {}
for name in names:
name_count[name] = name_count.get(name, 0) + 1
# 按照出现次数从大到小排序
sorted_name_count = sorted(name_count.items(), key=lambda x: x[1], reverse=True)
# 输出前十五个出现最多的人名
for name, count in sorted_name_count[:15]:
print(name, count)
```
您需要将代码中的`stopwords.txt`和`hongloumeng.txt`替换为您自己的停用词表和红楼梦文本。
阅读全文