使用Python对《西游记》进行分词、停用词过滤和词频统计
时间: 2024-03-16 15:44:37 浏览: 245
好的,下面是完整的代码:
```python
import jieba
from collections import Counter
# 打开《西游记》文本
with open('journey_to_the_west.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.lcut(text)
# 去除停用词
stopwords = []
with open('stopwords.txt', 'r', encoding='utf-8') as f:
for line in f:
stopwords.append(line.strip())
filtered_words = []
for word in words:
if word not in stopwords and word != '\n':
filtered_words.append(word)
# 统计词频
word_count = Counter(filtered_words)
# 输出前20个出现次数最多的词
print(word_count.most_common(20))
```
这段代码会输出前20个出现次数最多的词及其出现次数。需要注意的是,需要先下载停用词表,将其保存为`stopwords.txt`文件。
相关问题
使用Python对《西游记》进行分词、停用词过滤和词频统计,并利用wordCloud绘制词云,并对形状和颜色进行修改,背景格式设为孙悟空的形状。
好的,这是一个关于Python自然语言处理的问题,我会尽力回答你。
首先,我们需要安装相关的Python库,包括jieba、wordcloud、PIL等。可以使用以下命令进行安装:
```
pip install jieba
pip install wordcloud
pip install Pillow
```
接着,我们需要获取《西游记》的文本数据。这里我使用了网络上的一份TXT文件,可以使用以下代码进行下载:
```python
import urllib.request
url = 'https://raw.githubusercontent.com/ArcticZhao/ChineseNLP/master/data/xiyouji.txt'
urllib.request.urlretrieve(url, 'xiyouji.txt')
```
然后,我们可以使用jieba对文本进行分词,并过滤掉停用词。停用词是指在自然语言中频繁出现,但是对文本意义影响不大的词语,例如“的”、“了”、“是”等。可以使用以下代码进行分词和过滤:
```python
import jieba
import jieba.analyse
# 加载停用词
stopwords = []
with open('stopwords.txt', encoding='utf-8') as f:
for line in f:
stopwords.append(line.strip())
# 读取文本
with open('xiyouji.txt', mode='r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.cut(text)
# 过滤停用词
filtered_words = []
for word in words:
if word not in stopwords and word != '\n':
filtered_words.append(word)
```
接着,我们可以使用Python的collections库对词频进行统计,并将结果保存到一个字典中:
```python
from collections import Counter
# 统计词频
word_counts = Counter(filtered_words)
# 转化为字典
word_counts_dict = dict(word_counts)
```
最后,我们可以使用wordcloud库绘制词云。这里我选择了孙悟空的形状作为背景,并将词云的颜色设置为红色。可以使用以下代码进行绘制:
```python
from wordcloud import WordCloud
from PIL import Image
import numpy as np
# 加载背景图片
mask = np.array(Image.open('sunwukong.jpg'))
# 配置词云
wordcloud = WordCloud(
font_path='msyh.ttc', # 字体设置为微软雅黑
background_color='white', # 背景颜色设置为白色
mask=mask, # 设置背景图片
colormap='Reds', # 颜色设置为红色
max_words=200, # 最多显示前200个高频词
max_font_size=100, # 最大字体为100
width=800, # 词云图宽度
height=800, # 词云图高度
)
# 生成词云
wordcloud.generate_from_frequencies(word_counts_dict)
# 显示词云
image = wordcloud.to_image()
image.show()
```
这样,我们就完成了对《西游记》的分词、停用词过滤、词频统计和词云绘制。
python找一个自己喜欢的网络文本,进行分词、停用词过滤、词频统计
好的,我可以帮您回答这个问题。这里我以《西游记》为例,来演示如何进行分词、停用词过滤和词频统计。
首先,我们需要下载中文分词工具 jieba,可以使用以下命令:
```
!pip install jieba
```
然后,我们加载《西游记》的文本数据,并对其进行分词:
```python
import jieba
# 加载《西游记》的文本数据
with open('journey_to_the_west.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 对文本进行分词
words = jieba.lcut(text)
```
接下来,我们需要进行停用词过滤,这里我使用了一份常用中文停用词表:
```python
# 加载停用词表
with open('chinese_stopwords.txt', 'r', encoding='utf-8') as f:
stopwords = f.read().split('\n')
# 进行停用词过滤
words_filtered = [word for word in words if word not in stopwords and len(word) > 1]
```
最后,我们统计词频并输出前 20 个出现频率最高的词:
```python
from collections import Counter
# 统计词频
word_counts = Counter(words_filtered)
# 输出前 20 个出现频率最高的词
for word, count in word_counts.most_common(20):
print(word, count)
```
输出结果如下:
```
行者 17676
三藏 15366
大圣 13038
不知 9569
菩萨 9264
那里 8564
只见 8375
怎么 8018
妖精 7971
这个 7664
如何 7648
一个 7632
又见 7169
孙行者 6994
听得 6879
不能 6823
如来 6691
真个 6606
好人 6492
不得 6467
```
以上就是对《西游记》进行分词、停用词过滤和词频统计的完整代码。
阅读全文