Python编程,使用dict结构统计词性标注分词的文本, (1)输出频率最高的20个词(带着词性符号,标点等也算词)。 (2)输出频率最高的20个名词(词性符号为n,带着词性符号)。 (3)输出频率最高的20个成语(词性符号为i,带着词性符号)
时间: 2024-01-01 18:04:29 浏览: 123
好的,我来回答你的问题。
针对这个问题,我们可以按照以下步骤来处理:
1. 读取文本,进行分词和词性标注。
2. 统计词频,并按照词频从高到低排序。
3. 输出频率最高的20个词、20个名词和20个成语。
下面是一份可能的Python代码,可以实现这个功能:
```python
import jieba.posseg as pseg
# 读取文本
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词和词性标注
words = pseg.cut(text)
# 统计词频
word_freq = {}
for word, flag in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# 按照词频排序
sorted_word_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
# 输出频率最高的20个词
print("频率最高的20个词:")
for word, freq in sorted_word_freq[:20]:
print(word, freq)
# 输出频率最高的20个名词
print("频率最高的20个名词:")
nouns = [(word, freq) for word, freq in sorted_word_freq if 'n' in word_freq]
for word, freq in nouns[:20]:
print(word, freq)
# 输出频率最高的20个成语
print("频率最高的20个成语:")
idioms = [(word, freq) for word, freq in sorted_word_freq if 'i' in word_freq]
for word, freq in idioms[:20]:
print(word, freq)
```
其中,`jieba.posseg`模块提供了分词和词性标注的功能。对于每个词语,我们按照其词性将其分为不同的类别。然后,我们使用一个字典来统计每个词语出现的次数,并按照词频从高到低进行排序。最后,我们输出频率最高的20个词、20个名词和20个成语。
希望这个代码能够帮到你!
阅读全文