python统计人名
时间: 2024-10-13 18:10:09 浏览: 5
在Python中,如果你需要统计一段文本中的人名,你可以利用自然语言处理库,如NLTK(Natural Language Toolkit)或者spaCy。这两个库都包含了预先训练好的模型,可以用于词性标注、命名实体识别等任务。首先,你需要安装并导入这些库,然后对文本进行预处理:
```python
import spacy
# 如果你还没安装spacy和对应的中文模型,可以运行:
# !pip install spacy
# !python -m spacy download zh_core_web_sm
nlp = spacy.load('zh_core_web_sm')
def count_people(text):
doc = nlp(text)
people_count = len([ent for ent in doc.ents if ent.label_ == 'PER']) # 'PER'表示人名实体
return people_count
text = "张三去了李四家做客,他们聊得很开心。"
people_count = count_people(text)
print(f"文本中有{people_count}个人名")
#
相关问题
python统计人名出现次数
你可以使用Python中的字典(dictionary)来统计人名出现的次数。以下是一个示例代码:
```python
names = ["Alice", "Bob", "Charlie", "Alice", "David", "Charlie", "Alice"]
name_counts = {}
for name in names:
if name in name_counts:
name_counts[name] += 1
else:
name_counts[name] = 1
print(name_counts)
```
输出结果为:
```
{'Alice': 3, 'Bob': 1, 'Charlie': 2, 'David': 1}
```
这段代码首先创建了一个包含人名的列表 `names`,然后创建了一个空字典 `name_counts`。接下来,我们遍历列表中的每个名字,如果该名字已经在字典中出现过,就将其计数加1,否则,将该名字作为字典的一个新键,并将其计数设置为1。最后,打印出字典中每个名字出现的次数。
python统计红楼梦的词云分析,并统计人名出场频率最高的20位,只输出人名
要对《红楼梦》进行人名出场频率统计并只输出人名,可以参考以下代码:
1. 读取《红楼梦》文本文件并进行分词处理
```
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文本文件
with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 对文本进行分词处理
seg_list = jieba.cut(text, cut_all=False)
```
2. 生成词云图并显示
```
# 生成词云图
wordcloud = WordCloud().generate(' '.join(seg_list))
# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
3. 统计人名出场频率并输出前20名人名
```
import re
import collections
# 使用正则表达式匹配人名
pattern = r'[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*'
name_list = re.findall(pattern, text)
# 统计人名出场频率
counter = collections.Counter(name_list)
name_freq = counter.most_common(20)
# 输出前20名人名
for name, freq in name_freq:
print(name)
```
运行以上代码后,可以得到《红楼梦》的词云图和人名出场频率前20名的人名。需要注意的是,生成词云图和统计人名出场频率的代码需要在同一个Python文件中运行,因为它们都需要对文本进行处理。
阅读全文