读取 comment.txt 内的书评文本内容,进行分词操作,在去除所有的标点符号,然后去除无关内容的字和词,最后在做词云图
时间: 2024-03-03 08:52:48 浏览: 66
好的,你想让我帮你读取 comment.txt 文件中的书评文本内容,并进行分词操作。在分词之后,需要去除所有的标点符号,并去除无关内容的字和词,最终生成词云图,对吗?
如果是这样,我们可以按照以下步骤进行:
首先,我们读取 comment.txt 文件的文本内容,代码如下:
```python
with open('comment.txt', 'r', encoding='utf-8') as f:
text = f.read()
```
然后,我们使用 jieba 库对文本进行分词。jieba 库提供了两种分词模式:精确模式和全模式。我们这里选择精确模式。
```python
import jieba
words = jieba.cut(text)
```
接着,我们需要去除所有的标点符号。可以使用 Python 的 string 模块中的 punctuation 常量来获取所有的标点符号。
```python
import string
punctuations = string.punctuation + '。,“”‘’!?\n'
words = [word for word in words if word not in punctuations]
```
然后,我们需要去除无关内容的字和词。可以使用一个列表来存储无关内容的字和词。在去除时,我们只需要判断分词后的字和词是否在无关内容列表中即可。
```python
stopwords = ['的', '了', '是', '我', '你', '他', '她', '它', '我们', '你们', '他们', '她们', '它们', '这', '那', '就', '也', '和', '与', '在', '不', '要', '还', '会', '有', '来', '去', '从', '到', '很', '非常', '最', '更', '但', '这样', '那样', '一些', '一点', '一种', '这种', '那种']
words = [word for word in words if word not in stopwords]
```
最后,我们使用 wordcloud 库来生成词云图。
```python
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wc = WordCloud(background_color="white", width=1000, height=800, max_words=200, font_path='simhei.ttf')
wc.generate(' '.join(words))
plt.figure(figsize=(12, 10))
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
```
请注意,这里需要指定字体文件的路径,我这里使用的是 simhei.ttf,你需要根据自己的系统及字体文件进行相应的修改。
完整代码如下:
```python
import jieba
import string
from wordcloud import WordCloud
import matplotlib.pyplot as plt
with open('comment.txt', 'r', encoding='utf-8') as f:
text = f.read()
words = jieba.cut(text)
punctuations = string.punctuation + '。,“”‘’!?\n'
words = [word for word in words if word not in punctuations]
stopwords = ['的', '了', '是', '我', '你', '他', '她', '它', '我们', '你们', '他们', '她们', '它们', '这', '那', '就', '也', '和', '与', '在', '不', '要', '还', '会', '有', '来', '去', '从', '到', '很', '非常', '最', '更', '但', '这样', '那样', '一些', '一点', '一种', '这种', '那种']
words = [word for word in words if word not in stopwords]
wc = WordCloud(background_color="white", width=1000, height=800, max_words=200, font_path='simhei.ttf')
wc.generate(' '.join(words))
plt.figure(figsize=(12, 10))
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
```
执行完毕后,就可以看到生成的词云图了。
阅读全文