成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【翻譯】用AIML實(shí)現(xiàn)的Python人工智能聊天機(jī)器人

seasonley / 1197人閱讀

摘要:前言用的包很容易就能寫一個(gè)人工智能聊天機(jī)器人。他開(kāi)發(fā)了一個(gè)叫的機(jī)器人并且贏了幾個(gè)人工智能的獎(jiǎng)項(xiàng)。這條在它收到一個(gè)以開(kāi)始的消息時(shí)會(huì)隨機(jī)回復(fù)。那也有一個(gè)可以讓你玩點(diǎn)的機(jī)器人。機(jī)器人需要變活。這就要靠機(jī)器人大腦文件了??聪鹿?jié)寫命令給機(jī)器人。

前言

用python的AIML包很容易就能寫一個(gè)人工智能聊天機(jī)器人。 AIML是Artificial Intelligence Markup Language的簡(jiǎn)寫, 但它只是一個(gè)簡(jiǎn)單的XML。 下面的代碼例子會(huì)帶你寫一個(gè)你自己的Python人工智能聊天機(jī)器人。

什么是AIML?

AIML是Richard Wallace開(kāi)發(fā)的。 他開(kāi)發(fā)了一個(gè)叫A.L.I.C.E(Artificial Linguistics Internet Computer Entity)的機(jī)器人并且贏了幾個(gè)人工智能的獎(jiǎng)項(xiàng)。 有趣的是, 其中一個(gè)圖靈測(cè)試是讓一個(gè)人在文本界面跟一個(gè)機(jī)器人聊幾分鐘,看看人們是否認(rèn)為它是個(gè)人類。 AIML是一種定義了匹配模式和決定響應(yīng)的規(guī)則的一種XML。

要看完整的AIML入門,可以看一下 Alice Bot"s AIML Primer.你可以在AIML wiki頁(yè)學(xué)更多關(guān)于AIML的知識(shí)并知道它能做什么。 我們先寫一些AIML文件并用Python給它一點(diǎn)生命。

寫標(biāo)準(zhǔn)啟動(dòng)文件

標(biāo)準(zhǔn)是寫一個(gè)叫std-startup.xml的啟動(dòng)文件作為載入AIML文件的主入口點(diǎn)。 這個(gè)例子里我們會(huì)寫一個(gè)可以匹配一個(gè)模式并做一個(gè)動(dòng)作的基本文件。 我們想要匹配模式load aiml b, 然后讓它載入我們的aiml大腦。我們會(huì)花一分鐘寫一個(gè)basic_chat aiml文件。


    

    
    

        
        
        LOAD AIML B

        
        
        
        
    

寫AIML文件

上面我們寫了一個(gè)只處理一種模式的AIML文件,load aiml b。當(dāng)我們輸入那條命令給機(jī)器人,它會(huì)加載basic_chat.aiml。當(dāng)我們沒(méi)寫這個(gè)文件的時(shí)候是不會(huì)工作的。這里是你可以放到basic_chat.aiml的內(nèi)容。我們會(huì)匹配兩個(gè)基本模式和響應(yīng)。




    
        HELLO
        
    
    
    
        WHAT ARE YOU
        
    
    
隨機(jī)回復(fù)

我們也可以加一些隨機(jī)回復(fù)。這條在它收到一個(gè)以“One time I"開(kāi)始的消息時(shí)會(huì)隨機(jī)回復(fù)。 *是一個(gè)占位符代表能匹配任何字符。


    ONE TIME I *
    
用現(xiàn)成的AIML文件

寫自己的AIML文件很有意思,但會(huì)是個(gè)很大的工作量。我想它需要大約一萬(wàn)的模式才能看起來(lái)真實(shí)一點(diǎn)。幸好,ALICE基金提供很多免費(fèi)的AIML文件??梢栽贏lice Bot網(wǎng)站看看AIML文件。那有個(gè)叫std-65-percent.xml文件包括了常規(guī)65%的場(chǎng)景。那也有一個(gè)可以讓你玩21點(diǎn)(BlackJack)的機(jī)器人。

寫Python

到目前為止,所有的東西都是AIML XML文件。這些是可以構(gòu)造機(jī)器人大腦的重要部分,但這些只是一些信息。機(jī)器人需要變活。你需要用一些語(yǔ)言來(lái)實(shí)現(xiàn)AIML規(guī)范,但一些好心人已經(jīng)用Python做了。

先用pip裝aiml包。

pip install aiml

記住aiml包只能在Python 2下用。 Python 3可以用GitHub上的Py3kAiml替代。

簡(jiǎn)單Python程序

這是我們能啟動(dòng)的最簡(jiǎn)單的程序。它建一個(gè)aiml對(duì)象,學(xué)習(xí)啟動(dòng)文件,并加載剩下的aiml文件。這之后,就可以聊天了,然后我們進(jìn)入一個(gè)無(wú)限循環(huán)并持續(xù)讓用戶輸入消息。你需要輸入一個(gè)機(jī)器人能識(shí)別的模式。模式識(shí)別依賴于你之前加載的AIML文件。

我們寫個(gè)多帶帶的啟動(dòng)文件,這樣我們可以不用動(dòng)程序源碼加載更多的aiml文件。我們可以在啟動(dòng)xml文件加更多的文件來(lái)學(xué)習(xí)。

import aiml

# Create the kernel and learn AIML files
kernel = aiml.Kernel()
kernel.learn("std-startup.xml")
kernel.respond("load aiml b")

# Press CTRL-C to break this loop
while True:
    print kernel.respond(raw_input("Enter your message >> "))
加速大腦啟動(dòng)

當(dāng)你有很多AIML文件,這需要學(xué)很長(zhǎng)時(shí)間。這就要靠機(jī)器人大腦文件了。在機(jī)器人學(xué)習(xí)了所有的AIML文件后并可以直接把大腦存到一個(gè)文件里,這樣在下次啟動(dòng)時(shí)就可以直接加速。

import aiml
import os

kernel = aiml.Kernel()

if os.path.isfile("bot_brain.brn"):
    kernel.bootstrap(brainFile = "bot_brain.brn")
else:
    kernel.bootstrap(learnFiles = "std-startup.xml", commands = "load aiml b")
    kernel.saveBrain("bot_brain.brn")

# kernel now ready for use
while True:
    print kernel.respond(raw_input("Enter your message >> "))
運(yùn)行中重載AIML

你可以在運(yùn)行時(shí)發(fā)重載消息給機(jī)器人來(lái)重載AIML文件。記住如果你使用了之前寫的大腦方法,重載不會(huì)節(jié)省剛對(duì)大腦做的改動(dòng)。你需要?jiǎng)h除大腦文件一遍下次啟動(dòng)時(shí)可以重建,或者你需要改代碼讓機(jī)器人在下次重載后的一個(gè)時(shí)間點(diǎn)來(lái)保存大腦??聪鹿?jié)寫Python命令給機(jī)器人。

load aiml b
加Python命令

如果你要給你的機(jī)器人加一些命令來(lái)運(yùn)行Python函數(shù),那你需要捕獲機(jī)器人的輸入信息并在發(fā)給kernel.respond()前處理它。上個(gè)例子我們從raw_input得到了用戶的輸入。我們可以從很多地方得到輸入。比如一個(gè)TCP socket,或一個(gè)語(yǔ)音轉(zhuǎn)文本的源。在它發(fā)給AIML前處理它。你需要在某些消息時(shí)跳過(guò)AIML。

while True:
    message = raw_input("Enter your message to the bot: ")
    if message == "quit":
        exit()
    elif message == "save":
        kernel.saveBrain("bot_brain.brn")
    else:
        bot_response = kernel.respond(message)
        # Do something with bot_response
會(huì)話和斷言

通過(guò)一個(gè)會(huì)話,AIML可以區(qū)分不同人的不同的對(duì)話。例如,如果一個(gè)人告訴機(jī)器人她的名字是Alice,另一個(gè)人告訴機(jī)器人他的名字是Bob,機(jī)器人可以區(qū)分他們。為了指定你在用哪個(gè)會(huì)話你可以傳給respond()第二個(gè)參數(shù)。

sessionId = 12345
kernel.respond(raw_input(">>>"), sessionId)

這樣每個(gè)客戶都有個(gè)性化的聊天,很好。你可以生成你自己的session id(會(huì)話id)并跟蹤他們。記住保存大腦文件并不會(huì)保存所有會(huì)話值。

sessionId = 12345

# Get session info as dictionary. Contains the input
# and output history as well as any predicates known
sessionData = kernel.getSessionData(sessionId)

# Each session ID needs to be a unique value
# The predicate name is the name of something/someone
# that the bot knows about in your session with the bot
# The bot might know you as "Billy" and that your "dog" is named "Brandy"
kernel.setPredicate("dog", "Brandy", sessionId)
clients_dogs_name = kernel.getPredicate("dog", sessionId)

kernel.setBotPredicate("hometown", "127.0.0.1")
bot_hometown = kernel.getBotPredicate("hometown")

在AIML中我們可以在模板中設(shè)置response來(lái)設(shè)置斷言。


   
      MY DOGS NAME IS *
        
     
   
      WHAT IS MY DOGS NAME
        
     

用上面的AIML你可以告訴機(jī)器人:

My dogs name is Max

然后機(jī)器人會(huì)回復(fù):

That is interesting that you have a dog named Max

如果你問(wèn):

What is my dogs name?

機(jī)器人會(huì)回答:

Your dog"s name is Max.
更多資料

AIML Tag Reference Table

原文:http://www.devdungeon.com/con...


本文來(lái)自微信平臺(tái)「麥芽面包」
微信公眾號(hào)「darkjune_think」轉(zhuǎn)載請(qǐng)注明。
微信掃一掃關(guān)注公眾號(hào)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38306.html

相關(guān)文章

  • 超贊!快來(lái)Python搭建你AI老婆吧!

    摘要:夏天太熱,又不想出門,就讓我們用的來(lái)搭建屬于自己的可以對(duì)話的老婆吧本文擬使用的開(kāi)發(fā)語(yǔ)言實(shí)現(xiàn)類似于的平臺(tái)的小娜,或者是下的的。 夏天太熱,又不想出門,就讓我們用的Python來(lái)搭建屬于自己的?可以對(duì)話的AI老婆吧?   本文擬使用Python的開(kāi)發(fā)語(yǔ)言實(shí)現(xiàn)類似于的WIndows平臺(tái)的小娜,或者是IOS下的Siri的。最終達(dá)到人機(jī)對(duì)話的效果。 showImg(https://segment...

    Tychio 評(píng)論0 收藏0
  • 來(lái) DIY 個(gè)機(jī)器人 - 收藏集 - 掘金

    摘要:能不能省掉這些煩瑣的步驟,讓開(kāi)發(fā)人員自己完成呢現(xiàn)在好了,你可以用和把聊天機(jī)器人接入微信工具資源掘金今晚看了個(gè)電影,回得有點(diǎn)遲。 小花貓-網(wǎng)頁(yè)聊天機(jī)器人 - 前端 - 掘金 基于圖靈機(jī)器人API的網(wǎng)頁(yè)聊天機(jī)器人,輸入二維碼+你要說(shuō)的話有驚喜哦~~~(菜單中的功能尚未開(kāi)發(fā)完成,玩玩聊天功能就好了~)代碼開(kāi)源在https://github.com/ColorfulCa... 了~... (英...

    mrli2016 評(píng)論0 收藏0
  • 聊天機(jī)器人與AliceAIML

    摘要:聊天機(jī)器人從世紀(jì)年代起相繼出現(xiàn)愛(ài)情玩偶等,其中曾被認(rèn)為是最聰明的機(jī)器人。顯然現(xiàn)有的聊天機(jī)器人沒(méi)有一個(gè)可以達(dá)到這個(gè)標(biāo)準(zhǔn)。 聊天機(jī)器人從20世紀(jì)80年代起相繼出現(xiàn):TalkBot、Elbot、eLise、Alice、Laylahbot、愛(ài)情玩偶等,其中Alice曾被認(rèn)為是最聰明的機(jī)器人。 1991年,美國(guó)科學(xué)家兼慈善家休·勒布納設(shè)立人工智能年度比賽——勒布納獎(jiǎng):金獎(jiǎng)為在音視頻中都要讓人無(wú)法...

    ningwang 評(píng)論0 收藏0
  • chatbot:基于 AIML PHP 聊天機(jī)器人

    摘要:基于的聊天天機(jī)器人本文章中講介紹用實(shí)現(xiàn)的一個(gè)小聊天機(jī)器人程序,用到了操作相關(guān)的知識(shí)和數(shù)據(jù)庫(kù),可以用來(lái)學(xué)習(xí)。關(guān)于數(shù)據(jù)庫(kù)存儲(chǔ)日志的表是存儲(chǔ)和的有關(guān)屬性的表相當(dāng)于我們聊天機(jī)器人的腦袋,幫我們記住一些屬性。 基于AIML的PHP聊天天機(jī)器人 本文章中講介紹用PHP實(shí)現(xiàn)的一個(gè)小聊天機(jī)器人程序,用到了php操作dom相關(guān)的知識(shí)和mysql數(shù)據(jù)庫(kù),可以用來(lái)學(xué)習(xí)。代碼可以從https://github...

    MycLambert 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<