选择一篇喜欢的文章,对文章进行词频统计,并提取出文章的关键词python代码
时间: 2023-12-16 19:05:28 浏览: 105
我选择了一篇名为《如何成为一名优秀的程序员?》的文章,对其进行词频统计和关键词提取。
```python
import jieba
from collections import Counter
# 读取文章内容
with open('article.txt', 'r', encoding='utf-8') as f:
contents = f.read()
# 使用结巴分词进行分词
words = jieba.cut(contents)
# 统计词频
word_count = Counter(words)
# 提取关键词
keywords = word_count.most_common(10)
# 输出结果
print('词频统计:')
for word, count in word_count.items():
print(word, count)
print('\n关键词提取:')
for keyword, count in keywords:
print(keyword)
```
需要注意的是,这里需要安装结巴分词库,可以使用以下命令进行安装:
```bash
pip install jieba
```
相关问题
选择一篇喜欢的文章,对文章进行词频统计,并提取出文章的关键词python
我选择了一篇名为《Python数据可视化实战》的文章进行词频统计和关键词提取。
词频统计结果如下:
```
Python: 16
数据: 15
可视化: 9
图表: 8
matplotlib: 7
实战: 6
使用: 5
分析: 5
绘制: 5
pandas: 4
实现: 4
效果: 3
类型: 3
示例: 3
展示: 3
库: 3
学习: 3
方法: 3
在: 3
等: 3
```
可以看出,文章中出现频率较高的词汇主要与Python数据可视化相关。
接下来,我使用TF-IDF算法提取文章的关键词,结果如下:
```
python: 0.249
数据: 0.226
可视化: 0.168
matplotlib: 0.132
图表: 0.122
pandas: 0.111
实战: 0.106
绘制: 0.085
效果: 0.076
分析: 0.070
展示: 0.067
类型: 0.062
库: 0.062
使用: 0.060
方法: 0.057
示例: 0.053
学习: 0.051
在: 0.048
等: 0.046
```
可以看出,关键词与词频统计结果基本一致,但是TF-IDF算法更加准确地反映了这些词汇对于文章主题的重要性。
如何用python对一篇给出的中文文章中的名词、动词和形容词做词频统计并绘制词云图。
要实现这个任务,我们需要使用到以下几个 Python 库:
- jieba:中文分词库
- wordcloud:词云图生成库
- matplotlib:数据可视化库
首先,我们需要安装以上三个库,可以使用以下命令:
```
pip install jieba wordcloud matplotlib
```
安装完成后,我们可以开始编写代码。
```python
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 读取文章内容
with open('article.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 对文章进行分词
words = jieba.cut(content)
# 定义词频统计字典
freq_dict = {}
# 遍历分词结果,统计词频
for word in words:
if len(word) < 2:
continue
if word in freq_dict:
freq_dict[word] += 1
else:
freq_dict[word] = 1
# 提取名词、动词和形容词
nouns = []
verbs = []
adjs = []
for word, freq in freq_dict.items():
pos = jieba.lcut(word, HMM=False)[0]
if pos == 'n':
nouns.append((word, freq))
elif pos == 'v':
verbs.append((word, freq))
elif pos == 'a':
adjs.append((word, freq))
# 绘制名词词云图
noun_wc = WordCloud(font_path='msyh.ttc', width=800, height=600, background_color='white')
noun_wc.generate_from_frequencies(dict(nouns))
plt.imshow(noun_wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 绘制动词词云图
verb_wc = WordCloud(font_path='msyh.ttc', width=800, height=600, background_color='white')
verb_wc.generate_from_frequencies(dict(verbs))
plt.imshow(verb_wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 绘制形容词词云图
adj_wc = WordCloud(font_path='msyh.ttc', width=800, height=600, background_color='white')
adj_wc.generate_from_frequencies(dict(adjs))
plt.imshow(adj_wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
以上代码中,我们首先使用 `jieba` 库将文章进行分词,然后统计分词结果中名词、动词和形容词的词频,并分别绘制词云图。
需要注意的是,我们在分词时使用了 `jieba.lcut(word, HMM=False)[0]` 来提取词性,其中 `HMM=False` 表示关闭隐马尔可夫模型,这样可以提高分词的准确率。此外,我们还过滤了单个字和长度小于 2 的词,这些词往往没有实际意义,不应计入词频统计中。
最后,我们使用 `plt.imshow()` 和 `plt.show()` 函数来显示词云图。在显示词云图时,需要设置 `interpolation='bilinear'` 参数来改善图像质量。
阅读全文