统计词频并可视化

最近参加一个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来画图

最后出来的图像


Figure_1.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,161评论 19 139
  • 在人际关系上,你总会被外出来,这是你不好吗,你应该在这个事情上多学习一点了。 既然她们两个已经想好了她俩一起住,那...
    可可洛阅读 789评论 0 0
  • 今天闲来无事,又看了一集《我的团长我的团》。 每次看这个电视剧,总会忍不住热泪盈眶,在第一集里,面对着日军的飞机,...
    笨企鹅1990阅读 2,563评论 0 0
  • 心跳检测在很多分布式应用中都存在 mongodb redis ... 服务器端代码 1,MyServer.java...
    持续进步者阅读 1,796评论 0 0

友情链接更多精彩内容