python输入一个正整数n,将文件中的文本读取为字符串,利用jieba库的精确模式将文本切分为字符串,将无实质意义的单字符元素和停用词文本中存在的元素去掉,统计长度大于1的每个字符串出现的频率,存储为字典类型,输出词频最高的元素为二元组的列表前n项。
时间: 2024-02-12 17:07:24 浏览: 70
用Python中的jieba对文章进行词频统计
好的,我会尽力解答你的问题。以下是代码实现:
```python
import jieba
from collections import defaultdict
# 读取文本文件为字符串
with open('text.txt', encoding='utf-8') as f:
text = f.read()
# 加载停用词
stopwords = set()
with open('stopwords.txt', encoding='utf-8') as f:
for line in f:
stopwords.add(line.strip())
# 利用jieba库的精确模式将文本切分为字符串
words = jieba.cut(text)
# 统计词频
word_freq = defaultdict(int)
for word in words:
if word not in stopwords and len(word) > 1:
word_freq[word] += 1
# 输出词频最高的前n项
top_n = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:n]
print(top_n)
```
其中,`text.txt` 是待处理的文本文件,`stopwords.txt` 是停用词文件,可以自己找一些现成的或者自己定义一些。`n` 是输入的正整数,表示要输出词频最高的前 n 项。
代码中使用了 `jieba` 库的精确模式进行分词,并且将长度小于等于 1 的单字符元素和停用词去掉,最后统计每个字符串出现的频率,并将结果存储为字典类型。最后,使用 `sorted` 函数按照词频从高到低排序,输出前 n 项即可。
需要注意的是,这里的词频统计方式是基于字符串,而不是基于单个字。如果需要按照单个字进行词频统计,可以将 `jieba.cut` 改为 `jieba.lcut`。
阅读全文