文本分类是NLP领域非常常见的应用场景,在现实生活中有着非常多的应用,例如舆情监测、新闻分类等等。在文本分类中,常见的分类算法有SVM、KNN、决策树、神经网络等等。本文简单介绍了中文文本分类的应用实践。
现有的文本分类方法主要分为两大类,分别是基于传统机器学习的方法和基于深度学习的方法。基于传统机器学习的文本分类方法主要是是对文本进行预处理、特征提取,然后将处理后的文本向量化,最后通过常见的机器学习分类算法来对训练数据集进行建模,传统的文本分类方法中,对文本的特征提取质量对文本分类的精度有很大的影响。基于深度学习的方法则是通过例如CNN、LSTM等深度学习模型来对数据进行训练,无需人工的对数据进行特征抽取,对文本分类精度影响更多的是数据量以及训练的迭代次数。本文主要介绍一下传统机器学习算法在中文文本分类中的应用。
新闻数据获取
本文中的数据集来源于网易新闻,数据通过爬虫获取,共包括体育、健康、军事娱乐等类别在内的9大类,每类2000篇,总计18000篇新闻数据。
这里简单介绍一下爬虫的方法,以网易科技类新闻为例,我们要获取科技新闻数据的第一步就是要知道新闻的url是什么,那么我们如何去获取每一篇新闻的url呢?首先点开网易新闻的科技类首页,在进入科技新闻首页之后,我们会发现位于网页中间有一块下拉刷新的新闻展示位:
可以猜测在我们执行下拉操作的时候,浏览器会向服务器发送一次请求数据的操作,在获取到数据之后展示在页面上。如果我们可以模拟浏览器向服务器发送请求数据的操作,就能获取到新闻数据的链接,抱着这样的想法,我们按F12查看浏览器获取到的数据,我们需要寻找的是一条包含刷新新闻数据的请求:
然后我们如愿的找到了这么一条请求,返回的数据是一个json类型的list,里面包含了需要刷新的新闻的title、url、时间等信息,这条请求的url是http://tech.163.com/special/00097UHL/tech_datalist_02.js?callback=data_callback,通过观察这条url我们可以发现一些规律,tech表示这是科技新闻的请求操作,02表示这是请求的第二页数据,抱着这样的猜想我们继续对页面进行下拉操作,可以获得第三页的请求数据:
爬取新闻文本的最后一步就是根据新闻的url地址将新闻的文本内容内容提取出来保存文件,这里通过分析网页的结构:
可以发现新闻的文本内容装在post_text节点中,标题和新闻文本均post_text节点的p子节点中,这里我们可以通过BeautifulSoup来解析html文档数,并轻易的获取新闻文本,解析代码