python选择一个文本进行词频统计(英文)或人物出场次数统计(中文)
时间: 2023-05-25 09:02:11 浏览: 356
针对文本的词频统计(英文):
可以使用Python中的Counter类来统计文本中不同单词的出现次数。首先,需要读取文本文件并将其转换为字符串,然后使用split()方法将其拆分为单独的单词。接下来,可以使用Counter类来生成一个字典,其中每个单词都与其出现的次数相对应。以下是一个示例代码:
```python
from collections import Counter
# 读取文本文件并转换为字符串
with open('text.txt', 'r') as file:
text = file.read()
# 将文本字符串拆分为单独的单词
words = text.split()
# 使用Counter类来统计每个单词出现的次数
word_counts = Counter(words)
# 输出前20个出现最频繁的单词
for word, count in word_counts.most_common(20):
print(word, count)
```
针对人物出场次数统计(中文):
可以使用Python中的jieba库来完成中文分词和统计人物出场次数。首先,需要读取文本文件并将其转换为字符串,然后使用jieba库将其分词。接下来,可以使用字典来记录每个人物出现的次数。在遍历每个单词时,可以使用正则表达式来判断是否为人名,如果是,则将其添加到字典中(如果已经在字典中,则增加该人物的计数)。以下是一个示例代码:
```python
import jieba
import re
# 读取文本文件并转换为字符串
with open('text.txt', 'r', encoding='utf-8') as file:
text = file.read()
# 使用jieba库对文本进行分词
words = jieba.lcut(text)
# 创建一个人物计数器字典
character_counts = {}
# 使用正则表达式识别人名,并加入计数器字典中
for word in words:
if re.match('^[\u4e00-\u9fa5]{2,4}$', word): # 判断是否为汉字,且长度在2~4之间
if word in character_counts:
character_counts[word] += 1
else:
character_counts[word] = 1
# 输出前20个出现最频繁的人物名
for name, count in sorted(character_counts.items(), key=lambda x: x[1], reverse=True)[:20]:
print(name, count)
```
需要注意的是,以上代码仅为示例代码,有些情况可能无法识别出人名,是否为人名的判断方法可以根据实际情况进行调整。
阅读全文