成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

智能聊天機(jī)器人小黃雞及其制作方法

2013-06-07 18:01:29來源:新浪博客作者:沐兒

講前先預(yù)熱一下,如果有還不熟悉小黃雞的親~歡迎大家戳這里http://mysimi.sinaapp.com/ 自制小黃雞一枚,歡迎測試。。暫且叫他小黃雞2號~1號在后面哈


 

2.2 匹配

可以被描述成如下流程:S1:用戶通過聊天界面向系統(tǒng)提出一個(gè)話題;S2:系統(tǒng)對該話題進(jìn)行分詞處理;S3:在系統(tǒng)知識庫中尋找與該話題匹配的話語回復(fù)用戶。

基于詞典的分詞算法分為詞典加載、預(yù)處理、最大匹配、歧義消解幾個(gè)階段。

其具體流程如下:

S1:預(yù)處理階段,按照特殊字符(英文字母、數(shù)字、標(biāo)點(diǎn)符號等)將待分析文本進(jìn)行斷句,將待切分的文本切分為只有中文的短句子,這些句子是下一步分詞處理的基本單位;

(舉個(gè)栗子:輸入“asdfadf東北師范大學(xué)哈哈哈dfadflakfl(*^__^*) 嘻嘻……”,simi只會(huì)對其中的中文“東北師范大學(xué)哈哈哈嘻嘻”做出響應(yīng);輸入“(*^__^*)”時(shí),輸出“I have no response.”)

S2:對斷句出來的句子進(jìn)行雙向最大匹配(雙向匹配,長詞優(yōu)先)分詞,分詞后的結(jié)果作為S3的輸入;

(舉個(gè)栗子:輸入“東京古巴比倫”,正向與反向切詞結(jié)果均為《東京,古巴比倫》,長詞優(yōu)先,所以simi只對“古巴比倫”做出響應(yīng);輸入“古巴比倫埃菲爾鐵塔”,正向與反向切詞結(jié)果均為《古巴比倫,埃菲爾鐵塔》,此時(shí)Simi對“埃菲爾鐵塔”做出響應(yīng))

S3:對上一步分詞得到的結(jié)果進(jìn)行比較,判斷是否存在歧義,如果存在歧義,就進(jìn)行一定的歧義消解;

S4:重復(fù)S2、S3,直到處理完步驟一中斷句所切分出的所有句子單元。

算法流程如圖所示:

\

這里給出與小黃雞對話的例子:我問小黃雞:“埃菲爾鐵塔上45度角仰望星空”。

S1:雙向最大匹配分詞:正向反向均為《埃菲爾鐵塔上,45度角,仰望星空》,沒有歧義。長詞優(yōu)先,系統(tǒng)選擇了“埃菲爾鐵塔上”作為關(guān)鍵詞;

S2:系統(tǒng)在知識庫中用剛才說的哈希函數(shù)f(埃菲爾鐵塔上),找到比如[埃,11,P] 的表項(xiàng),順著指針找到6字詞的索引,順著索引找到6字詞表,遍歷詞表,找到<埃菲爾鐵塔上,…>結(jié)構(gòu)體;

S3:系統(tǒng)隨機(jī)選擇該結(jié)構(gòu)體Ans域中的一個(gè)回答(也有可能是根據(jù)頻率高低來選擇)。比如“兩年之后等著你”。

S4:輸出回答,匹配結(jié)束。

Part 3 如何自制小黃雞

根據(jù)第二部分所介紹的原理,個(gè)人想要真正完成整個(gè)小黃雞的制作是有難度的。如果能做出一個(gè)智能較高的聊天機(jī)器人,那直接可以去申請專利開公司了~

所以在這里我們介紹兩種比較簡單易行的方法,跳過對智能算法的研究,直接調(diào)用SimSimi的庫。
 

3.1 通過獲取Cookies方法

首先我們來看人人網(wǎng)小黃雞是怎么做的。

原作者團(tuán)隊(duì)在github上給出了源代碼,網(wǎng)址https://github.com/wong2/xiaohuangji,他們使用Python語言,獲取Cookies,通過人人網(wǎng)的接口,將Simi的庫連接到人人上。

也就是說,人人網(wǎng)小黃雞并沒有真正研究第二部分講到的 AI聊天機(jī)器人的算法,而是通過調(diào)用人家Simi的庫!這就是人人網(wǎng)小黃雞跟Simi的關(guān)系。

Cookies:指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。利用網(wǎng)頁代碼中的HTTP頭信息進(jìn)行傳遞。

(舉個(gè)栗子,我們第一次登錄保研論壇時(shí)輸入用戶名與密碼,然后選擇保存密碼,就相當(dāng)于保存Cookies,下次再打開eeban就不用再登錄了~

Cookies作為一個(gè)大有用處的存在,同時(shí)也極大地危害著網(wǎng)絡(luò)信息安全。因?yàn)槭强梢酝ㄟ^例如JS腳本等方法竊取Cookies的。想想看,別人獲取了你的Cookies,都不用知道你的用戶名密碼就能以你的身份查看郵件,瀏覽網(wǎng)頁等等……當(dāng)然這是題外話,有興趣的我們以后討論~所以希望大家能經(jīng)常清理自己的Cookies,不給壞人可乘之機(jī)~~)

回到我們的小黃雞,下圖是人人網(wǎng)小黃雞源代碼中關(guān)于獲取Cookies的一段:

\
 

我們要自制呢,就不用他們那么麻煩~咱們只要幾行小代碼就可以了~

簡單介紹一下核心算法:

S1:利用session對象獲取本機(jī)在http://www.simsimi.com/talk.htm 上的Cookies

(session,在網(wǎng)絡(luò)應(yīng)用中被稱為“會(huì)話”。簡單地說,它就像在網(wǎng)站頂層的一個(gè)盒子,無論網(wǎng)頁怎么跳轉(zhuǎn),都能夠保存用戶的信息。這里注意!Talk頁是Simi免費(fèi)的聊天頁面,這一點(diǎn)很重要!)

S2:構(gòu)造頭信息,準(zhǔn)備將Cookies添加在HTTP頭部信息中

S3:從SimSimi API接口中獲取本機(jī)的響應(yīng)

(剛才說過,Cookies利用HTTP頭信息進(jìn)行傳遞,所以我們將剛才talk頁上的Cookies添加在 API頁上,相當(dāng)于是talk頁在調(diào)用API!!!這一點(diǎn)很重要。

舉個(gè)栗子,我們拿著一把鎖,去找talk頁,talk給了我們一把鑰匙,但是我們開鎖手法我們不知道,于是我們將鎖+鑰匙一起送給API,然后它幫我們打開了盒子~~~bling~~bling~~)

來,我們看看原理圖:


\
 

下面是我用這個(gè)方法做的小黃雞1號:


\
 

確切的說是這是一只小黃雞與一只小黃鴨的互掐。哈哈!

想要做小黃雞,這是一個(gè)省時(shí)省力的方法,但是。。。不得不說這是在盜用SimSimi的勞動(dòng)成果。。。人家指望它的API庫賣錢的呢。。。。額額額

所以接下來我們來看正版的制作方法~~

3.2 通過key調(diào)用API接口

下面這個(gè)網(wǎng)址給出了SimSimi的官方API文檔:http://developer.simsimi.com/api

\
 

文檔已經(jīng)寫得非常清晰了,http://api.simsimi.com/request.p?key=your key&lc=en&ft=1.0&text=hi這一行代碼就是在調(diào)用官方API接口!也就是說,只要你申請到了key,就能調(diào)用simi的API,是不是想想就很爽?~最開始我給大家的小黃雞2號就是正版雞有木有~現(xiàn)在來講解一下怎么做。我選擇J2EE平臺,MVC模式,JSP+JAVA語言。

最核心的思想是這樣的:我們將從表單中獲取的字符串,送去調(diào)用官方API接口,用request對象返回結(jié)果,再打到屏幕上~~是不是很簡單?

下面介紹詳細(xì)算法流程:

S1:talk.jsp——用戶填寫表單內(nèi)容,將參數(shù)String text傳遞給chuil.jsp;

S2:chuli.jsp——request對象獲取傳遞來的參數(shù),調(diào)用API,用Content類中的getContent(urls)方法獲取網(wǎng)頁的內(nèi)容,返回結(jié)果String ans,將ans傳遞給talk.jsp;

S3:talk.jsp——request對象獲取傳遞來的參數(shù)ans,將ans打印到屏幕上。結(jié)束。

*其中Content類用于獲取網(wǎng)頁內(nèi)容,直接上網(wǎng)找的,都不用自己寫~hiahia

這是小黃雞2號的效果圖:

\
 

正版的方法就是簡單~但是因?yàn)槭钦娴模偷酶冻龃鷥r(jià),key是要錢的。我現(xiàn)在用的是試用版,key的有效期限是90天,并且每天只有100次響應(yīng),也就是說你一天只能調(diào)戲它100次。。。是不是很桑感。

總結(jié)

經(jīng)過這么多的介紹,大家是不是對類似小黃雞(SimSimi)的人工智能聊天機(jī)器人有了初步的認(rèn)識。其實(shí)你可以做很多只“小黃雞”,但它的核心都是Simsimi的庫,是人家的東西。所以說偶們新時(shí)代的年輕人應(yīng)該要有自己創(chuàng)新意識~讓我們來開發(fā)自己的智能算法~做自己的小黃雞、小黃鴨、小黃狗、小黃瓜吧!~~

問答環(huán)節(jié)

訓(xùn)練的話玩家調(diào)戲它的數(shù)據(jù)會(huì)被錄入作為以后回答別人的參考么?還是需要相應(yīng)權(quán)限才能存入庫里?

這個(gè)就是教學(xué)界面。會(huì)的。玩家教給它的話題,會(huì)在切詞之后,打包它的回答,一起存入詞庫。別人觸發(fā)相似的關(guān)鍵詞,也有可能回答剛剛你教過的答案。

那一個(gè)問題有不同答案,如何選擇呢?

一個(gè)關(guān)鍵詞下鏈接了好幾種不同的回答,系統(tǒng)會(huì)隨機(jī)選擇一個(gè),比如輸入“哈哈”,回答有可能是“呵呵”“笑什么笑”……

以前的這個(gè)詞表里面對于每個(gè)可能出現(xiàn)的詞已經(jīng)有了確定的答案的意思嗎?

對,構(gòu)建詞庫的時(shí)候,還有訓(xùn)練的時(shí)候都已經(jīng)寫進(jìn)去了

但是訓(xùn)練的時(shí)候不能隨便的吧?萬一教他的是錯(cuò)誤的知識呢?

誰都可以~~但是一般會(huì)有過濾系統(tǒng),要審核的,像simi就有做任務(wù)這個(gè)玩法,任務(wù)就是,給你別人的回答,讓你判斷是否可以給不滿16歲的孩子看,也有存進(jìn)去的時(shí)候設(shè)置敏感詞什么的。

贊助商鏈接:

主站蜘蛛池模板: 黑河市| 安福县| 工布江达县| 通州区| 临江市| 台北县| 晋州市| 汪清县| 元江| 左权县| 襄汾县| 晋宁县| 东莞市| 嫩江县| 方正县| 酒泉市| 贵溪市| 江油市| 南和县| 淮南市| 长沙市| 湛江市| 西平县| 深圳市| 上杭县| 宁陵县| 芜湖市| 安溪县| 房产| 舟曲县| 民勤县| 靖远县| 四川省| 和林格尔县| 长治市| 盐亭县| 黎平县| 阿克陶县| 广元市| 随州市| 中西区|