使用Python编程,使用dict结构统计词性标注分词的文本, (1)输出频率最高的20个词(带词性符号,标点等也算词)。 (2)输出频率最高的20个名词(词性符号为n,带着词性符号)。 (3)输出频率最高的20个成语(词性符号为i,带着词性符号)
时间: 2024-01-01 09:04:38 浏览: 117
好的,我可以帮你解决这个问题。这里是使用Python编程,使用dict结构统计词性标注分词的文本的代码:
```python
import jieba.posseg as posseg
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 进行分词和词性标注
words = posseg.cut(text)
# 统计词频
word_freq = {}
for word, flag in words:
if word_freq.get(word+flag):
word_freq[word+flag] += 1
else:
word_freq[word+flag] = 1
# 输出频率最高的20个词
top_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:20]
print('频率最高的20个词:')
for word, freq in top_words:
print(word, freq)
# 输出频率最高的20个名词
top_nouns = [word for word in word_freq.keys() if 'n' in word]
top_nouns = sorted(top_nouns, key=lambda x: word_freq[x], reverse=True)[:20]
print('频率最高的20个名词:')
for word in top_nouns:
print(word, word_freq[word])
# 输出频率最高的20个成语
top_idioms = [word for word in word_freq.keys() if 'i' in word]
top_idioms = sorted(top_idioms, key=lambda x: word_freq[x], reverse=True)[:20]
print('频率最高的20个成语:')
for word in top_idioms:
print(word, word_freq[word])
```
修改上面的代码中的 `text.txt` 文件路径为你的文本路径,运行代码即可得到结果。
阅读全文