1.項目概述
在此方案中,通過自定義的網絡爬蟲,將原始百科數據的詞條屬性以及相關的文本信息不間斷抓取到本地系統中,並整理成帶擴展屬性的三元組形式。后端系統自動通過圖數據庫對三元組數據進行導入更新,轉換為信息豐富的知識圖譜系統,在前端為用戶提供基於知識圖譜的應用服務。
目前金融領域經常會有對客戶背景的核查,但核查員也很難對客戶熟知的領域都足夠了解,知識圖譜可以幫助自動生成問題和參考答案。
2.系統架構
系統采用MVC架構,MVC包括模型層(Model)、視圖層(View)、控制器層(Controller)
Model代表一個存取數據的對象及其數據模型。
View代表模型包含的數據的表達方式,一般表達為可視化的界面接口。
Controller作用於模型和視圖上,控制數據流向模型對象,並在數據變化時更新視圖。控制器可以使視圖與模型分離開解耦合。
三、接口API
接口名稱 | 接口地址 | 請求方式 | 請求參數 | 響應信息 |
用戶注冊 | /user/register | POST | username, password | 注冊成功/失敗的信息 |
用戶登錄 | /user/login | POST | username, password | 登錄成功/失敗的信息 |
選擇領域 | /filed | POST | 所選領域 | 選擇成功/失敗的信息 |
獲取問題 | /question | GET | 問題的相關內容 | |
回答問題 | /answer | PUT | 所選答案 | 提交是否成功 |
獲取答案 | /get_answer | POST | 參考答案 |
四、軟件系統概念原型的不同視圖
4.1 分解視圖
分解是構建軟件架構模型的關鍵步驟,分解視圖也是描述軟件架構模型的關鍵視圖,一般分解視圖呈現為較為明晰的分解結構(breakdown structure)特點。分解視圖用軟件模塊勾划出系統結構,往往會通過不同抽象層級的軟件模塊形成層次化的結構。
4.2 依賴視圖
依賴視圖展現了軟件模塊之間的依賴關系。比如一個軟件模塊A調用了另一個軟件模塊B,那么我們說軟件模塊A直接依賴軟件模塊B。如果一個軟件模塊依賴另一個軟件模塊產生的數據,那么這兩個軟件模塊也具有一定的依賴關系。
4.3 泛化視圖
泛化視圖展現了軟件模塊之間的一般化或具體化的關系,典型的例子就是面向對象分析和設計方法中類之間的繼承關系。值得注意的是,采用對象組合替代繼承關系,並不會改變類之間的泛化特征。因此泛化是指軟件模塊之間的一般化或具體化的關系,不能局限於繼承概念的應用。
4.4 執行視圖
執行視圖展示了系統運行時的時序結構特點,比如流程圖、時序圖等。執行視圖中的每一個執行實體,一般稱為組件(Component),都是不同於其他組件的執行實體。如果有相同或相似的執行實體那么就把它們合並成一個。
4.5 實現視圖
實現視圖是描述軟件架構與源文件之間的映射關系。比如軟件架構的靜態結構以包圖或設計類圖的方式來描述,但是這些包和類都是在哪些目錄的哪些源文件中具體實現的呢?一般我們通過目錄和源文件的命名來對應軟件架構中的包、類等靜態結構單元,這樣典型的實現視圖就可以由軟件項目的源文件目錄樹來呈現。
|——src | |——dbprocess 數據庫處理相關操作 | |——extract 知識抽取工具 | |——server&client 問答系統 | |——spider 數據爬取工具 |——.gitignore |——LICENSE |——README.md
4.6 部署視圖
部署視圖是將執行實體和計算機資源建立映射關系。這里的執行實體的粒度要與所部署的計算機資源相匹配,比如以進程作為執行實體那么對應的計算機資源就是主機,這時應該描述進程對應主機所組成的網絡拓撲結構,這樣可以清晰地呈現進程間的網絡通信和部署環境的網絡結構特點。當然也可以用細粒度的執行實體對應處理器、存儲器等。
4.7 工作任務分配視圖
工作分配視圖將系統分解成可獨立完成的工作任務,以便分配給各項目團隊和成員。工作分配視圖有利於跟蹤不同項目團隊和成員的工作任務的進度,也有利於在個項目團隊和成員之間合理地分配和調整項目資源,甚至在項目計划階段工作分配視圖對於進度規划、項目評估和經費預算都能起到有益的作用。
五、數據庫設計
使用圖數據庫neo4j存儲知識圖譜
六、運行環境和技術選型
python:爬取數據。
standford corenlp:斯坦福大學開發的自然語言處理工具套件,用於處理爬取的數據,構建知識圖譜
neo4j:圖數據庫,用於存儲知識圖譜
使用socket編程,實現服務端和客戶端的通信
pyqt5:制作一個小型的圖形界面,用於展示問題和答案
七、系統概念原型的核心工作機制
客戶通過注冊和登錄進入界面
客戶選擇自己的領域,自動生成問題。客戶回答問題后會給出參考答案。