在训练集上针对不同类别(根据标签),去除text的停用词后提取text相关的关键词,并用词云的形式进行展示
时间: 2024-03-10 13:47:43 浏览: 58
各种停用词 stopwords,可用作词云图、情感分析、文本挖掘、文本主题提取等
好的,为了实现你的需求,我们需要进行以下步骤:
1. 读取训练集数据,并按照类别分组。
2. 对每个类别的文本数据进行停用词去除和关键词提取。
3. 将每个类别中提取出来的关键词合并成一个列表。
4. 使用 WordCloud 库生成词云。
具体实现代码如下:
```python
import pandas as pd
import numpy as np
import re
import string
from nltk.corpus import stopwords
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(stopwords.words('english'))
# 定义函数,用于去除停用词和提取关键词
def extract_keywords(text):
text = text.lower()
text = re.sub('[%s]' % re.escape(string.punctuation), '', text)
words = [word for word in text.split() if word.lower() 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).generate_from_frequencies(words)
plt.figure(figsize=(12, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.title(name)
plt.show()
```
在这个代码中,我们使用了 pandas 库读取训练集数据,并按照类别分组。然后我们使用 NLTK 库加载停用词,定义了一个函数来去除停用词和提取关键词。接着,我们遍历每个类别的文本,并将提取出来的关键词合并到一个字典中。最后,我们使用 WordCloud 库生成词云。
注意:由于训练集数据可能比较大,因此这个代码的执行速度可能会比较慢。如果需要加速,可以考虑使用 MapReduce 等技术来并行计算。
阅读全文