实现对中文文本文件的读取(水浒传.txt); 2、实现对中文文本文件的单词抽取; 3、实现对中文文本文件中出现频次最高的前10个词语的抽取,并降序输出(包含频次); 4、(选做)实现对中文文本文件中出现频次最高的前10个人物的抽取,并降序输出
时间: 2024-02-21 21:00:19 浏览: 96
好的,我会尽力回答你的问题。
首先,实现对中文文本文件的读取可以使用 Python 的内置函数 open(),代码如下:
```python
with open('水浒传.txt', 'r', encoding='utf-8') as f:
content = f.read()
```
其中,'水浒传.txt' 是文件名,'r' 表示以只读方式打开文件,'utf-8' 是文件的编码格式。
接下来,实现对中文文本文件的单词抽取可以使用 jieba 库对文本进行分词,代码如下:
```python
import jieba
words = jieba.lcut(content)
```
其中,jieba.lcut() 函数可以将文本分成一个个单词,返回一个列表。
然后,实现对中文文本文件中出现频次最高的前10个词语的抽取,并降序输出(包含频次)可以使用 Python 的 Counter 类对单词进行统计,代码如下:
```python
from collections import Counter
word_count = Counter(words)
top10 = word_count.most_common(10)
for word, count in top10:
print(word, count)
```
其中,Counter(words) 可以将单词列表转化为 Counter 对象,most_common(10) 可以返回出现频次最高的前 10 个元素,返回结果是一个列表,列表中每个元素是一个元组,第一个元素是单词,第二个元素是出现的次数。
最后,实现对中文文本文件中出现频次最高的前10个人物的抽取,并降序输出可以使用人名识别库 jieba.posseg 对分词后的词语进行筛选,代码如下:
```python
import jieba.posseg as pseg
people = {}
for word, flag in pseg.cut(content):
if flag == 'nr':
if word in people:
people[word] += 1
else:
people[word] = 1
top10_people = sorted(people.items(), key=lambda x: x[1], reverse=True)[:10]
for person, count in top10_people:
print(person, count)
```
其中,jieba.posseg.cut() 函数可以将分词后的词语标注词性,'nr' 表示人名,筛选出人名后,使用字典统计出现次数,最后使用 sorted() 函数对出现次数进行排序,并取出前 10 个元素。
阅读全文