First of all
首先,给大家介绍一下准备的数据。收集自调查问卷问题
(入学以来学业上最有价值的经历是什么?)
回答有6000多条,各个不同背景,不同经历的同学回答了这个问题,我们很希望通过分析这一数据来看看大家的异同,当然,由于是原始数据,很多回答不规范、无效回答等情况都会存在,这些都是作为这一数据的噪音 意味该数据首先需要我们清洗。
1. 关于需求
- 大量的用户留言需要处理,这里使用的大约有4000多条数据
- 需要离线分析,得到呼声最高的回答。
- 生成美观的词云,用以展示
- 尽量的去除数据的噪音
以上是我们的需求,也是我们即将写的脚本需要实现的功能。
接下来说说这些需求的难点。
2. 需求难点分析
-
分词 :一条回答中有很多的语气助词、副词等对于分析无关紧要的词。
比如:“参加大创项目,进入实验室学习,了解了真实实验室学习情况。”
里面有用信息只有 1. 大创项目 2. 实验室学习
-
无用信息 毕竟是没有激励的调查问卷,所以很多人会回答“无”等留言,需要我们处理
-
随便使用标点符号、空格,这些在我们进行分词统计时都属于无用信息。
请大家可以自己想想如何处理这些难点,或者还有什么难点需要处理,毕竟这6000条数据可以挖掘的信息不止这些.
3. 使用的python库介绍
- jieba (结巴)用于中文分词,具体可以取github上看看它的介绍,目前来看是中文分词中最好的开源项目,很多自然语言处理模型都会用到它,是我们这个小项目的基础。
- csv 即逗号分隔值,可以看看这位老哥的介绍,具体就是用来读写csv文件的,指导就行
- matplotlib 很简单,就是用于画图的,本项目中用于显示生成的词云图片,具体可以看看这个介绍,python可视化中很常用的一个库。
- wordcloud python用于生成词云(wordcloud)的第三方库,在可视化中应用广泛,目前没有很好的中文解释,GitHub地址可以自己看看,功能很强大,这里主要使用了他的词频统计功能与词云生成功能。
- pandas 本项目主要用它的DataFrame写入csv中方便,同时可以有效避免溢出,DtaFrame具体介绍。
- PIL 非常高效的图片处理库,本项目主要使用它提取自定义背景图片的模板(mask)使词云配图美观。
- re 正则,本项目主要用于数据清理与提取,不仅仅局限于python中应用,正则表达式的很多语法还是有必要去了解了解,链接。
上面提到的python库不需要全部精通,大部分了解即可,但是很重要的是,如果要进一步的深入使用还是需要去它对应的github上看看说明以及去读一读源码注释,帮助很大。
4. 代码部分
关于代码的几点说明:
- 代码部分的所有代码以及对应的数据我都会打包放在文末,大家可以自行下载学习。
- 注意:学习代码的时候一定要注意修改路径部分对应的路径。
- 具体的代码解释在代码的注释里面,但是最好的代码学习方法还是自己给别人的代码写注释,也就是读别人的代码。
- 遵循代码的优美与简介,我将代码分为三个部分,大家可以看流程图
4.1 导入库
import csv
import collections#词频统计库
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import pandas as pd
import wordcloud
from PIL import Image
import jieba
import re
4.2 清洗器(cleaner)
主要用于循环读出存储在csv表格中的留言,逐一清洗后再存入txt文档,方面分词阶段的jieba分词。
def cleaner(csvFile,txt_url):
txtFile =