第2章对可能会用到的技术进行了概括性的描述,首先回顾了爬虫的基本理论,描述了网页的构成;其次对于情感分析和文本分词进行技术介绍。
第5章首先对数据的词向量方法做出介绍,再将数据集划分成训练集和测试集。其次,分别在CountVectorizer和TfidfVectorizer两种不同的词向量方式下,基于SVM构建出SVC模型进行模型训练,最后进行性能分析。
第6章分为两个部分,首先是总结篇,这个部分主要是总结归纳这个项目的工作,最后是展望,针对工作中的不足,指出可以改进的地方,以及下一步可以开展的研究方向。
爬虫,又名网络爬虫,就是能够自动访问互联网并将网络内容下载下来的程序,它也是搜索引擎的根基,最具代表性的就是两大搜索引擎Google和Baidu,都是将海量数据存储下载到云端,通过强大的网络爬虫提供给用户高质量的搜索服务。
为了进一步了解爬虫基本原理,首先先介绍一下网页的基本结构。基本的网页是由HTML、CSS、JavaScript三部分构成的。HTML也叫超文本标记语言。通过HTML标签描述网页的文字、图片、声音等内容,用相应的HTML标签标记网页需要定义哪些内容。HTML语言发展至今,已然经历了6个版本,目前主流的版本是HTML5,只是由于人们的习惯,仍然称为HTML。CSS通常被称为CSS风格或样式表,主要是为了在HTML页面中设置文字内容(字体,尺寸,对齐方式等),图片的形状(宽度和高度,边框风格,边距等),以及提供丰富功能的外观显示风格,例如版面的布局。JavaScript是Web页面中的脚本语言,静态页面可以通过JavaScript转化为动态页面,支持用户交互,并对相应的事件做出反应3[3]。简单来说HTML就是人的骨架,CSS就是人穿在身上的衣服,而JavaScript就是人的行为。
爬虫可以概括为四个环节:分析网页结构,获取网页源码,提取数据,数据持久化。爬虫第一步是分析网页的结构,如果是静态网页,就直接将网页的源代码获取下来。Python中为用户提供了许多的库,如urllib、requests库等,利用此等功能的库,可向网站的服务器发送请求,得到相应的HTML代码。如果是动态网页,这个时候的HTML网页只是提供内容展示的一个框架,相应的数据是由JavaScript脚本加载出来的。这个时候我们可以通过抓包的方式,将动态加载的后台数据的网址找到,加以规律的查找并封装相应的参数请求页面将数据提取。当然Python也提供了Selenium库,这是一个基于浏览器运行的库,对爬取JavaScript动态渲染的页面是非常有效的。爬虫第二步是获取网页源码,通过上述的网页分析之后我们可以获取到相应的网页源码。接下来进行第三步,提取数据。Python提供了re、Xpath、BeautifulSoup等数据解析库。提取数据的方法有多种,可以根据网页的结构挑选适合该网站的提取方式。爬虫的最后一步是数据持久化。持久化的形式多种多样,我们可以根据数据最终的使用方式存储成想应的格式,如json、txt、csv、xlsx等,也可以存储到数据库中,如Mysql、MongoDb、Redis等。
添加图片注释,不超过140字(可选)
图2-1基于情感词典的情感分析流程
图2-2基于机器学习的情感分析流程
中文分词是指按照一定规范将连续的字序重新组合成词语序列的过程,分词是将一个汉字序列分割成一个单独的词语。其本质就是划分词的边界。由于中文不像英文一样存在空格边界,且汉语博大精深,不同的词组在一起便有不同的含义。当中文发生歧义就会产生不同的语义,也就会出现不同的切割方式5[5]。在一定程度上就会对分词造成影响。所以在进行机器学习之前,首先要最大限度的完成分词操作,确保词性标注的准确性,才能得到好的模型。
该章节对爬取网页数据和情感分析可能会用到的技术进行了概括性介绍,首先是对爬虫技术的详细介绍,其次是对情感分词、中文分词和词向量化的介绍,以备后续章节使用。
本章主要介绍了软硬件环境、数据采集及数据清洗的方法。首先是使用Python对网页数据进行爬取,再通过Pandas库对数据进行清洗。
图3-1数据采集流程图
图3-2网页结构分析
图3-3网页请求分析
图3-4网页请求构造
图3-5数据采集
图3-6控制台输出
图3-7采集结果
图3-8数据存放格式
图3-10请求头参数规律1
图3-11请求头参数规律2
图3-12请求页逻辑构建
图3-13采集页面逻辑构造
图3-14控制台结果
图3-15采集结果
图3-16部分数据展示
图4-1Flask工作流程图
图4-3正负样本条数
最后使用WordCloud绘制词云提取影评中的关键词。如图4-7所示,观众根据画面认为这是“向英雄致敬”、“中国加油”、大大的“好看”等“非常感人的历史战争片”,同时也充分为其票房提供了强有力的保障。
图4-7词云图
该章节对Flask框架和Echarts组件做出详细介绍,并在Flask框架上搭建一个简易网站供可视化组件存放,由于Flask框架使用方便、简单,此处只对图表做出呈现,不详细描述网站的搭建过程。
图5-1数据预处理图1
图5-2数据预处理图2
图5-3数据预处理图3
图5-4数据预处理图4
图5-5定义数据随机抽取方法
图5-6划分数据集
图5-7文本向量化1
图5-8jieba中文分词
图5-9文本向量化2
图5-10划分数据集2
图5-10模型评分1
图5-11ROC曲线1
图5-12混淆矩阵1
图5-13模型评分2
图5-14ROC曲线2
图5-15混淆矩阵2
图5-16差评数据预测
图5-17好评数据预测
在此之前,我们有必要对SVM模型进行一番了解。支持向量机(SVM)模型是一个二分类模型。在文本分类、图像分类、生物序列分析和生物数据挖掘等领域都有广泛的应用,是被视为文本分类中效果较为优秀的一种算法9[9]。
两种词向量的数据在SVC模型的训练后,预测结果都在89以上,如图5-10、图5-13所示。TfidfVectorizer更为精准,CountVectorizer稍微差了一些,但两者都达到了预期目标。单条数据的预测值也符合预期,效果如图5-16、图5-17所示。