Python词频统计并返回前n个高频词
时间: 2024-09-24 18:07:17 浏览: 61
Python中可以使用collections模块下的Counter类来进行文本的词频统计。以下是一个简单的例子,演示如何统计一段文本中每个单词的频率,并返回前n个最常见的单词:
```python
from collections import Counter
def top_n_words(text, n=10):
# 将文本分割成单词列表
words = text.lower().split()
# 使用Counter计算词频
word_counts = Counter(words)
# 返回最常出现的n个单词及其频率
return word_counts.most_common(n)
# 示例使用
text = "这是一个示例句子,它包含了一些重复的单词,我们将统计其中最常用的几个"
top_words = top_n_words(text)
print("前{}个高频词:".format(n))
for word, freq in top_words:
print(f"{word}: {freq}次")
```
在这个例子中,我们首先将文本转换为小写并按空格拆分为单词,然后使用Counter计算词频。most_common()方法会返回一个元组列表,列表中的元素按照词频降序排列。
相关问题
Python 词频统计并生成 词云
### 使用Python实现词频统计并创建词云可视化
#### 准备工作
为了完成这项任务,需要安装几个必要的库。可以通过pip来安装这些依赖项:
```bash
pip install jieba wordcloud matplotlib pandas
```
#### 数据预处理
对于中文文本,在进行词频统计之前通常要先分词。`jieba`是一个非常流行的用于中文分词的第三方库。
```python
import jieba
text = "这里是你想要分析的文字内容"
words = jieba.lcut(text)
filtered_words = [word for word in words if len(word)>1 and not word.isspace()]
```
这段代码会加载一段文字,并通过`jieba.lcut()`方法将其分割成词语列表;接着过滤掉长度小于等于1以及空白字符[^3]。
#### 统计词频
接下来可以使用Pandas来进行简单的词频统计:
```python
from collections import Counter
import pandas as pd
counter = Counter(filtered_words)
df = pd.DataFrame.from_dict(counter, orient='index').reset_index()
df.columns=['Word', 'Frequency']
df_sorted = df.sort_values(by="Frequency", ascending=False)
print(df_sorted.head())
```
上述脚本首先计算每个单词出现次数,再转换为DataFrame格式以便后续操作,最后按照频率降序排列显示前几条记录[^2]。
#### 创建词云图像
有了前面准备好的数据之后就可以绘制词云了。下面是如何利用`wordcloud`库生成一张美观的图片表示最常使用的词汇:
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud(font_path='/path/to/simhei.ttf',
background_color="white",
max_words=200,
width=800,
height=400).generate_from_frequencies(dict(df_sorted.values))
plt.figure(figsize=(10,5))
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
```
注意这里的`font_path`参数指定了字体文件的位置,因为默认情况下英文环境下的系统可能无法正确渲染汉字,所以建议指定一个支持中文显示的TTF字体路径[^1]。
用python词频统计之三国演义前十位 并展示词云图
好的,我可以帮你完成这个任务。
首先,你需要先下载《三国演义》的电子版文本,将其保存为txt格式。然后,你需要安装一些Python库,包括jieba(用于中文分词)、wordcloud(用于生成词云图)等。你可以使用以下命令进行安装:
```python
!pip install jieba # 安装中文分词库jieba
!pip install wordcloud # 安装生成词云图库wordcloud
```
然后,你可以使用以下Python代码进行词频统计和生成词云图:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud
# 读取文件
with open('san_guo_yan_yi.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 分词
words = jieba.cut(content)
# 统计词频
word_counts = Counter(words)
# 获取前10个高频词
top_10_words = word_counts.most_common(10)
# 输出前10个高频词
print('前10个高频词:')
for word, count in top_10_words:
print('{}: {}'.format(word, count))
# 生成词云图
wordcloud = WordCloud(background_color='white', font_path='simhei.ttf', width=800, height=600)
wordcloud.generate_from_frequencies(word_counts)
wordcloud.to_file('wordcloud.png')
```
其中,`san_guo_yan_yi.txt`是保存《三国演义》文本的文件名,需要根据实际情况修改。`top_10_words`存储了前10个高频词,你可以根据需要修改为前20个或其他数量。`simhei.ttf`是一个中文字体文件,用于在词云图中显示中文。你需要将其下载并保存在与Python文件相同的目录下。
运行以上代码后,你可以得到前10个高频词,并保存一个名为`wordcloud.png`的词云图。你可以使用以下代码显示词云图:
```python
import matplotlib.pyplot as plt
# 显示词云图
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
```
运行后,你就可以看到生成的词云图了。
阅读全文
相关推荐
















