spark平台的中文文本分类的研究与系统实现(源码)
随着大数据时代的到来和计算机软硬件的快速发展,越来越多的电子数据出现在我们的生活中。有效组织管理海量的数据,并能够精确地从中挖掘有用的信息就显得尤为重要,所以说当今基于机器学习的文本分类技术是一个很重要的研究方向。本文首先对该领域的国内外现状进行了简要的介绍,而后阐述了相关的分类技术的过程,包括文本的预处理、特征向量的实现、特征权重的算法和分类器的实现等,利用python实现了该分类系统,采取网上公开的新闻语料,并将其分为训练集和数据集,通过准确率、召回率等一系列指标对分类算法的优劣进行评价,在Spark环境下用pycharm搭建Django框架实现简单的可视化,并将其应用到新闻分类系统中供管理员使用,并对下一步研究提出了展望。
引言
目录
图1 环境配置
2.2 Python语言简介
作为当今热门之一的通用编程语言,Python的可取之处数不胜数,作为一种解释性的语言,python运用方便简洁,能够直接在控制台下运行。Python语法结构清楚,经常被人们称之为可执行伪代码。不像C++或者java,它不需要编译,因此开发时间更短。而且Python是可以免费使用的,同时还支持不同的操作系统,兼容性能很高。在科学和数学领域很受欢迎[7]。虽然当下机器学习逐渐兴起,出现了可用的很多语言和平台,但它绝对是其中最通用最高效的一个。
与此同时,Python还拥有一个功能非常强大的库,能够很轻易地连接到其他语言制造的模块上,为我们提供了很大的便利。Python和其他很多语言的区别在于,它出现这样的情形:先利用Python编写接口或者大致的框架,然后用更加适合的其他的语言来完成剩余特殊的主体部分,我们经常玩的3d游戏中的一些图形渲染模块就是这样写出来的。如果一些项目有非常高的性能上的要求,我们可以用c语言或者c++语言来重写它,然后再封装为扩展类库[8]。
2.3 Django框架简介
Django是一种非常具有代表性之一的web开发框架,是利用python语言开发出来的一种框架,它采用模型、模版和视图的MTV模式。它的功能很强大,能够快速简便的开发一个网站,减少了很多不必要的麻烦,除此之外,在框架里面还包含有多个组件可以方便的服务整个框架, *好棒文|www.hbsrm.com +Q: ¥351916072¥
创建一个项目时,能够生成框架,只需要对一些地方进行配置即可,使用起来简洁方便。
本系统采用Django框架来实现系统,建立工程之后,键入命令生成一个news模块,会生成一系列的文件供我们所用,其中settings.py文件包含了该工程相关的配置,需要将新建的工程添加到里面,urls.py通过对url的规则的设置,找到对应会触发的views中的方法,再进一步链接到加载的html页面;views.py则包含了业务处理的逻辑,即视图的模版网页;templates文件夹包含的是用于显示的模版网页,是一些html文件;manage.py则是整个模块的执行命令。本系统的urls.py文件中共设置了六个url,分别对应管理员界面、添加新闻界面、选择算法界面以及输出算法结果界面等,与之对应的views则显示了触发相应函数时,会显示的界面。
3 文本特征向量的实现
3.1 文本表示
我们都知道,文本文件是用无法被电脑直接识别的自然语言描述的,因此不能直接对其进行处理,所以自然语言需要被转化成一种能够被电脑所识别的表现形式。目前为止,向量空间模型是据我们所知的所有模型中最常用的一种表示方法[9]。在VSM模型中,我们通常把特征项出现的次数作为这篇文章的权重,用来构成词向量。VSM模型较简单,容易实现,分类精度也比较高,因此也成为了当前文本分类研究中主流的文本表示模型。
系统中的文本数据采用bunch数据结构来表示。在bunch对象里建立四个list成员,分别存放每个文本的类别、文件名、文本标签和文本内容,实现了文本的变量表示,使得计算机能够识别并对其操作。接下来进行预处理,为文本去停用词和实现分词。
文本预处理
在对文本进行分类之前,通常需要对文本进行预处理,对于中文分类来说,分词和去停用词是我们在这一部分要做的主要事情。我们首先将os模块导入到python文件中,再利用os.listdir功能函数来获取我们事先准备好的语料集数据,先分别循环获得训练集和测试集语料的标签,再获取各个标签下的文本文件。本系统使用的数据集一共有十个标签,分别是:"car”,"computer”,"edu”,"estate”,"finance”,"fun”,"health”,"sports”,"talent”和"tech”,共2000个文件。分词后能够得到相对纯净的文本,然后需要将文本转化为系统可以接受的结构,再通过算法对文本进行分类,算法的优劣通过得到的一些指标的大小来比较。
3.2.1 停用词过滤
自然语言中有很多意义模糊的词语、语气助词以及标点符号,虽然我们经常使用它们,但是并没有实际意义,为了节省空间,同时也为了提高效率,我们通常过滤掉这些词,以防对分类产生影响。本文以哈工大的“停止词表”为词条基础。
3.2.2 中文分词
分词这一功能是专门对于中文文本而言的,因为英文文本通过原本的空格就可以区分开单词,所以英文中并不存在分词这一过程。分词这一过程很大程度地影响着文本分类的最终结果,因为后面的一系列操作都是基于分词处理后的数据,而非原始导入的文本。是以选择一个适合的分词方式及其重要。在本系统中,我们选择Python体系中的第三方库jieba来实现中文分词。该函数可以对我们导入的文本进行分词,有两个输入参数,第一个是将要进行分词的对象,就是我们需要处理的原始文本;第二个则是采用的分词的模式。该函数最后返回的是一个能够进行迭代的发生器,精确模式、全模式和搜索引擎模式是分词可选的三种模式[10]。默认的模式是精确模式,也是我们所采取的模式。
文本预处理是分词前一个必要的步骤,也是区别与英文文本分类的一个地方,过滤掉了一些没有意义、会对分类造成影响的词或者符号,分词则将原本的句子分为一个一个的词语,用来构造本文本的特征。图1和图2分别是原始语料和分词后的语料,可以看到分词后原本的由句子组成的文章变成了由各个词语组成的文本。
引言
目录
图1 环境配置
2.2 Python语言简介
作为当今热门之一的通用编程语言,Python的可取之处数不胜数,作为一种解释性的语言,python运用方便简洁,能够直接在控制台下运行。Python语法结构清楚,经常被人们称之为可执行伪代码。不像C++或者java,它不需要编译,因此开发时间更短。而且Python是可以免费使用的,同时还支持不同的操作系统,兼容性能很高。在科学和数学领域很受欢迎[7]。虽然当下机器学习逐渐兴起,出现了可用的很多语言和平台,但它绝对是其中最通用最高效的一个。
与此同时,Python还拥有一个功能非常强大的库,能够很轻易地连接到其他语言制造的模块上,为我们提供了很大的便利。Python和其他很多语言的区别在于,它出现这样的情形:先利用Python编写接口或者大致的框架,然后用更加适合的其他的语言来完成剩余特殊的主体部分,我们经常玩的3d游戏中的一些图形渲染模块就是这样写出来的。如果一些项目有非常高的性能上的要求,我们可以用c语言或者c++语言来重写它,然后再封装为扩展类库[8]。
2.3 Django框架简介
Django是一种非常具有代表性之一的web开发框架,是利用python语言开发出来的一种框架,它采用模型、模版和视图的MTV模式。它的功能很强大,能够快速简便的开发一个网站,减少了很多不必要的麻烦,除此之外,在框架里面还包含有多个组件可以方便的服务整个框架, *好棒文|www.hbsrm.com +Q: ¥351916072¥
创建一个项目时,能够生成框架,只需要对一些地方进行配置即可,使用起来简洁方便。
本系统采用Django框架来实现系统,建立工程之后,键入命令生成一个news模块,会生成一系列的文件供我们所用,其中settings.py文件包含了该工程相关的配置,需要将新建的工程添加到里面,urls.py通过对url的规则的设置,找到对应会触发的views中的方法,再进一步链接到加载的html页面;views.py则包含了业务处理的逻辑,即视图的模版网页;templates文件夹包含的是用于显示的模版网页,是一些html文件;manage.py则是整个模块的执行命令。本系统的urls.py文件中共设置了六个url,分别对应管理员界面、添加新闻界面、选择算法界面以及输出算法结果界面等,与之对应的views则显示了触发相应函数时,会显示的界面。
3 文本特征向量的实现
3.1 文本表示
我们都知道,文本文件是用无法被电脑直接识别的自然语言描述的,因此不能直接对其进行处理,所以自然语言需要被转化成一种能够被电脑所识别的表现形式。目前为止,向量空间模型是据我们所知的所有模型中最常用的一种表示方法[9]。在VSM模型中,我们通常把特征项出现的次数作为这篇文章的权重,用来构成词向量。VSM模型较简单,容易实现,分类精度也比较高,因此也成为了当前文本分类研究中主流的文本表示模型。
系统中的文本数据采用bunch数据结构来表示。在bunch对象里建立四个list成员,分别存放每个文本的类别、文件名、文本标签和文本内容,实现了文本的变量表示,使得计算机能够识别并对其操作。接下来进行预处理,为文本去停用词和实现分词。
文本预处理
在对文本进行分类之前,通常需要对文本进行预处理,对于中文分类来说,分词和去停用词是我们在这一部分要做的主要事情。我们首先将os模块导入到python文件中,再利用os.listdir功能函数来获取我们事先准备好的语料集数据,先分别循环获得训练集和测试集语料的标签,再获取各个标签下的文本文件。本系统使用的数据集一共有十个标签,分别是:"car”,"computer”,"edu”,"estate”,"finance”,"fun”,"health”,"sports”,"talent”和"tech”,共2000个文件。分词后能够得到相对纯净的文本,然后需要将文本转化为系统可以接受的结构,再通过算法对文本进行分类,算法的优劣通过得到的一些指标的大小来比较。
3.2.1 停用词过滤
自然语言中有很多意义模糊的词语、语气助词以及标点符号,虽然我们经常使用它们,但是并没有实际意义,为了节省空间,同时也为了提高效率,我们通常过滤掉这些词,以防对分类产生影响。本文以哈工大的“停止词表”为词条基础。
3.2.2 中文分词
分词这一功能是专门对于中文文本而言的,因为英文文本通过原本的空格就可以区分开单词,所以英文中并不存在分词这一过程。分词这一过程很大程度地影响着文本分类的最终结果,因为后面的一系列操作都是基于分词处理后的数据,而非原始导入的文本。是以选择一个适合的分词方式及其重要。在本系统中,我们选择Python体系中的第三方库jieba来实现中文分词。该函数可以对我们导入的文本进行分词,有两个输入参数,第一个是将要进行分词的对象,就是我们需要处理的原始文本;第二个则是采用的分词的模式。该函数最后返回的是一个能够进行迭代的发生器,精确模式、全模式和搜索引擎模式是分词可选的三种模式[10]。默认的模式是精确模式,也是我们所采取的模式。
文本预处理是分词前一个必要的步骤,也是区别与英文文本分类的一个地方,过滤掉了一些没有意义、会对分类造成影响的词或者符号,分词则将原本的句子分为一个一个的词语,用来构造本文本的特征。图1和图2分别是原始语料和分词后的语料,可以看到分词后原本的由句子组成的文章变成了由各个词语组成的文本。
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/1681.html