日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python对话机器人框架_长篇文讲解:使用Python AIML搭建聊天机器人的方法示例(收藏)...

發布時間:2023/12/31 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python对话机器人框架_长篇文讲解:使用Python AIML搭建聊天机器人的方法示例(收藏)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文內容主要介紹了使用Python AIML搭建聊天機器人的方法示例,我覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨我過來看看吧

AIML全名為Artificial Intelligence Markup Language(人工智能標記語言),是一種創建自然語言軟件代理的XML語言,是由RichardS. Wallace 博士和Alicebot開源軟件組織于1995-2000年間發明創造的。AIML是一種為了匹配模式和確定響應而進行規則定義的 XML 格式。

AIML的設計目標如下:

  • AIML應當為大眾所易學易會。
  • AIML應當使最小的概念得以編碼使之基于L.I.C.E支持一種刺激-響應學科系統組件。
  • AIML應當兼容XML。
  • 書寫AIML可處理程序文件應當簡單便捷。
  • AIML對象應當對人而言具有良好的可讀性和清晰度。
  • AIML的設計應當正式而簡潔。
  • AIML應當包含對其他語言的依附性。
  • 關于AIML詳細的初級讀物,可翻閱Alice Bot's AIML Primer。你同樣可以在AIML Wikipedia page了解更多 AIML 的內容以及它能夠做什么。借助 Python 的 AIML 包,我們很容易實現人工智能聊天機器人。

    1、安裝Python aiml庫

    pip install aiml

    2、獲取alice資源

    Python aiml安裝完成后在Python安裝目錄下的 Lib/site-packages/aiml下會有alice子目錄,這個是系統自帶的一個簡單的語料庫。

    3、Python下加載alice

    取得alice資源之后就可以直接利用Python aiml庫加載alice brain了。

    上述流程非常的簡單,接下來我們要自己從0開始創建自己的機器人。

    創建標準啟動文件

    標準的做法是,創建一個名為std-startup.xml的啟動文件,作為加載AIML文件的主入口點。在這個例子中,我們將創建一個基礎的文件,它匹配一個模式,并且返回一個相應。我們想要匹配模式load aiml b,然后讓它加載我們的aiml大腦作為響應。我們將在一步內創建basic_chat.aiml文件。

    創建一個AIML文件

    在上面,我們創建的AIML文件只能處理一個模式:load aiml b。當我們向機器人輸入那個命令時,它將會嘗試加載basic_chat.aiml。除非我們真的創建了它,否則無效。下面是你可以寫進basic_chat.aiml的內容。我們將匹配兩個基本的模式和響應。

    隨機響應

    你也可以像下面這樣添加隨機響應。它將在接受到一個以”One time I”開頭的消息的時候隨機響應。*是一個匹配任何東西的通配符。

    使用已存在的AIML文件

    編寫你自己的AIML文件是一個很有趣的事,但是它將花費很大的功夫。我覺得它需要大概10,000個模式才會開始變得真實起來。幸運的是,ALICE基金會提供了大量免費的AIML文件。在Alice Bot website上瀏覽AIML文件。

    測試新建的機器人

    目前為止,所有 XML 格式的 AIML 文件都準備好了。作為機器人大腦的組成部分,它們都很重要,不過目前它們只是信息(information)而已。機器人需要活過來。你可以借助任何語言定制 AIML。這里還是使用Python。

    這是我們可以開始的最簡單的程序。它創建了一個aiml對象,學習啟動文件,然后加載剩余的aiml文件。然后,它已經準備好聊天了,而我們進入了一個不斷提示用戶消息的無限循環。你將需要輸入一個機器人認識的模式。這個模式取決于你加載了哪些AIML文件。我們將啟動文件作為一個單獨的實體創建,這樣,我們之后可以向機器人添加更多的aiml文件,而不需要修改任何程序源碼。我們可以在啟動xml文件中添加更多的可供學習的文件。

    加速Brain加載

    當你開始擁有很多AIML文件時,它將花費很長的時間來學習。這就是brain文件從何而來。在機器人學習所有的AIML文件后,它可以直接將它的大腦保存到一個文件中,這個文件將會在后續的運行中動態加速加載時間。

    記住,如果你使用了上面寫的brain方法,在運行的時候加載并不會將新增改變保存到brain中。你將需要刪除brain文件以便于它在下一次啟動的時候重建,或者需要修改代碼,使得它在重新加載后的某個時間點保存brain。

    增加Python命令

    如果你想要為你的機器人提供一些特殊的運行Python函數的命令,那么,你應該為機器人捕獲輸入消息,然后在將它發送給mybot.respond()之前處理它。在上面的例子中,我們從raw_input中獲得了用戶的輸入。然而,我們可以從任何地方獲取輸入??赡苁且粋€TCP socket,或者是一個語音識別源碼。在它進入到AIML之前處理這個消息。你可能想要在某些特定的消息上跳過AIML處理。

    會話與斷言

    通過指定一個會話,AIML可以為不同的人剪裁不同的會話。例如,如果某個人告訴機器人,他的名字是Alice,而另一個人告訴機器人他的名字是Bob,機器人可以區分不同的人。為了指定你所使用的會話,將其作為第二個參數傳給respond()

    這對于為每一個客戶端定制個性化的對話是很有幫助的。你將必須以某種形式生成自己的會話ID,并且跟蹤它。注意,保存brain文件不會保存所有的會話值。

    在AIML中,我們可以使用模板中的set響應來設置斷言

    使用上面的AIML,你可以告訴機器人:

    My dogs name is Max

    而機器人會回答你:

    That is interesting that you have a dog named Max

    然后,如果你問機器人:

    What is my dogs name?

    機器人將會回答:

    Your dog's name is Max.

    aiml可以用來實現對話機器人,但是用于中文有以下問題:

    • 中文規則庫較少。規則庫相當于對話機器人的“大腦”,一般來說,規則庫越豐富,對話機器人的應對就更像人。目前英文的規則庫已經很豐富,涵蓋面很廣,而且是公開可獲取的。但公開的中文規則庫就基本沒有。
    • AIML解釋器對中文支持不好。實際上,Python下的Pyaiml模塊(解析器)已經能比較好的支持中文,但是也存在以下問題:英文單詞間一般都有空格或標點區分,因此具備一種“自然分詞”特性,由于中文輸入沒有以空格分隔的習慣,以上會在實踐中造成一些不便。比如要實現有/無空格的輸入匹配,就需要在規則庫中同時包含這兩種模式。

    解決方案:

    • 自己搭建語料庫(比如從字幕文件中獲取訓練)
    • 自己中文分詞工具(如jieba)

    相關開源項目:

    https://github.com/leo108/aliceCN https://github.com/messense/wechat-bothttps://github.com/Program-O/Program-O

    參考資料:

    http://www.w3ii.com/aiml/aiml_introduction.htmlhttp://www.devdungeon.com/content/ai-chat-bot-python-aimlhttp://www.alicebot.org/documentation/aiml-reference.html

    以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容關注小編敬請期待為你帶來更優質的相關文章。

    總結

    以上是生活随笔為你收集整理的python对话机器人框架_长篇文讲解:使用Python AIML搭建聊天机器人的方法示例(收藏)...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。