编写Python代码实现功能:接受用户输入的新闻文本,分析出其中出现频率最高的十个词汇及其各自的计数,并利用词云库生成一个可视化词云图。请提供完整的步骤和相应的代码示例。(利用正则表达式)
时间: 2024-10-23 14:13:33 浏览: 10
首先,我们需要安装必要的库,包括`jieba`用于中文分词,`collections`用于统计词汇频率,以及`wordcloud`和`matplotlib`用于绘制词云。你可以通过pip安装:
```bash
pip install jieba collections wordcloud matplotlib
```
然后,我们可以按照以下步骤编写Python代码:
1. 导入库并读取用户输入的新闻文本
2. 使用正则表达式去除非字母数字字符并分词
3. 统计词汇频率
4. 提取出现频率最高的十个词汇
5. 生成词云图
以下是完整的代码示例:
```python
import re
import jieba
from collections import Counter
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
# Step 1: 用户输入新闻文本
news_text = input("请输入新闻文本:")
# Step 2: 去除非字母数字字符并分词
cleaned_text = re.sub(r'[^\w\s]', '', news_text)
tokens = jieba.lcut(cleaned_text)
# Step 3: 统计词汇频率
word_counts = Counter(tokens)
# Step 4: 提取频率最高的十个词汇
top_10_words = word_counts.most_common(10)
print("出现频率最高的十个词汇及次数:")
for word, count in top_10_words:
print(f"{word}: {count}")
# Step 5: 生成词云图
stopwords = set(STOPWORDS) # 中文停用词
wordcloud = WordCloud(
font_path='simhei.ttf', # 如果需要特定字体
background_color="white",
width=800,
height=600,
stopwords=stopwords,
).generate_from_frequencies(word_counts)
plt.figure(figsize=(10, 7))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.title("新闻文本高频词汇词云图")
plt.show()
```
在这个例子中,你需要有一个名为'simhei.ttf'的TrueType字体文件,因为它用于支持中文显示。如果没有,你可以下载一个包含中文字符的字体替换它。
阅读全文