python当考生目录中有中文电子版的《红楼梦》小说txt的文件,利用jieba库,编程统计两部小说中人物出场的次数,并排除“什么”,“一个”,“我们”,“你们”,“起来”,“这里”,“出来”,“那里”,“怎么”,“不是”,“只见”,“没有”,“知道”,“两个”,“一面”,“如今”,“自己”,“说道”18个词,输出人物出场次数的前十名,去掉分词中一个字的。‘’‘
时间: 2023-09-07 18:13:32 浏览: 237
好的,我来给您写一个代码。首先需要安装jieba库,可以使用以下命令进行安装:
```
pip install jieba
```
接下来是代码实现:
```python
import jieba
# 读取《红楼梦》文本
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 停用词
stop_words = ['什么', '一个', '我们', '你们', '起来', '这里', '出来', '那里', '怎么', '不是', '只见', '没有', '知道', '两个', '一面', '如今', '自己', '说道']
# 分词
words = jieba.lcut(text)
word_counts = {}
# 统计词频
for word in words:
if len(word) > 1 and word not in stop_words:
word_counts[word] = word_counts.get(word, 0) + 1
# 读取考生目录中的文本
with open('考生目录/另一部小说.txt', 'r', encoding='utf-8') as f:
text2 = f.read()
# 分词
words2 = jieba.lcut(text2)
word_counts2 = {}
# 统计词频
for word in words2:
if len(word) > 1 and word not in stop_words:
word_counts2[word] = word_counts2.get(word, 0) + 1
# 合并人物出现次数
characters_counts = {}
for word_count in [word_counts, word_counts2]:
for word, count in word_count.items():
if word in characters_counts:
characters_counts[word] += count
else:
characters_counts[word] = count
# 输出人物出现次数的前十名
characters_counts = sorted(characters_counts.items(), key=lambda x: x[1], reverse=True)
for i in range(10):
print(characters_counts[i])
```
需要将代码中的红楼梦文本替换为考生目录中的《红楼梦》小说txt文件名,另一部小说也一样。另外,需要保证两个文本文件编码方式为utf-8。
该代码使用了jieba库进行中文分词和统计词频,同时排除了停用词和单个汉字。最后输出人物出现次数的前十名。
阅读全文