我要用python3.7写一段代码,主要任务是逐行读取一个txt,并使用jieba对txt中的内容进行分词、统计词频、标注词性,再将词性及词频结果按顺序逐行写入一个新的txt中,后使用wordcloud对词频结果绘制词云图
时间: 2024-03-27 17:36:21 浏览: 122
好的,以下是实现该功能的Python代码,同样需要安装jieba和wordcloud库:
```python
import jieba
from collections import Counter
import jieba.posseg as pseg
from wordcloud import WordCloud
# 读取原始txt文件
with open('input.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
# 初始化分词器和词频统计器
jieba.load_userdict('userdict.txt') # 加载自定义词典
words = []
counter = Counter()
# 逐行分词、统计词频和标注词性
for line in lines:
words += [(word, flag) for word, flag in pseg.cut(line.strip())]
# 统计词频
for word, _ in words:
counter[word] += 1
# 将结果按顺序写入新的txt文件
with open('output.txt', 'w', encoding='utf-8') as f:
for word, flag in sorted(words, key=lambda x: x[1]):
f.write(word + '\t' + flag + '\t' + str(counter[word]) + '\n')
# 绘制词云图
wordcloud = WordCloud(width=800, height=800, margin=0, background_color='white')
wordcloud.generate_from_frequencies(counter)
wordcloud.to_file('wordcloud.png')
```
其中,`input.txt`和`userdict.txt`分别为原始文本和自定义词典,可以根据实际情况修改文件名和路径。生成的词频结果将按照词性顺序逐行写入`output.txt`文件中,每行包括词语、词性和词频三个字段,以制表符分隔。生成的词云图将保存在`wordcloud.png`文件中。
阅读全文