前言
因為本人工程實踐項目是研究類型的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 | 模型版本 |
五、概念原型
概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論,而概念原型是一種虛擬的、理想化的軟件產品形式。
工作流程:用戶給聊天機器人輸入句子后,期望得到恰當的回復,並對這個回復進行打分;管理員收集這些標記數據,對模型進行再訓練並將新模型更新到系統中去。
六、總結