红楼梦中人名词频统计,不使用jieba函数
时间: 2024-06-18 17:05:53 浏览: 27
红楼梦是一部中国古典小说,其中出现了众多人物。如果不使用jieba函数,我们可以通过Python的字符串处理函数实现人名的词频统计。具体步骤如下:
1. 将红楼梦的文本读入Python中;
2. 对文本进行预处理,包括去除标点符号、将所有字母转为小写等操作;
3. 根据人名的特征(如“贾”、“林”、“史”等姓氏),筛选出可能为人名的字符串;
4. 对筛选出的字符串进行词频统计。
以下是一个简单的示例代码,可以实现人名的词频统计:
```python
import re
# 读入红楼梦文本
with open('红楼梦.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 预处理文本,去除标点符号、将所有字母转为小写
text = re.sub(r'[^\u4e00-\u9fa5]', '', text)
text = text.lower()
# 筛选出可能为人名的字符串
name_list = []
for i in range(len(text)):
if text[i] == '贾' or text[i] == '史' or text[i] == '王' or text[i] == '薛' or text[i] == '林':
name = ''
j = i + 1
while j < len(text) and text[j] not in {' ', '\n', '\r'}:
name += text[j]
j += 1
if len(name) > 1:
name_list.append(name)
# 统计人名词频
name_freq = {}
for name in name_list:
if name in name_freq:
name_freq[name] += 1
else:
name_freq[name] = 1
# 按词频从大到小排序
sorted_name_freq = sorted(name_freq.items(), key=lambda x: x, reverse=True)
# 输出前20个人名及其词频
for i in range(20):
print(sorted_name_freq[i])
```
相关推荐
![](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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)