企业负面信息采集和分级系统设计与实现《网站规划与设计》期末论文3

 

图3-8  三层DFD图 负词库管理系统

3.1.3  数据模型

1.  数据字典

表3-1  negative_infos表

字段名 含义 类型 非空 依赖
ID 负面信息ID INT UNSIGEND 主键
TITLE 负面信息标题 VARCHER(50)
SOURCE 负面信息来源 VARCHER(100)
TIME 负面信息发表时间 DATE
CONTENT 负面信息正文 TEXT
LEVEL 负面信息负面程度 INT
COMPANY 负面信息涉及公司 VARCHAR(20)
CREATED_AT 本记录创建时间 TIMESTAMP
UPDATED_AT 本记录更新时间 TIMESTAMP

表3-2  negative_words表

字段名 含义 类型 非空 依赖
ID 负词ID INT UNSIGEND 主键
CONTENT 负词内容 VARCHAR(10)
LEVEL 负词负面等级 INT
CREATE_AT 本记录创建时间 TIMESTAMP
UPADTE_AT 本记录更新时间 TIMESTAMP

表3-3 users表

字段名 含义 类型 非空 依赖
ID 用户ID INT UNSIGEND 主键
NAME 用户名称 VARCHAR(10)
EMAIL 用户邮箱 VARCHAR(50) 主键、外键
PASSWORD 用户密码 VARCHAR(30)
REMEMBER_TOKEN 用户标识 VARCHAR(100)
CREATED_AT 本记录创建时间 TIMESTAMP
UPDATE_AT 本记录更新时间 TIMESTAMP

表3-4  password_resets表

字段名 含义 类型 非空 依赖
EMAIL 用户邮箱 VARCHAR(50) 主键,参照user表
TOKEN 用户标识 VARCHAR(100)
CREATED_AT 本记录创建时间 TIMESTAMP

 

3.2  非功能性需求

3.2.1  易用性

对于用户,在使用系统时,应该是无学习成本的。用户不需要了解系统的架构与实现。界面应尽可能的简洁,以减少无效信息对用户的干扰和误导,让用户可以一眼发现需要的功能。

3.2.2  通用性

系统的使用应该与设备及平台无关。在不同平台,不同设备,不同浏览器上,系统应尽可能的展现给用户相同的界面,至少要保证使用逻辑是相同的。

3.2.3  可维护性

系统在建成之后,应该是可维护的。对于新添加的功能,可以在不影响原有功能的情况下正常运行。系统出现重大问题时,可以通过回滚或DeBug的手段重新上线。

3.2.4  性能

系统应该在用户可接受的时间内完成用户请求的业务。系统应该能长时间的持续运行。系统应该具有足够的容量来保存处理业务的过程中产生的数据。

3.2.5  时效

由于业务的特殊性,系统中的数据应是新鲜的。对于老旧数据应该清理或保存到静态存储作为资料备份。在线数据的产生时间应该是较近的。

 详细设计

4.1  系统业务流程

本系统由用户通过浏览器访问服务器地址开始业务流程。对于游客,需要首先注册成为系统的用户。用户需要进行登录,以完成身份验证。然后根据角色的不同,分别进入普通用户的业务流程和管理员的业务流程。对于普通用户,登录后,用户进入展示了负面信息列表的主页面,通过搜索框,可以筛选出经过聚集的负面信息列表,然后通过点击负面信息标题,用户可以查看负面信息的详细内容,关闭页面后流程结束。对于管理员,除了普通用户的全部流程,管理员可以启用后台管理流程。管理员进入后台管理页面后,可以选择负面信息管理、负词库管理及爬虫这三个不同的功能,每个功能具有不同的子流程。关闭页面后,流程结束。为了直观的描述系统业务流程,绘制如图4-1所示的流程图。

 

图4-1 系统业务流程图

在负面信息管理子流程中,流程开始于管理员进入负面信息管理模块。在负面信息管理模块中,首先需要进行功能选择。对于修改和新增负面信息,本质是以数据库中的表字段为最小单位进行增量更新,故接下来进入相同流程。首先展示信息表单,之后填写信息增量并保存,流程结束。而删除负面信息是以数据库表中的元组为单位进行操作,故进入不同流程。由于删除操作具有原子性,故删除过程结束后,直接结束。流程图如图4-2。

 

图4-2 负面信息管理子流程

 

 

在负词库管理子流程中,流程开始于管理员进入负词库管理模块。在负词库管理模块中,首先需要进行功能选择。对于修改和新增负词,本质是以数据库中的表字段为最小单位进行增量更新,故接下来进入相同流程。先展示负词的表单,之后填写负词增量并做保存,流程结束。而删除负词是以数据库表中的元组为单位进行操作,故进入不同流程。由于删除操作具有原子性,故删除果程结束后,直接结束。流程图如图4-3所示。

 

图4-3 负词库管理子流程

在爬虫管理子流程中,流程开始于管理员进入爬虫管理模块。之后管理员输入企业名称,把名称发送到后端。然后后端执行爬虫,对负面信息搜索并分级。之后进行保存。保存的过程中存在一个校验的子过程,在系统实现部分进行描述。至此流程结束。如图4-4所示。

 

图4-4 爬虫子流程

4.2  系统结构设计

4.3.1  系统结构图

 

 

图4-5 系统结构图

4.3.2  数据访问

本系统使用的数据存储工具是MySQL数据库,但是所实现的数据访问方式是数据库无关的。Laravel提供了Eloquent,它实现了一种 ORM(对象关系映射)的方法,其效果等同于创建了一个虚拟对象数据库。ORM主要传达三个思想: 首先是简单。在建模的时候保存最基本的信息即实体,对于约束、关联等,则在ORM系统中考虑。其次是表现力。对于文档化的数据库结构,应该足够清晰易懂。最后是精确性。基于简单数据模型构建的ORM应该完整的传达数据库模型所想表达的信息和约束。通过Eloquent,我们可以创建一个模型与数据表关联。通过模型我们可以直接使用面向对象的方式,实现对数据表的增删改查及关系映射等。

4.3.3  身份认证

身份认证子系统主要由三个模块构成,包括登录、注册及忘记密码。对于没有登录的情况,我们会给出一个登录页面,在登录之前,系统不允许使用者使用除登录注册和忘记密码外的其他功能。

  1. 未登录或者登录过期的使用者,在访问服务器后,首先被给出一个登录界面,使用者在此输入账号密码。点击Login后,信息将通过表单提交给服务器,之后服务器进行验证。
  2. 如果忘记密码,用户可以点击Forgot Your Password链接进行密码重置。进入密码重置的页面后,用户输入注册时的邮箱。邮箱地址通过表单提交给服务器。如果邮箱存在,在通过邮件验证后,系统为用户重置密码并要求设置新密码。设置完成并提交后,密码更新。
  3. 点击右上角的Register按钮可以进入注册页面。在此,系统要求使用者填写注册信息。使用者填写并提交后,系统会验证信息是否合法。对于合法的注册信息,允许注册,注册成功后会自动登录并进入信息展示页。

4.3.4  负面信息展示

  1. 1. 已登录用户自动跳转到一个负面信息列表,系统在此展示一些负面信息的概要信息。包括负面信息的标题,时间,来源,相关企业,负面等级。
  2. 用户可以点击负面信息标题来进入负面信息详情页面查看具体内容。在用户点击标题后,前端向服务器提交一个GET请求,请求中附带所点击的负面信息的ID。服务器通过ID,在数据库中查找对应的负面信息并返回到浏览器。
  3. 用户可以在筛选框内输入企业名称,点击筛选负面信息后,页面向服务器提交一个POST请求,请求中包含用户提交的企业名称。服务器接收这个请求后,通过该字段对负面信息表进行聚集,之后返回给前端,浏览器就会展示筛选后的负面信息列表。

4.3.5  负面信息管理

  1. 用户点击后台管理按钮可以进入后台管理模块。在后台管理模块中,有具体的三个模块的入口。
  2. 点击负面信息管理,可以进入负面信息管理模块。在此处展示了负面信息的标题以及管理模块的子功能入口。
  3. 点击新增,系统展示一个表单,要求用户填写需要所新增负面信息的详情。其中包括标题、来源、发布时间、企业名称、详细内容。用户填写后,点击新增负面信息。此时页面会向服务器发出一个POST请求来提交刚刚填写的表单。服务器接收表单后,通过数据访问层,把收到的信息保存到数据库。页面返回到负面信息管理。
  4. 点击修改,页面向服务器发送一个GET请求,请求中包含对应负面信息的ID,之后服务器获取ID所对应的信息后,返回一个填入那些信息的表单。用户可以对信息进行更改。点击提交修改后,页面发出一个POST请求。服务器收到请求后,把修改写入数据库。页面返回到负面信息管理。
  5. 点击删除,页面向服务器发送一个伪造的请求。请求中包含负面信息ID,伪造的请求类型为DELETE。服务器收到请求后,执行删除操作,对该ID对应的记录进行删除。页面返回到负面信息管理。

4.3.6  负词库管理

  1. 点击负词库管理,可以进入负词库管理模块。在此处展示了负词内容以及管理模块的子功能入口。
  2. 点击新增,系统展示一个表单,要求用户填写需要所新增负面信息的详情。其中包括负词和分级。用户填写后,点击提交负词。此时页面会向服务器发出一个POST请求来提交刚刚填写的表单。服务器接收表单后,通过数据访问层,把收到的信息保存到数据库。页面返回到负词库管理。
  3. 点击编辑,页面向服务器发送一个GET请求,请求中包含对应负词的ID,之后服务器获取ID所对应的信息后,返回一个填入那些信息的表单。用户可以对信息进行更改。点击提交修改后,页面发出一个POST请求。服务器收到请求后,把修改写入数据库。页面返回到负词库管理。
  4. 点击删除,页面向服务器发送一个伪造的请求。请求中包含负词ID,伪造的请求类型为DELETE。服务器收到请求后,执行删除操作,对该ID对应的记录进行删除。页面返回到负词库管理。

4.3.7  爬虫管理

  1. 点击爬虫管理进入爬虫模块。页面展示一个表单,在表单中填写企业名称后点击查询负面信息,表单会以POST请求提交给服务器。收到请求的服务器执行爬虫模块从互联网获取企业负面信息。
  2. 爬虫首先通过URL参数,把公司名称作为关键字,向百度提交一个GET请求。通过get_html收到请求返回的结果后,爬虫模块通过get_url方法,从搜索结果中提取出指向负面信息来源的URL,之后对于提取到的每一个URL,再次通过get_html方法获取到网页文本并保存到本地。获取到的网页文本包含了广告,页头,侧边栏等许多无效信息。通过dom_resorce对文本进行解析,提取出标题、时间、来源、正文等信息,对于无法提取出完整信息的文本,我们认为其信息不完整,做丢弃处理。
  3. 得到负面信息后,我们对其进行去重,对于标题或内容完全相同的信息,即使来自不同的来源,我们也认为其相同。丢弃判断为重复的信息。
  4. 对于不重复的信息,我们获取其正文,并通过get_level方法处理,得到文本的负面等级。get_level方法通过分词算法对文本进行分词,然后把分词后的文本向量化。通过文本分类算法,对向量化的文本进行分类,之后基于词库对分类的文本计算出负面等级。这部分通过百度提供的情感分析API实现。对API提交文本,会得到一个包括负面可能,正面可能,置信度,情感倾向等信息的数组。通过

Level = 2 * (负面概率 - 0.5) * 置信度 * 10

变换得到负面等级。此时得到完整的负面信息,将其保存到数据库。算法执行结束后,会返回一个执行结果页面。

 

http://www.wxtxxndq.com

http://www.guanjunguanyu.cn

http://www.nuomasilin.cn/

http://www.anlancs.com/

更多
  • 该日志由 于2020年06月03日发表在 未分类 分类下, 你可以发表评论,并在保留原文地址 及作者的情况下引用到你的网站或博客。
  • 本文链接: 企业负面信息采集和分级系统设计与实现《网站规划与设计》期末论文3 | 帮助信息-动天数据
  • 版权所有: 帮助信息-动天数据-转载请标明出处
  • 【上一篇】 【下一篇】

    0 Comments.