统计词频并可视化

最近参加一个NLP的竞赛,赛方提供了10万条数据。由于是脱敏数据,所以作NLP之前需要先作word2vec,这时就需要将标点符号和无意义的词(比如“的”)去掉,我们采用的方法就是去掉高频词,所以首先要找到高频词。
如何找到高频词呢, 这里当然可以使用dict了,但是有没有更高级一点的方法呢。

当然有了,我们可以使用collections的Counter,并且使用Pandas来替代读取数据的解析数据的部分
首先使用pandas来读取和解析数据

data_path = "E:\\ML_learning\\Daguan\\data\\train_set.csv"
train_data = pd.read_csv(data_path)

article = train_data["article"]
f = lambda x: x.split(" ")
article_list = article.apply(f)

赛方提供了4列数据,其中第二列是我们需要的数据,这里使用一个lambda和article.apply(f)来将每一句话都变成一个list

然后对每个list调用Counter的update方法获得词频数据

word_counts = Counter()
for line in article_list:
    word_counts.update(line)

最后分析统计到的数据,并将其可视化

counter_list = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)

label = list(map(lambda x: x[0], counter_list[:20]))
value = list(map(lambda y: y[1], counter_list[:20]))

plt.bar(range(len(value)), value, tick_label=label)
plt.show()

数据太多,我们只显示其前20个数据
使用bar char来画图

最后出来的图像


统计词频并可视化_第1张图片
Figure_1.png

你可能感兴趣的:(统计词频并可视化)