mr bullet手游攻略 最強大腦里小度的對話功能是如何做到的?
最強大腦里小度的對話功能是如何做到的?其實我們做一個智能聊天機器人也不容易。我剛剛在這里實現(xiàn)了一個非常簡單的聊天機器人。當你和這個機器人聊天的時候,每次機器人都會根據(jù)你說的關(guān)鍵詞找到答案句子。如果你能
最強大腦里小度的對話功能是如何做到的?
其實我們做一個智能聊天機器人也不容易。我剛剛在這里實現(xiàn)了一個非常簡單的聊天機器人。當你和這個機器人聊天的時候,每次機器人都會根據(jù)你說的關(guān)鍵詞找到答案句子。如果你能 找不到,隨便說個默認語言。數(shù)據(jù)存儲格式是xml。以下是xml的原始文件:lt?xml版編碼UTF-8?大型旅行車的
ltchatgt
lt!-默認聊天語句- gt
ltdefaultgt
Ltcontentgt,你在哪里?lt/contentgt
Ltcontentgt,你還是學生嗎默認值gt
lt!-回答指定關(guān)鍵詞的句子順序-gtltanswergt lt contentkey責備gt不責備lt/contentgt。
lt內(nèi)容鍵慢速gt是,慢速lt/contentgt
Ltcontent密鑰。嘿,gt,什么 怎么樣了?lt/contentgt
Ltcontent key88gt再見lt/contentgt
lt內(nèi)容關(guān)鍵感謝gt有 沒什么可感謝的。
我贏了。;別說了,我會去的。
lt/chatgt////////////////////////////////////////////。
公共類表單1
繼承由Windows窗體設(shè)計器Public Sub New()生成的# regionCode
()此調(diào)用是Windows窗體設(shè)計器所必需的。
InitializeComponent()在InitializeComponent()調(diào)用后添加任何初始化結(jié)束子窗體以覆蓋dispose,從而清理組件列表。
受保護的重載覆蓋Sub Dispose(ByVal Dispose為Boolean)
如果處理然后
如果不是(組件什么都不是),那么
組件。處置()
如果…就會結(jié)束
如果…就會結(jié)束
我的基地。處置(處置)
結(jié)束子勝利由dows表單設(shè)計器要求。
下面的過程是Windows窗體設(shè)計器所必需的。
您可以使用Windows窗體設(shè)計器來修改此過程。
不要使用代碼編輯器修改它。
將事件RichTextBox1作為朋友
事件文本框1為的朋友
事件按鈕1為的朋友
()gt私有Sub InitializeComponent()
將資源標注為新資源(GetType(Form1))
新的
我。文本框1新
我。按鈕1新
()
RichTextBox1
新系統(tǒng)。繪圖點(0,0)
RichTextBox1
真實的
新的(560,304)
2
文本框1
我。文本框1 .位置新系統(tǒng)。繪圖點(0,312)
文本框1
新(456,21)
0
我。文本框1 .文本
按鈕1
我。按鈕1 .新系統(tǒng)的位置。繪圖點(472,312)
按鈕1
新(72,24)
一個
我。按鈕1 .文本輸入
表格1
新(6,14)
新(560,341)
(我。按鈕1)
(我。文本框1)
()
我。Icon CType(($this。圖標)、系統(tǒng)。繪圖.圖標)
錯誤的
表格1
我。文字青蛙王子
(False)End Sub # End Region Private Sub form 1 _ Load(ByVal sender As System。對象,ByVal e作為系統(tǒng)。EventArgs)處理MyBase。負荷
readxml()
末端接頭
將xmlFile顯示為字符串。/robot.xml
Dim聊天列表作為新的數(shù)組列表
迪姆安swerList作為新哈希表
Dim random作為新系統(tǒng)。隨機私有Sub readxml()
嘗試
將文檔標注為XmlDocument新建XmlDocument
醫(yī)生。加載(xmlFile)
Dim nodeList作為XmlNodeList
Dim根作為XmlElement
-默認聊天語句-
節(jié)點列表(/聊天/默認/內(nèi)容)
將節(jié)點標注為XmlNode
對于節(jié)點列表中的每個節(jié)點
()
然后
回答指定關(guān)鍵字的陳述順序-
節(jié)點列表(/聊天/回答/內(nèi)容)
對于節(jié)點列表中的每個節(jié)點
((關(guān)鍵)。值,)
然后
將ex作為異常捕獲
MsgBox()
結(jié)束嘗試
末端接頭
private Sub button 1 _ Click(ByVal s:)ltgt-1)那么
如果學習新單詞(內(nèi)容),則
我學到了新的東西,謝謝!控制字符。Lf)
如果…就會結(jié)束
出口接頭
如果…就會結(jié)束
(內(nèi)容控制字符。Lf)
Dim aStr$ getSimilarContent(內(nèi)容)
如果(aStr Nothing)那么
尺寸i% (1,)
aStr(一)
如果…就會結(jié)束
(ControlChars。Lf)
()
末端接頭
獲取類似的字符串
函數(shù)getSimilarContent(字符串形式的ByVal內(nèi)容)作為字符串
調(diào)暗按鍵為
Dim enumR As
While()
Dim str$
如果c內(nèi)容。等于(字符串)
返回應(yīng)答列表
如果…就會結(jié)束
結(jié)束時間
()
While()
Dim str$
如果((str) ltgt -1)或((content) ltgt -1)那么
返回應(yīng)答列表
如果…就會結(jié)束
結(jié)束時間
不返回任何內(nèi)容
End函數(shù)添加一條新語句。
函數(shù)learnNewWord(字符串形式的ByVal內(nèi)容)為布爾值
嘗試
將文檔標注為XmlDocument新建XmlDocum:)
Dim str1$ (0,I)
Dim str2美元(i 1)
醫(yī)生。加載(xmlFile)
Dim elem As XmlElement(內(nèi)容)
作為XmlAttribute的Dim屬性(鍵)
str1
str2
(屬性)
添加新語句-
Dim根作為XmlElement
將xmlNode顯示為xmlNode(/聊天/回答)
(elem)
(str1,str2)
(xmlFile)
返回True
將ex作為異常捕獲
MsgBox()
返回False
結(jié)束嘗試
End函數(shù)Private Sub textbox 1 _ KeyPress(ByVal sender As Object,ByVal e As)句柄
如果()那么
Button1_Click(無,無)
如果…就會結(jié)束
末端接頭
結(jié)束類
希望你能理解!