文本文件“红楼梦•txt”中包含《红楼梦》小说前20章内容。对“红楼梦.txt”中的文本进行分词,并对人物名称进行归一化处理:凤姐、风姐儿、凤丫头归一为凤姐;宝玉、二爷、宝二爷归一为宝玉:黛玉、颦儿、林妹妹、黛玉道归一为黛玉;宝钗、宝丫头归一为宝钗;贾母、老祖宗归一为贾母;袭人、袭人道归一为袭人;费政、贵政道归一为费政:费琏、琏二爷归一为费琏。提取出场次数不少于40次的人物名称,将人物名称及其出场次数按照递减排序写入out. txt文件中。
时间: 2023-07-04 15:24:29 浏览: 192
好的,我可以帮你进行分词和人物名称的归一化处理。不过我暂时无法直接写文件,需要您自己将结果保存到文件中。以下是代码实现:
```python
import jieba
# 读取文本文件
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.cut(text)
# 人物名称归一化处理
name_dict = {
'凤姐': '凤姐',
'风姐儿': '凤姐',
'凤丫头': '凤姐',
'宝玉': '宝玉',
'二爷': '宝玉',
'宝二爷': '宝玉',
'黛玉': '黛玉',
'颦儿': '黛玉',
'林妹妹': '黛玉',
'黛玉道': '黛玉',
'宝钗': '宝钗',
'宝丫头': '宝钗',
'贾母': '贾母',
'老祖宗': '贾母',
'袭人': '袭人',
'袭人道': '袭人',
'费政': '费政',
'贵政道': '费政',
'费琏': '费琏',
'琏二爷': '费琏'
}
words = [name_dict.get(word, word) for word in words]
# 统计人物出现次数
counter = {}
for word in words:
if word in counter:
counter[word] += 1
else:
counter[word] = 1
# 筛选出现次数不少于40次的人物名称
sorted_counter = sorted(counter.items(), key=lambda x: x[1], reverse=True)
selected_names = [name for name, count in sorted_counter if count >= 40]
# 输出结果
for name in selected_names:
print(name, counter[name])
```
你可以将上面的代码复制到本地 Python 环境中运行。最后,将输出结果手动保存到 `out.txt` 文件中即可。
阅读全文