前言
因为本人工程实践项目是研究类型的NLP对话系统任务,此次作业的目的是掌握一整套的需求分析和概念原型设计的方法。故此次作业将工程实践的相应技术封装成一个项目,并对这个项目进行需求分析和用例建模,以及相应的业务流程就爱你模拟与数据模型的分析,最终形成概念原型。
一、项目介绍
聊天机器人是目前各大科技公司都在竞争和探索的一个领域,常见的商用产品诸如小米公司的小爱同学和苹果的Siri以及微软公司的小冰。本项目实现的聊天机器人是一种简单的版本,主要实现的功能是,聊天机器人基于用户输入的一句话,给出相应的回答。这句话可以是一个指令,也可以是闲聊。
二、用例建模
1. 什么是用例
用例(use case)是在软件工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。也可以将用例视为一个业务过程(business process),是经过对系统的分析后逻辑抽象出来的一个业务过程。而所谓业务过程,及系统所被期望完成的一些系列活动。
用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。
2. 分布进行用例建模
用例建模主要分为四个步骤:
① 从需求分析中逻辑分析抽象出用例,常以动名词短语的形式出现;
② 找到用例的开始和结束状态;
③ 将用例按从属子系统的不同进行分类,找到用例之间的关系,画出用例图;
④ 详细分析单个用例发挥功能的过程,包括与用户的交互等;
其中第①到③步是计划阶段,第④步是增量实现阶段;
3. 本项目的用例建模
对聊天机器人系统进行用例建模:
对用户而言:
① 用户可以注册和登录账号,以顺利的进入系统和保存自己的对话历史;
② 用户给系统输入一句话,并期望聊天机器人给出相应的回复,从而完成对话;
③ 用户可以对聊天机器人给出的回复进行打分,这样的数据有利于NLP模型变得更好;
④ 用户可以在登录后查看当前账户下的对话历史;
对管理员而言:
① 管理账号信息,包括账号封禁等;
② 收集用户对聊天机器人回复的评分数据,以维护系统所使用的NLP模型;
完整的用例图如下图所示:
三、业务领域建模
1. 概念介绍
业务领域建模是开发团队用于获取业务领域知识的过程。因为软件工程师往往需要工作在不同的业务领域或者不同项目中,他们需要业务领域知识来开发软件系统。软件工程师往往来自不同的专业背景,这可能会影响他们对业务领域的认知。因此业务领域建模有助于开发团队获取业务领域知识形成统一的业务认知。
开发团队获取业务领域知识的过程一般包括收集业务领域相关信息、执行团队头脑风暴、对业务领域相关的知识概念进行分类,最后用UML类图将业务领域知识图形化展示。
2. 基本步骤
① 收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
② 头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
③ 给这些应用业务领域概念分类。分别列出哪些是类、哪些属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系。
④ 将结果用 UML 类图画出来。
3. 绘制业务类图
四、数据建模
数据模型(Data Model)是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架。
数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约束。
① 数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。
② 数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式。
③ 数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。
根据上面得到的业务类图,可以得到本项目的数据模型:、
用户表
字段名称 | 类型 | 注释 |
---|---|---|
username | string | 用户名 |
password | string | 密码 |
person_type | string | 用户类型 |
phone_number | string | 电话号码 |
string | 电子邮箱 | |
user_id | int | 用户ID |
管理员表
字段名称 | 类型 | 注释 |
---|---|---|
username | string | 用户名 |
password | string | 密码 |
admin_id | int | 管理员ID |
authority | string | 管理员权限 |
对话 / 聊天表
字段名称 | 类型 | 注释 |
---|---|---|
input_sentence | string | 用户输入的句子 |
output_sentence | string | 模型输出的句子 |
模型表
字段名称 | 类型 | 注释 |
---|---|---|
model_params | matrix | 构成模型的参数 |
model_data | string | 模型用到的数据 |
model_version | string | 模型版本 |
五、概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论,而概念原型是一种虚拟的、理想化的软件产品形式。
工作流程:用户给聊天机器人输入句子后,期望得到恰当的回复,并对这个回复进行打分;管理员收集这些标记数据,对模型进行再训练并将新模型更新到系统中去。
六、总结