文本文件“红楼梦.txt”中包含《红楼梦》小说前20章内容。对“红楼梦.txt”中的文本进行分词,并对人物名称进行归一化处理:凤姐、凤姐儿、凤丫头归一为凤姐;宝玉、二爷、宝二爷归一为宝玉;黛玉、颦儿、林妹妹、黛玉道归一为黛玉;宝钗、宝丫头归一为宝钗;贾母、老祖宗归一为贾母;袭人、袭人道归一为袭人;贾政、贾政道归一为贾政;贾琏、琏二爷归一为贾琏。提取出场次数不少于40次的人物名称,将人物名称及其出场次数按照递减排序写入out.txt文件中。
时间: 2023-07-04 19:04:03 浏览: 192
基于Python的红楼梦文本分析.zip
5星 · 资源好评率100%
以下是Python代码实现:
```python
import jieba
# 归一化人物名称
name_dict = {
"凤姐儿": "凤姐",
"凤丫头": "凤姐",
"二爷": "宝玉",
"宝二爷": "宝玉",
"颦儿": "黛玉",
"林妹妹": "黛玉",
"黛玉道": "黛玉",
"宝丫头": "宝钗",
"老祖宗": "贾母",
"袭人道": "袭人",
"贾政道": "贾政",
"琏二爷": "贾琏"
}
# 读取文本文件
with open("红楼梦.txt", "r", encoding="utf-8") as f:
text = f.read()
# 分词并统计人物出现次数
word_count = {}
for w in jieba.cut(text):
if len(w) < 2:
continue
if w in name_dict:
w = name_dict[w]
if w in word_count:
word_count[w] += 1
else:
word_count[w] = 1
# 过滤出现次数不少于40次的人物
result = [(k, v) for k, v in word_count.items() if v >= 40]
# 按照出现次数递减排序
result = sorted(result, key=lambda x: x[1], reverse=True)
# 写入文件
with open("out.txt", "w", encoding="utf-8") as f:
for r in result:
f.write("{} {}\n".format(r[0], r[1]))
```
运行后,会生成一个名为“out.txt”的文件,其中包含按出场次数递减排序的人物名称及其出场次数。
阅读全文