在训练集上针对不同类别(根据标签),去除text的停用词后提取text相关的关键词,并用词云的形式进行展示 text为中文
时间: 2024-03-10 14:47:46 浏览: 66
标签云支持中文
3星 · 编辑精心推荐
好的,针对中文数据,我们可以使用 jieba 库来进行分词和提取关键词。具体实现代码如下:
```python
import pandas as pd
import numpy as np
import re
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('train.csv')
df = df[['text', 'target']]
df = df.dropna()
# 分组
groups = df.groupby('target')
# 加载停用词
stop_words = set()
with open('stopwords.txt', 'r', encoding='utf-8') as f:
for line in f.readlines():
stop_words.add(line.strip())
# 定义函数,用于去除停用词和提取关键词
def extract_keywords(text):
words = [word for word in jieba.cut(text) if word not in stop_words]
return Counter(words).most_common(10)
# 提取关键词
keywords = {}
for name, group in groups:
keywords[name] = []
for text in group['text']:
keywords[name].extend(extract_keywords(text))
keywords[name] = dict(keywords[name])
# 绘制词云
for name, words in keywords.items():
wordcloud = WordCloud(width=800, height=400, font_path='msyh.ttc').generate_from_frequencies(words)
plt.figure(figsize=(12, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.title(name)
plt.show()
```
在这个代码中,我们使用了 jieba 库来进行中文分词和提取关键词。我们同样加载了一个中文停用词表,并将其读入一个 set 中。然后我们定义了一个函数来去除停用词和提取关键词。接着,我们遍历每个类别的文本,并将提取出来的关键词合并到一个字典中。最后,我们使用 WordCloud 库生成中文词云。
这里需要注意的是,我们使用了一个中文字体(微软雅黑)来绘制词云,因为默认字体可能不支持中文字符。如果你希望使用其他字体,可以将其字体文件路径传递给 WordCloud 类的 font_path 参数。
阅读全文