怎样对一篇同时含有中文和英文的文本进行词频统计并绘制词云图 python代码
时间: 2024-02-06 08:02:04 浏览: 31
以下是对一篇同时含有中文和英文的文本进行词频统计并绘制词云图的 Python 代码:
```
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
text = jieba.cut(text)
# 统计词频
word_freq = {}
for word in text:
if word not in word_freq:
word_freq[word] = 1
else:
word_freq[word] += 1
# 生成词云图
wc = WordCloud(background_color='white', width=800, height=600)
wc.generate_from_frequencies(word_freq)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
上述代码中,我们首先使用 `jieba` 库对文本进行了分词,然后统计每个词的出现频率。最后使用 `wordcloud` 库生成词云图并绘制出来。需要注意的是,在使用 `jieba` 库时需要提前安装并下载中文分词词库。此外,绘制词云图时可以根据需要调整参数,如背景色、大小等。
相关问题
如何用python对一篇中文文章进行词频统计并绘制词云图。
要对一篇中文文章进行词频统计并绘制词云图,可以使用Python中的jieba和wordcloud库。步骤如下:
1. 安装jieba和wordcloud库。在命令行中输入以下命令:
```
pip install jieba
pip install wordcloud
```
2. 导入所需库:
```python
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
```
3. 打开中文文章并读取:
```python
with open('article.txt', 'r', encoding='utf-8') as f:
article = f.read()
```
4. 使用jieba分词,并统计词频:
```python
words = jieba.lcut(article) # 使用精确模式分词
freq = {}
for word in words:
if len(word) > 1: # 只统计长度大于1的词语
freq[word] = freq.get(word, 0) + 1
```
5. 生成词云图:
```python
mask = np.array(Image.open('mask.png')) # 打开遮罩图片
wc = WordCloud(background_color='white', font_path='msyh.ttc', mask=mask, max_words=200, max_font_size=100, random_state=42)
wc.generate_from_frequencies(freq) # 根据词频生成词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
其中,mask参数指定了词云图的形状,max_words和max_font_size分别指定了最多显示的词数和词的最大字号,font_path指定了使用的字体。
完整代码如下:
```python
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
with open('article.txt', 'r', encoding='utf-8') as f:
article = f.read()
words = jieba.lcut(article)
freq = {}
for word in words:
if len(word) > 1:
freq[word] = freq.get(word, 0) + 1
mask = np.array(Image.open('mask.png'))
wc = WordCloud(background_color='white', font_path='msyh.ttc', mask=mask, max_words=200, max_font_size=100, random_state=42)
wc.generate_from_frequencies(freq)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
其中,article.txt是要处理的文章,mask.png是词云图的形状图片,msyh.ttc是字体文件。
python对字符串进行词频统计并绘制词云图
要进行字符串词频统计并绘制词云图,可以使用Python中的`wordcloud`和`jieba`库。以下是一个简单的示例代码:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 输入文本
text = "这是一段需要进行词频统计并绘制词云图的测试文本,希望能够得到好的结果。"
# 分词
words = jieba.cut(text)
# 统计词频
word_counts = Counter(words)
# 生成词云图
wc = WordCloud(background_color="white", max_words=2000, width=1024, height=768, font_path='msyh.ttc')
wc.generate_from_frequencies(word_counts)
# 显示词云图
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
```
运行以上代码,就可以得到一个简单的词云图了。你可以根据自己的需求,对代码进行修改和优化。