编写Python代码实现功能:接受用户输入的新闻文本,分析出其中出现频率最高的十个词汇及其各自的计数,并利用词云库生成一个可视化词云图。请提供完整的步骤和相应的代码示例。
时间: 2024-10-23 16:14:19 浏览: 47
python项目源码_实例45_用Python分析文本数据的词频.rar
为了实现这个功能,我们需要分为以下几个步骤:
1. **数据预处理**:获取用户输入的新闻文本并将其转换为小写,移除标点符号和停用词。
2. **分词和计频**:将文本拆分成单词,并计算每个单词的出现次数。
3. **选取高频词**:选择出现频率最高的十个词汇。
4. **生成词云图**:使用`wordcloud`库创建词云。
首先,确保已经安装了必要的库:
```bash
pip install jieba
pip install wordcloud
pip install matplotlib
```
然后,编写以下Python代码:
```python
import jieba.analyse
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
# Step 1: 获取用户输入
news_text = input("请输入新闻文本:")
# Step 2: 数据预处理
news_text = news_text.lower()
stop_words = set(STOPWORDS) # 使用默认的中文停用词
words = [word for word in jieba.cut(news_text) if word not in stop_words]
# Step 3: 分词和计频
word_freq = {word: words.count(word) for word in words}
# Step 4: 选取高频词 (这里取前10个)
top_10_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:10]
print("出现频率最高的十个词汇及计数:")
for word, count in top_10_words:
print(f"{word}: {count}")
# Step 5: 生成词云图
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=600).generate_from_frequencies(word_freq)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
在这个例子中,我们使用了jieba库对中文文本进行分词,`wordcloud`库用于生成词云,matplotlib则用于显示图片。请注意替换`font_path`为你本地的字体路径,如果需要中文支持。运行这段代码后,会显示用户输入文本的词云图,以及高频词汇及其计数。
阅读全文