• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      面向情緒感知的多功能對話系統(tǒng)的設(shè)計與實現(xiàn)

      2019-05-29 11:18王明鍵梁浩純高大拯馮時
      軟件工程 2019年3期
      關(guān)鍵詞:情感分析

      王明鍵 梁浩純 高大拯 馮時

      摘? 要:現(xiàn)如今,自然語言處理技術(shù)不僅可以實現(xiàn)人機對話,還能從對話中提取出用戶所表達(dá)的情感。本文中所介紹的對話系統(tǒng)將以上兩項技術(shù)結(jié)合起來,使用Web開發(fā)相關(guān)技術(shù)構(gòu)建了一個功能較為完備的多功能對話系統(tǒng),不僅具有查詢天氣、新聞、一對一閑聊等基礎(chǔ)功能,還可以將用戶的實時情緒統(tǒng)計展示出來,進(jìn)而分析用戶情緒變化趨勢生成圖表。本文對此系統(tǒng)整體設(shè)計和實現(xiàn)過程中用到的HTML、Django和數(shù)據(jù)庫等相關(guān)技術(shù)進(jìn)行了詳細(xì)說明。

      關(guān)鍵詞:對話系統(tǒng);情感分析;Django

      中圖分類號:TP311.1? ? ?文獻(xiàn)標(biāo)識碼:A

      Abstract:Nowadays,natural language processing technology can not only realize man-machine dialogue but also analyze the emotions expressed in the dialogue process.The dialogue system introduced in this paper combines these two technologies together,building a multi-functional dialogue system with not only the basic functions of weather query,news and one-on-one chat,but also the function of displaying the users real-time emotion statistics to analyze the user's emotional trend and to generate a chart.This paper elaborates on the related technologies such as HTML,Django and database used in the overall design and implementation of the system.

      Keywords:dialogue system;sentiment analysis;Django

      1? ?引言(Introduction)

      聊天機器人的研究開始與1950年,英國知名數(shù)學(xué)家圖靈在《Mind》上發(fā)表了一篇經(jīng)典論文——《計算機器與智能》[1]。在文中,圖靈第一次提出“機器智能”的概念。如今,在深度神經(jīng)網(wǎng)絡(luò)技術(shù)的推動下,自然語言處理學(xué)科日益完善,計算機對人類使用自然語言描述的需求識別地越來越準(zhǔn)確,對簡單問題和命令可以十分準(zhǔn)確地做出回應(yīng)[2-5]。因此催生出了許多“語音助手”程序,可以實現(xiàn)諸如查詢天氣、新聞等功能,極大程度方便了人們的生活。然而現(xiàn)有的“語音助手”工具僅僅能夠回應(yīng)單一的指令,無法捕捉和應(yīng)用語句中的情感信息[6]。

      本文中實現(xiàn)的對話系統(tǒng)對現(xiàn)有“語音助手”進(jìn)行了功能上的擴展,不僅可以實現(xiàn)查天氣等基本功能,還可以分析用戶輸入語句的情感,將其以emoji表情的形式直觀顯示在對話界面上,并且使用帶有情感指定功能的聊天機器人后端生成契合當(dāng)前用戶情感的回復(fù)語句。用戶還可以隨時查詢自己在一段時間內(nèi)的情感變化情況,以及用戶總體的情感偏好。

      2? ?需求分析(Requirements analysis)

      本系統(tǒng)所要實現(xiàn)的目標(biāo)為一個多功能對話系統(tǒng),擁有查天氣、查新聞、講笑話和閑聊四項基本功能。在用戶與本系統(tǒng)交互時,系統(tǒng)可以實時分析出用戶每句話所蘊含的情感傾向信息,在做出回復(fù)的同時將情感傾向以emoji表情的方式顯示在每條消息上,并統(tǒng)計用戶感情變化趨勢生成折線圖。用戶可選擇匿名或者登錄賬號使用本系統(tǒng)。用戶登錄后可獲得修改頭像和保存聊天記錄的功能。登錄信息保存在Cookie和Session中,以實現(xiàn)記住登錄狀態(tài)避免重復(fù)登錄。

      3? ?系統(tǒng)設(shè)計和實現(xiàn)(System design and implementation)

      3.1? ?總體設(shè)計

      本系統(tǒng)基于Web技術(shù)開發(fā),運行在網(wǎng)頁瀏覽器上。前端采用Bootstrap和JQuery工具,以HTML和JavaScript語言編寫,后端采用Django框架,以Python語言編寫。前后端之間通過Ajax技術(shù)異步通信,數(shù)據(jù)全部以JSON格式包裝。用戶在網(wǎng)頁上產(chǎn)生請求后,后端通過http協(xié)議將請求內(nèi)容轉(zhuǎn)發(fā)到相應(yīng)的功能模塊服務(wù)器上,各個模塊產(chǎn)生的回應(yīng)再通過網(wǎng)頁后端服務(wù)器返回給用戶。通過這樣的設(shè)計,將系統(tǒng)本身與各個功能模塊分離,結(jié)構(gòu)清晰易于擴展,如圖2所示。

      3.2? ?數(shù)據(jù)庫設(shè)計

      經(jīng)過分析,需要保存到數(shù)據(jù)庫的僅有用戶信息和聊天記錄兩項。使用sqlite作為數(shù)據(jù)庫引擎,其結(jié)構(gòu)通過Django的Model模型功能定義。由于Django自帶了User數(shù)據(jù)表,其中包含用戶名、密碼等基本信息,因此不再進(jìn)行重復(fù)設(shè)計,數(shù)據(jù)庫結(jié)構(gòu)如圖3所示。

      為了保存用戶頭像,新建了一個Avatar數(shù)據(jù)表,其中的user字段一對一關(guān)聯(lián)到User表中的一個項目,相當(dāng)于對User表進(jìn)行了擴展。上傳的頭像文件會自動以用戶名重命名,保存到/media/avatar/中。Avatar表中avatar字段為Text類型,為頭像文件的路徑。該數(shù)據(jù)表使用了Django提供的信號功能添加了一個回調(diào)函數(shù)以實現(xiàn)當(dāng)用戶上傳新頭像時自動刪除舊頭像文件,釋放存儲空間。

      ChatHistory表用于保存聊天記錄,其中字段如下:user為外鍵,多對一關(guān)聯(lián)到User表中的一個項目;is_response字段為Boolean型,用于區(qū)分該條記錄是否為系統(tǒng)做出的回復(fù);text字段為Text類型,保存聊天記錄;emotion為Float類型,記錄該條記錄的情感傾向;time字段為該條記錄產(chǎn)生的時間,設(shè)置其auto_now屬性為True,在進(jìn)行數(shù)據(jù)插入時該字段會自動被設(shè)置為當(dāng)前時間。

      3.3? ?后端設(shè)計

      本系統(tǒng)后端使用Django框架制作。Django是一個基于Python編程語言的MVT Web應(yīng)用框架。其提供了一個基于正則表達(dá)式的URL分發(fā)器,可以在特定URL被請求時自動執(zhí)行相應(yīng)的Python函數(shù)。本系統(tǒng)所有功能全部通過http請求的形式調(diào)用。可請求URL如表1所示。

      (1)注冊/登錄/修改密碼功能

      注冊與登錄功能共用一個頁面,修改密碼功能在用戶中心二級頁面中。此三項功能的核心部分均為輸入表單和驗證碼。當(dāng)頁面加載完成時,客戶端會自動請求pc-geetest/get獲取驗證碼,用戶在表單中填寫必要信息后點擊驗證碼進(jìn)行身份驗證,此時會彈出滑動驗證窗口,若用戶成功通過驗證,則在表單中自動添加challenge、validate和seccode三個隱藏的input元素。點擊確定按鈕時,以上三個元素與用戶填寫的信息被一同發(fā)往服務(wù)器。若表單中此三元素不存在或此三元素的值通過特定算法計算失敗,則認(rèn)為用戶沒有通過驗證碼測試,直接返回錯誤信息。驗證通過后,對數(shù)據(jù)庫進(jìn)行增刪改查,實現(xiàn)注冊/登錄/修改密碼功能。

      登錄、注冊、修改密碼等需要傳遞敏感信息的場合,為防止跨站請求攻擊,在生成的表單內(nèi)部含有一個隱藏的input項目,其name為csrfmiddlewaretoken,value為服務(wù)器自動生成的驗證代碼,在提交時必須將csrf token與表單信息同時提交到服務(wù)器,否則服務(wù)器會拒絕此次請求。

      用戶登錄后,系統(tǒng)自動將登錄信息寫入到Cookie和Session中。Cookie可以讓瀏覽器記住登錄狀態(tài)。用戶在進(jìn)行請求時系統(tǒng)后端可以直接從Session中取得登錄信息,從而對登錄用戶和匿名用戶做出不同的響應(yīng)。

      (2)聊天功能

      本系統(tǒng)后端與各種功能模塊完全分離,由于功能模塊可能分布在不同的服務(wù)器上,因此后端通過http請求的方式調(diào)用各種功能模塊。當(dāng)后端接收到用戶在聊天界面輸入的內(nèi)容后,首先計算該段文字的情感傾向,再先檢查其是否包含“天氣”“新聞”或“笑話”字樣,若包含,則調(diào)用相應(yīng)的API進(jìn)行處理。若不包含,則將對話內(nèi)容和情感傾向值轉(zhuǎn)發(fā)至聊天機器人后端,最后將各個模塊的回復(fù)和情感值一同作為http響應(yīng)返回給前端。

      在查詢天氣指令中,需要在對話內(nèi)容中提取出要查詢的城市信息,方法為對內(nèi)容字符串正向掃描,首個與已知城市最大匹配的字串即為要查詢的城市名。已經(jīng)預(yù)先將已知城市列表構(gòu)建成前綴樹,用于加速匹配過程。在前綴樹中,所有節(jié)點擁有final屬性表示到該節(jié)點是否為一個完整的城市。樹的節(jié)點與子節(jié)點通過字符串中的下一個字符進(jìn)行狀態(tài)轉(zhuǎn)移。

      (1234);,若直接將其添加到頁面上,瀏覽器會運行其中代碼,攻擊者可以利用此特性執(zhí)行惡意代碼,造成潛在的安全漏洞。因此當(dāng)用戶進(jìn)行輸入時,本系統(tǒng)使用JavaScript自動將輸入內(nèi)容中的符號轉(zhuǎn)換對應(yīng)的html實體,如

      万荣县| 东港市| 赣榆县| 井研县| 辛集市| 友谊县| 简阳市| 闸北区| 开江县| 江都市| 芮城县| 阿合奇县| 商都县| 长春市| 遂昌县| 民丰县| 响水县| 辉县市| 丰原市| 嘉兴市| 荃湾区| 平果县| 阜康市| 靖宇县| 双峰县| 泾阳县| 法库县| 醴陵市| 内江市| 延庆县| 家居| 新田县| 小金县| 仁寿县| 疏附县| 酒泉市| 乌什县| 和顺县| 新河县| 磴口县| 弋阳县|