摘要:随着互联网的普及和发展,人们获取信息的方式发生了翻天覆地的变化,已经从过去的线下获取消息转为线上获取消息。设计一个基于大数据的消息自动分类系统,旨在利用大数据技术和机器学习算法,实现对各种消息的准确分类,利用大数据计算框架,实现对海量消息的快速处理和分析,实现对消息的自动分类,提高分类的准确性和效率。本文设计了基于大数据的的消息自动分类系统,通过大数据技术将原始数据存储、计算,并将分析的结果以消息分类列表形式展示。
本论文的主要研究工作及取得的成果如下:
使用Flask等软件开发技术,设计并成功开发出了一套基于大数据的消息自动分类系统的软件系统,系统首先需要收集大量的消息数据,可能包括电子邮件、社交媒体内容、新闻文章等。这些数据需要经过预处理步骤,例如去除停用词、词干提取、词向量化等,以便机器学习算法能够更好地理解文本内容;
使用基于Python语言的网络爬虫,爬取了消息网站上的消息。对爬取到的原始数据进行数据清洗后存储到本地机器上,然后使用数据挖掘等算法及词云运模型对数据计算,最后将结果保存至MySQL中存储分析。
关键词:Flask;大数据; 词云分析;消息分类
Design and implementation of automatic message classification system based on big data
Abstract: With the popularization and development of the Internet, the way people get information has undergone earth-shaking changes, and has shifted from the past offline to online access to information. A message automatic classification system based on big data is designed, aiming to realize accurate classification of various messages by using big data technology and machine learning algorithm, and realize rapid processing and analysis of massive messages by using big data computing framework, and realize automatic classification of messages, so as to improve the accuracy and efficiency of classification. In this paper, an automatic message classification system based on big data is designed. The original data is stored and calculated by big data technology, and the analysis results are displayed in the form of a visual list of topics.
The main research work and achievements of this paper are as follows:
1. Designed and successfully developed a software system of automatic message classification system based on big data by using Flask and other software development technologies. The system first needs to collect a large amount of message data, including emails, social media content, news articles, etc. These data need to go through pre-processing steps, such as removal of stops, stem extraction, word vectography, etc., so that machine learning algorithms can better understand the text content;
2. Using a web crawler based on the Python language, I crawled messages on hot topic websites. The original crawled data is cleaned and stored on the local machine, then data mining algorithms and word cloud model are used to calculate the data, and finally the results are saved to MySQL for storage and analysis.
Keywords: Flask; Big data; Word cloud analysis; Message classification
1 绪论
1.1研究背景与现状
随着互联网的快速发展和普及,人们在日常生活和工作中产生的文本信息呈现爆炸式增长。处理这些海量信息变得越来越困难,因此需要自动化系统帮助人们更有效地管理和利用信息。
人们对信息获取的个性化需求不断增加,希望能够通过定制化的信息服务获取到符合自身兴趣和偏好的内容。消息自动分类系统可以根据用户的需求,将信息进行分类和推荐,提供个性化的信息服务。
对于政府、企业和机构来说,了解公众舆论和监控潜在风险是非常重要的。消息自动分类系统可以帮助他们实时监测舆情动向和预警潜在风险事件,为决策提供数据支持。
搜索引擎和推荐系统在信息检索领域发挥着重要作用,而消息自动分类系统可以作为这些系统的重要组成部分,帮助提高搜索结果的精准度和推荐的准确性。
随着文本挖掘和机器学习技术的不断进步,特别是深度学习等技术的应用,使得消息自动分类系统能够更准确地理解文本内容,从而实现更精细的分类和推荐。
综上所述,消息自动分类系统的研究背景主要受到信息爆炸、个性化需求、舆情监控和风险预警需求、搜索引擎和推荐系统发展以及文本挖掘和机器学习技术进步等多方面因素的影响。在这样的背景下,消息自动分类系统成为了一项具有重要研究意义和实际应用价值的技术领域。
消息自动分类系统在国内外都受到了广泛关注和研究,以下是国内外在该领域的一些研究现状:
国际研究现状:
文本分类算法:国外研究者在文本分类算法方面取得了许多进展,如基于深度学习的卷积神经网络(CNN)和循环神经网络(RNN)等模型被广泛用于文本分类任务。
多语言文本分类:随着全球化的发展,多语言文本分类成为研究消息之一。国外学者致力于解决跨语言、跨文化文本分类的挑战,提出了一些跨语言文本分类的方法。
领域自适应:针对不同领域文本分类的需求,国际上研究者也在领域自适应文本分类方面做了很多工作,以提高分类模型在特定领域的性能。
国内研究现状:
基于深度学习的研究:国内研究者也在消息自动分类系统中广泛应用深度学习技术,如使用Transformer、BERT等预训练语言模型进行文本分类。
在线舆情监控:在政府、企业等领域,国内研究者致力于开发在线舆情监控系统,通过消息自动分类技术帮助用户实时了解舆情动向。
应用场景拓展:国内研究者也将消息自动分类技术拓展到更多的应用场景,如智能客服、信息检索、推荐系统等领域,为用户提供更加个性化的服务。
结合领域知识:国内研究者还致力于将领域知识和专家经验结合到消息自动分类系统中,以提高分类的准确性和效率。
总体来说,国内外在消息自动分类系统方面都在不断探索和创新,采用各种先进的技术手段和方法,以提高文本分类的准确性、效率和适用范围,为用户提供更好的信息管理和服务体验。
1.2论文主要研究工作
根据该课题,该系统主要包括三个模块:网络爬虫模块、数据可视化模块和管理模块。以下是该系统的功能需求分析:
网络爬虫模块
(1)采集消息:能够根据预先设定的爬取规则,从互联网上自动采集运城职业技术大学大学生关注的消息,并将其存储到数据库中。
数据可视化模块
(1)消息分析可视化:能够将爬取到的消息按时间进行统计,生成可视化的热度趋势图,以便用户了解消息的热度变化趋势。
(2)消息分类可:能够对爬取到的消息进行分类,并生成可视化的消息分类图,以便用户了解消息的分类情况。
管理模块
(1)用户管理:能够对用户进行注册、登录、修改密码等基本操作,保障系统的安全性和稳定性。
(2)消息管理:能够对爬取到的消息进行管理,包括添加、删除、编辑等操作,以便用户管理系统中的数据。
综上所述,该系统的功能需求主要包括消息的采集和筛选、热度趋势图和消息分类图的可视化展示,以及用户、消息和系统配置的管理。通过这些功能,该系统可以满足用户对消息的采集、分析和展示的需求。
本文开发一套Web系统将市面上的消息分类通过技术进行存储、计算与智能化分析,将会给管理人员提供巨大的好处。在提供消息分类列表展示以及筛选功能的同时,还为用户提供个人信息管理,注册修改等功能,这样做便使得该系统成为功能相对完整,业务逻辑清晰,可大幅度提高阅读的和消息的效率。
2 技术总述
2.1 基于Scrapy的网络爬虫技术
Scrapy是目前较为成熟的爬虫技术框架,一般采用Python语言开发程序,Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
在本设计中,由于需要使用到消息网站的原始数据,因此需要开发相应的网络爬虫程序完成对消息原始数据的采集,图2-1为爬取消息网站('http://www.cqvisit.com/msg)的消息数据的原理流程图。
图2-1 消息网站爬虫原理流程图
2.2 词云技术
词云是一个简单但功能强大的消息分类表示对象,用于文本处理,它以更大,更粗的字母和不同的颜色显示最常用的词,单词的大小越小,重要性就越小。
1.社交媒体上的热门标签(Instagram,Twitter):全世界的社交媒体都在寻找最新的趋势,因此,我们可以获取人们在其帖子中使用最多的标签来探索最新的趋势。
2.媒体中的热门消息:分析新闻报道,我们可以在头条新闻中找到关键字,并提取出前n个需求较高的主题,来获得所需的结果,即前n个热门媒体主题。
3.电子商务中的搜索词:在电子商务购物网站中,网站所有者可以制作被搜索次数最多的购物商品的词云,这样,他就可以了解在特定时期内哪些商品需求量最大。
首先,我们需要在jupyter notebook中安装所有库。
在python中,我们将安装一个内置库wordcloud。在Anaconda命令提示符下,输入以下代码:
pip install wordcloud
如果你的anaconda环境支持conda,请输入:
conda install wordcloud
这可以直接在notebook中实现,只需在代码的开头添加“!”即可。
像这样:
!pip install wordcloud
但现在我想生成拥有任何主题的维基百科文本的词云,因此,我将需要一个Wikipedia库来访问Wikipedia API,可以通过在anaconda命令提示符下安装Wikipedia来完成,如下所示:
pip install wikipedia
现在我们还需要其他一些库,它们是numpy,matplotlib和pandas。
截至目前,我们需要的库就安装好了。
通过查看上图,我们可以看到机器学习是最常用的词,还有一些其他经常使用的词是模型,任务,训练和数据,因此,我们可以得出结论,机器学习是训练数据模型的任务。
我们还可以在这里通过背景颜色方法更改背景颜色,并通过colormap方法更改字体颜色,还可以在背景颜色中添加颜色的哈希码,但是mapcolor带有内置的特定颜色。
2.3 Flask框架
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”并不是意味着把整个Web应用放入到一个Python文件,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。Flask自身不会提供表单验证功能,在项目实施过程中可以自由配置,从而为应用程序开发提供数据库抽象层基础组件,支持进行表单数据合法性验证、文件上传处理、用户身份认证和数据库集成等功能。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。Werkzeug库十分强大,功能比较完善,支持URL路由请求集成,一次可以响应多个用户的访问请求;支持Cookie和会话管理,通过身份缓存数据建立长久连接关系,并提高用户访问速度;支持交互式Pythonscript调试,提高用户体验;可以处理HTTP基本事务,快速响应客户端推送过来的访问请求。
2.3 分本分类算法
文本分类用电脑对文本集(或其他实体或物件)按照一定的分类体系或标准进行自动分类标记。 它根据一个已经被标注的训练文档集合, 找到文档特征和文档类别之间的关系模型, 然后利用这种学习得到的关系模型对 新的文档进行类别判断 。文本分类从基于知识的方法逐渐转变为基于统计 和机器学习的方法。
SVM(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。
支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或称泛化能力)。
SVM 方法有很坚实的理论基础,SVM 训练的本质是解决一个二次规划问题(Quadruple Programming,指目标函数为二次函数,约束条件为线性约束的最优化问题),得到的是全局最优解,这使它有着其他统计学习技术难以比拟的优越性。 SVM分类器的文本分类效果很好,是最好的分类器之一。同时使用核函数将 原始的样本空间向高维空间进行变换,能够解决原始样本线性不可分的问题。其缺点是核函数的选择缺乏指导,难以针对具体问题选择最佳的核函数;另外SVM 训练速度极大地受到训练集规模的影响,计算开销比较大,针对SVM 的训练速度问题,研究者提出了很多改进方法,包括Chunking 方法、Osuna算法、SMO 算法和交互SVM 等。SVM分类器的优点在于通用性较好,且分类精度高、分类速度快、分类速度与训练样本个数无关,在查准和查全率方面都略优于kNN及朴素贝叶斯方法。
2.4 本章小结
本章主要分析了系统开发过程中使用到的技术点和框架,通过研究这些技术的原理后,在本设计中加以应用,包括消息分类采集的爬虫技术,数据持久化存储技术,以及基于Flask框架的系统后台技术,通过预研上述技术点并加以应用从而开发出基于大数据的消息自动分类系统。
3 消息分类系统实现
3.1系统功能
通过前面的功能分析可以将基于Flask的消息自动分类系统的研究与实现的功能主要包括用户登录、消息分类管理、数据分析等内容。后台管理是针对已登录的用户看到满意的消息数据分析而设计的。
3.2可行性研究
通过对系统研究目标及内容的分析审察后,提出可行性方案,并对其进行论述。主要从技术可行性出发,再进一步分析经济可行性和操作可行性等方面。
开发系统所涉及到的资料,一般是在图书馆查阅,或是在网上进行查找收集。所需要的一些应用软件也都是在网上可以免费下载的,因此,开发成本是几乎为零。但是开发出来的系统,还是具有高效率,低成本,较高质量的。所以,从经济可行性的角度,该系统符合标准。
技术可行性是考虑在现有的技术条件下,能否顺利完成开发任务。以及判断现有的软硬件配置是否能满足开发的需求。而本系统采用的是本地机器开发框架,并非十分困难,所以在技术上是绝对可行的。此外,计算机硬件配置是完全符合发展的需要。
当前计算机信息化的知识已经十分普及了,现在的操作人员也都是对系统环境有很强的适应性,各类操作人员大都是有过培训补充的,因此完全不影响组织结构,所以在运行上也是可行的。
从时间上看,在大四的最后一个学期,在实习工作与完成毕设两件大事相交叉的时间里,结合之前学习的相关知识,并开发系统,时间上是有点紧,但是也不是完全没可能实现,通过这段时间的努力功能基本实现。
3.3 系统实现流程
(1)明确目的
在设计消息分类管理平台初期需要了解如何获取消息分类原始数据是非常基础也是关键的一步。要了解Flask的消息分类系统期望达到什么样的运营效果,从而在标签体系构建时对数据深度、广度及时效性方面作出规划,确保底层设计科学合理。
(2)数据采集
只有建立在客观真实的数据基础上,计算分析的结果才有效。在采集数据时,需要考虑多种维度,比如不同类型消息数据、不同来源消息等等,还可以通过行业调研、用户访谈、用户信息填写及问卷、平台前台后台数据收集等方式获得。
(3)数据清洗
就对于各大消息网站或者APP平台采集到的数据而言,可能存在非目标数据、无效数据及虛假数据,因而需要过滤原始数据,去除一些无用的信息以及脏数据,便于后续的处理。
(4)特征工程
特征工程能够将原始数据转化为特征,是--些转化与结构化的工作。在这个
步骤中,需要剔除数据中的异常值并将数据标准化。
(5)数据计算
在这一步我们将得到的数据存储到Flask的消息分类系统,通过开发词云,程序对原始数据进行计算,将不同维度的结果存储到Mysql中。
(6)数据展示
分析结果可以通过后台展示到前端界面,对于普通用户而言,只需.
要登录到该后台系统,就可以获取到消息数据分析后的计算结果,从而了解行业消息情况,对于阅读的者而言可以极大地提高效率。
3.4系统平台架构
在任何信息系统当中有价值的数据都是必不可少的重要部分,如何通过手上
的资源获取得到有价值的数据便是开发系统。首先需要考虑的问题根据系统的功
能设计数据获取和处理的流程以及其实现方法都已经基本上确定获取和处理流
程。
3.5 消息数据爬虫设计
这个项目我们的主要目的是爬取消息网站网的消息数据信息,包括消息岗位、消息名称和消息描述和规模等具体详情信息,下面描述本文爬虫工程主要设
计步骤。
(1)创建项目
打开一个终端输入:scrapy startproiect python_msg _data,Scrapy框架将会在指定目录下生成整个工程框架。
(2)修改setting文件
如图3-1所示为修改后的setting文件主要内容,本设计主要修改三项内容,
第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页
面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求
头,添加一个User-Agent。
表3-1 爬虫setting文件主要配置
import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.Flaskproject.com/en/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'w-3k5=tslb6!$!ki+^_j$&v3*h(0uref5z4r#m)n1ry%@dvfbi' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ 'Flask.contrib.admin', 'Flask.contrib.auth', 'Flask.contrib.contenttypes', 'Flask.contrib.sessions', 'Flask.contrib.messages', 'Flask.contrib.staticfiles', 'Flask.contrib.sites', 'guanli', 'allauth', 'allauth.account', 'allauth.socialaccount' 'xadmin', 'crispy_forms', 'reversion' ] SITE_ID = 1 MIDDLEWARE = [ 'Flask.middleware.security.SecurityMiddleware', 'Flask.contrib.sessions.middleware.SessionMiddleware', 'Flask.middleware.common.CommonMiddleware', 'Flask.middleware.csrf.CsrfViewMiddleware', 'Flask.contrib.auth.middleware.AuthenticationMiddleware', 'Flask.contrib.messages.middleware.MessageMiddleware', 'Flask.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'xinwen.urls' TEMPLATES = [ { 'BACKEND': 'Flask.template.backends.Flask.FlaskTemplates', 'DIRS': [os.path.join(BASE_DIR,'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'Flask.template.context_processors.debug', 'Flask.template.context_processors.request', 'Flask.contrib.auth.context_processors.auth', 'Flask.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'xinwen.wsgi.application' # Database # https://docs.Flaskproject.com/en/1.11/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'Flask.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } # 'default': { # 使用mysql数据库 # 'ENGINE': 'Flask.db.backends.mysql', # 'NAME': 'traffic', # 'USER': 'root', # 'PASSWORD': '123456', # # 'HOST':'',#本机不需要加host和port,默认host为127.0.0.1,port端口默认为3306 # # 'PORT':'', # 'CONN_MAX_AGE': None, # } } # Password validation # https://docs.Flaskproject.com/en/1.11/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'Flask.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'Flask.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'Flask.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'Flask.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.Flaskproject.com/en/1.11/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.Flaskproject.com/en/1.11/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] ACCOUNT_AUTHENTICATION_METHOD = 'username_email' ACCOUNT_EMAIL_VERIFICATION = 'none' AUTHENTICATION_BACKENDS = ( 'Flask.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend' ) LOGIN_REDIRECT_URL = '/' ACCOUNT_LOGOUT_REDIRECT_URL = '/accounts/login/' ACCOUNT_EMAIL_REQUIRED = True EMAIL_HOST = 'smtp.mxhichina.com' EMAIL_PORT = 465 EMAIL_HOST_USER = 'xxxx' EMAIL_HOST_PASSWORD = 'yyyy' EMAIL_URL_SSL = True DEFAULT_FROM_EMAIL = 'xxxx' ACCOUNT_LOGOUT_ON_GET = False |
(3)确认要提取的数据,item 项
item定义你要提取的内容(定义数据结构),比如我提取的内容为消息分类的所在城市和消息详情,于是需要在items类中新建对应的实体类,并需要设置相应的字段取出对应的数据。Field 方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。
(4)开发爬虫程序,访问下载网页,使用Xpath语法提取内容。
3.6 消息分类程序设计
x_train,x_test是训练集和测试集的数据,也就是评论;y_train,y_test是对应的标签,比如是正常评论就是1,垃圾评论就是0;num_normal,num_spam是各自总共的数目。
表3-2 文本数据读取代码
from sklearn.model_selection import train_test_split # 得到评论,normal_file为存放正常评论的文件,spam_file为存放垃圾评论的文件 x = [] y = [] file1 = open("1.txt", 'r', encoding='utf-8') lines = file1.readlines() for line in lines: temp = "" for db in line.split(): temp = temp + db + " " x.append(temp) num_normal = len(x) file2 = open("2.txt", 'r', encoding='utf-8') lines = file2.readlines() for line in lines: temp = "" for db in line.split(): temp = temp + db + " " x.append(temp) num_spam = len(x) - num_normal # 得到数据标签 for i in range(num_normal): y.append(1) for i in range(num_spam): y.append(0) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3) # 对数据集进行随机划分,训练过程暂时没有使用测试数据 |
对数据进行处理(停用词、词频和转换成向量、特征选择),下图3-4是统计消息分类所属行业的任务运行在本地机器管理页面的执行情况。
表3-3 文本数据分类特征选择代码
from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 from sklearn.metrics import classification_report stopword_file = open("stopword.txt", 'r') # stopword.txt是停用词存储所在的文件 stopword_content = stopword_file.read() stopword_list = stopword_content.splitlines() stopword_file.close() count_vect = CountVectorizer(stop_words=stopword_list, token_pattern=r"(?u)\b\w+\b") train_count = count_vect.fit_transform(x_train) """ tf-idf chi特征选择;类似将自然语言转成机器能识别的向量 """ tfidf_trainformer = TfidfTransformer() train_tfidf = tfidf_trainformer.fit_transform(train_count) select = SelectKBest(chi2, k=20000) train_tfidf_chi = select.fit_transform(train_tfidf, y_train) |
对数据进行处理(停用词、词频和转换成向量、特征选择),下图3-4是统计消息分类所属行业的任务运行在本地机器管理页面的执行情况。
表3-4 文本数据分类模型使用代码
import pickle from pandas.tests.io.excel.test_xlwt import xlwt from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 from sklearn.model_selection import train_test_split """ 读取数据 """ # 得到评论,normal_file为存放正常评论的文件,spam_file为存放垃圾评论的文件 x = [] y = [] file1 = open("1.txt", 'r', encoding='utf-8') lines = fi.readlines() for line in lines: temp = "" for db in line.split(): temp = temp + db + " " x.append(temp) num_normal = len(x) file2 = open("2.txt", 'r', encoding='utf-8') lines = file2.readlines() for line in lines: temp = "" for db in line.split(): temp = temp + db + " " x.append(temp) num_spam = len(x) - num_normal # 得到数据标签 for i in range(num_normal): y.append(1) for i in range(num_spam): y.append(0) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) # 随机划分,训练过程暂时没有使用测试数据 """ 读取模型 """ with open('svm.pickle', 'rb') as svm: svm1 = pickle.load(svm) with open('count_vect.pickle', 'rb') as count_vect: count_vect1 = pickle.load(count_vect) with open('tfidf_trainformer.pickle', 'rb') as tfidf_trainformer: tfidf_trainformer1 = pickle.load(tfidf_trainformer) """ 停用词处理等 """ test_count = count_vect1.transform(x_test) """ 特征选择 """ test_tfidf = tfidf_trainformer1.transform(test_count) select = SelectKBest(chi2, k=10000) # test_tfidf_chi = select.transform(test_tfidf) """ 使用模型识别数据 """ accurancy = svm1.score(test_tfidf, y_test) print("accurancy", accurancy) # 识别准确率 test_pre = svm1.predict(test_tfidf) # 识别结果,类型是numpy.int32(可以使用int()直接转换成int型),后面通过excel来存储 |
4 后台系统实现
基于Flask的消息自动分类系统的基本业务功能是采用Flask框架实现的, 页面样式采用HTML框架,页面展示使用css,js技术,数据存储采用关系型数据库Mysql。在本文的第四章将详细介绍后台系统的实现部分,包括详细阐述了系统功能模块的具体实现,并展示说明了部分模块的功能界面。
4.1 开发环境与配置
本系统设计基于B/S架构,其中服务器包括应用服务器和数据库服务器。这种架构模式,使用户只需要在有网络的地方即可通过浏览器访问,而不需要再安装客户端软件,交互性更强。基于Flask的消息自动分类系统使用Pycharm集成开发工具。而系统运行配置时,选择应用本地来部署Web服务器来保障平台的正常运行。本系统的主要开发环境以及开发工具如表4-1所示。
表4-1 系统开发环境和工具
项目 | 系统环境及版本 |
硬件环境 | Windows 64 位操作系统 |
开发语言 | Python |
Web服务器 | 本地 |
数据库 | MySql |
开发工具 | Pycharm |
项目架构 | Flask+Scrapy |
本系统使用集成开发工具Pycharm 进行开发,由于 Pycharm 中本地配置详细资料有很多,不做详细赘述, 本文主要Flask框架配置。首先需要在项目中中引入各框架以及数据库连接。
最后,上述框 架的配置文件的路径还需要在web. xml中进行配置说明。
{% extends 'guanli/base.html' %} {% block title %}主页{% endblock %} {% block wrapper %} <div class="wrapper"> <div class="row"> <div class="col-lg-12"> <section class="panel"> <header class="panel-heading head-border"> 消息列表 </header> <form method="post" action="#"> {% csrf_token %} <label> 请输入消息:</label> <input type="text" name="works_name" value="" class="guo-input-1" id="guo-ajax-Devicenumber"> <input type="submit" id="guo-sou-ajax" value="搜索" /> </form> <table class="table table-striped custom-table table-hover"> <thead> <tr> <th><i class="fa fa-bookmark-o"></i>消息</th> <th><i class="fa fa-bookmark-o"></i>发布人</th> <th><i class="fa fa-bookmark-o"></i>类型</th> </tr> </thead> <tbody> {% for data in datas %} <tr> <td><a href="{% url 'guanli:xianxi' data.id %}">{{ data.neinong | slice:":32" }}</a></td> <td>{{ data.name }}</td> <td>{{ data.redu }}</td> </tr> {% endfor %} </tbody> </table> </section> </div> </div> </div> {% endblock %} |
图4-1 后台的配置文件
4.2 数据库的设计
数据库设计是系统设计中特别重要的一部分。数据库的好坏决定着整个系统的好坏,并且,在之后对数据库的系统维护、更新等功能中,数据库的设计对整个程序有着很大的影响。
根据功能模块的划分结果可知,本系统的用户由于使用账号和密码进行登录,因此在本系统中需要分别进行数据记录。首先根据如下6个数据实体:用户、消息分类等数据库表。
4.3 系统功能模块实现
用户登录时需要在登录界面输入用户名、密码进行身份认证,要求必须是表单认证、校验。具体流程如时序图如4-2所示。
图4-2登录认证流程图
Flask的消息分类系统的用户登录界面如下图所4-3所示:
图4-3用户登录界面
登陆成功后,系统会成功跳转至首页,在首页中,位于上方的横栏是对本系统的基本信息的描述和欢迎登录效果,另外登录用户的用户名也会显示在首页中,可直接表明用户己成功登录。左侧则是本系统的导航菜单,可折叠展示,较为方便,右方则为欢迎页效果。消息分类的消息分类系统的分析界面如下图所4-4所示,有消息数据管理,消息可视化等功能:
图4-4消息分类系统首页界面
4.3.2消息数据管理功能
消息分类管理功能是对消息分类进行查询,删除等操作的功能集合,消息信
息管理功能使用到了消息分类表t_ msg,消息分类表t_msg的主要数据字段,结构,类型及描述如下表4-2所示。
表4-2 消息分类表字段
字段名称 | 数据类型 | 是否允许为空 | 描述 |
id | int | 不允许 | 自增主键,唯一ID |
topic | String | 允许 | 消息主题 |
content | String | 允许 | 消息内容 |
pic | String | 允许 | 消息图片 |
username | String | 允许 | 发布者 |
experience | String | 允许 | 消息评分 |
recruiter | String | 允许 | 类型 |
Flask的消息分类系统的消息分类管理功能界面如下图所4-5所示:
图4-5消息数据管理界面
消息分类管理
功能流程功能图如图3-6所示:
图4-6 消息分类管理功能流程图
通过“消息分类管理”按钮,进入消息分类管理界面,用户可以看到消息分类列表,例如:消息名称、消息类型、消息主题、消息要求、消息内容、消息时间的详细信息。通过此界面,用户可以对消息分类进行删除管理操作。
4.3.3消息统计及分类功能
数据消息分类模块就是对我们采集和计算的分析结果的展示。数据分析模块的数据进行一个精美而又直接的展示,我们采用大屏的方式进行展示,展示数据结构分明,背景具有科技感,把相对复杂的、抽象的数据通过可视的、交互的方式进行展示,从而形象直观地表达数据蕴含的信息和规律。消息分类看板界面如图4-7所示。
图4-7消息统计看板界面
图4-8消息分类界面
Flask的消息分类消息分类开发的难点并不在于图表类型的多样化,而在于如何能在简单的一页之内让用户读懂消息数据之间的层次与关联,这就关系到布局、色彩、图表、动效的综合运用。如排版布局应服务于业务,避免为展示而展示;配色一般以深色调为主,注重整体背景和单个视觉元素背景的一致性。本文使用Echarts中地图、线条等组件,将分析结果较为直观的展示给平台用户,使得用户能够简便的获取有效的信息。
4.4 本章小结
本章主要分析了基于的消息分类分析系统开发过程中使用到的技术和具体的实现步骤,这其中主要介绍了Flask的消息分类系统的搭建环境和开发步骤,包括程序中的一些数据库配置等。前端页面采用的是Echarts和html实现。
5 总结与展望
5.1 系统开发遇到的问题
由于消息分类可视化分析平台是由本人独立开发,因此在系统设计和业务逻辑方面更多地借鉴了目前市场上较为流行的框架和技术点,包括技术,很多是不熟悉没接触过的,在开发过程中不断学习新知识。另外由于本人的时间和精力的原因,在系统开发过程中有很多地方可能并不能够完全尽如人意,还有许多需要补充的功能与模块。
5.2 总结与展望
消息分类系统是在对相关管理范畴进行详细调研后,确定了系统涉及的领域,包括数据库设计、界面设计等,是一个具有实际应用意义的管理系统。根据本毕业设计要求,经过四个多月的设计与开发,消息分类系统基本开发完毕。其功能基本符合用户的需求。
为保证有足够的技术能力去开发本系统,首先本人对开发过程中所用到的工
具和技术进行了认真地学习和研究,详细地钻研了基于Python的网络爬虫技术
以及Echarts, CSS, HTML等前端开发技术,同时还研究了文本挖掘、词云等。
从基于大数据的消息自动分类系统需求分析开始,到整体框架的设计以及各个详细功能的设计具体实现,最后分析系统的基础架构和详细功能已经大致开发完毕,并将其部署在本服务器当中运行,用户可以登录使用该系统进行消息分类的筛选,同时查询的分析结果。
参考文献:
[1]董雷.基于高通量实验数据和文献数据的中医药数据平台建设及应用[D].北京:北京中医药大学,2022.
[2]胡挺峰.基于ML-kNN算法的大数据分类系统设计[J].信息与电脑.2022,34(1):71-73.
[3]陈宁,王强,孙文彦等. 基于云计算的海量电力数据处理系统设计[J].自动化应用,2021,(7):103-104.
[4]Jing Hu,Xianbin Xu. Research on real-time network data mining technology for big data [J].Xianbin Xu Eurasip Journal on Wireless Communications and Networking,2019, (1): 1-6.
[5]Liu Yujun, Hong Yi, Hu Cheng.Research on Big Data Mining Technology of Electric Vehicle Charging Behaviour[J].KTU Open Journal Systems, 2019, (6): 55-61.
[6]李新宇.辅导员视域下高校网络舆情引导策略探究[C]//中国陶行知研究会.2023年第四届生活教育学术论坛论文集.忻州师范学院;,2023:3.DOI:10.26914/c.cnkihy.2023.020517
[7]罗文嘉.高校网络舆情视域下大学生意识形态的引导策略研究[C]//中国传媒大学主流融媒体研究中心,桂林电子科技大学马克思主义学院,广西高校重点人文基地政府数字传播与文化软实力研究中心,海南师范大学新闻传播与影视学院,海南省意识形态与舆论研究基地.第五届意识形态与舆论研究高峰论坛论文集.桂林电子科技大学马克思主义学院;,2023:8.DOI:10.26914/c.cnkihy.2023.008775
[8] 李军,王涛.基于Flask的消息管理技术的网络运维平台应用与开发[J].电脑编程技巧与维护,2021(07):112-114.
[9]臧博.把舆情清单变成民生清单[N].重庆日报,2023-08-11(001).DOI:10.28120/n.cnki.ncqrb.2023.003648
[10]薛永.新时期烟草专卖舆情管理挑战与对策[N].山西市场导报,2023-06-13(007).DOI:10.44302/n.cnki.nscdb.2023.000538
[11]陈思琦.文本挖掘技术在舆情分析中的应用研究[D].厦门大学,2019.DOI:10.27424/d.cnki.gxmdu.2019.000428:22-45
[12]朱亚非.新时期基层政府对网络负面舆情应对的研究和分析[D].新疆大学,2022.
[13]Nurmandi A ,Wahyuni H,Guillamon D M, et al.Social media use for public policymaking cycle: a meta-analysis[J].Electronic Government, an International Journal,2023,19(2):123-145.
[14]Steven G .Mass Preferences for the Free Movement of People in Africa: A Public Opinion Analysis of 36 Countries[J].International Migration Review,2022,56(1):270-295.
时光飞逝,四年的本科生生涯即将结束。在这四年的时光里,有遇到难题时的手足无措,有获得专业进步时的开心。经历了许多的事情,自己也在不知不觉中成长了很多,心中充盈最多的仍是感激。
在大学的里,我度过了难忘的学习生活。在这期间,我从周围的老师和同学身上学到了很多知识,并且建立了深厚的感情。
四年时间过的飞快,已经到了书写自己毕业论文的节点,回想过去的四年,充满了无数的欢乐,也学习了不少专业知识,这也更加丰富了我的大学生活。因此我要我的学院里的每一位教师,是你们教会了我的专业知识,让我具有了一技之长,同时还要感谢指导老师对我毕业设计的指导。
然后,感谢给子我帮助的朋友们,是你们让我的学习生涯更加温暖,让我能更加坚定的追求自己想要的生活。两年来,我们一起相互支持彼此的信念,一起学习新的知识,起解决遇到的各种问题, 不管我们选择的道路最终是否能够达到自己的理想,但愿我们能够友谊长存。
最后,我要感谢父母,是你们培养了我。