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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

NLP - AIML

發布時間:2023/12/31 ChatGpt 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NLP - AIML 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 關于AIML
      • 關于 PYAIML
      • 安裝
    • AIML標簽
    • 元素示例
      • AIML
    • Topic 主題
      • Category 類別
    • Pattern 模式
    • Template 模板
    • 原子模板元素
      • Star(*)
      • Template-side that
      • Input
      • Thatstar
      • Topicstar
      • Get
      • Short-cut
      • System-defined predicates
    • 文本格式化元素
      • Text Format
    • 條件元素
    • 捕獲元素
    • 轉換元素
    • 隱藏元素
      • think
      • Learn
    • 擴展處理器元素
      • System
    • 使用 aiml 自帶文件
    • 創建配置文件
    • 相關資料


關于AIML

AIML:Artificial Intelligence Markup Language,人工智能標記語言

AIML是由 Alicebot自由軟件社區 和 Richard S. Wallace博士在1995-2000期間開發。
AIML用于創建或自定義Alicebot,這是一個基于 A.L.I.C.E(人工語言互聯網計算機實體)聊天框應用程序的免費軟件。


  • 官網:http://www.aiml.foundation
  • AIML docs:http://www.aiml.foundation/doc.html
  • Github:https://github.com/AIML-Foundation
  • PYPI:https://pypi.org/project/aiml/

關于 PYAIML

  • Pypi:https://pypi.org/project/PyAIML/
  • Github:https://github.com/andelf/PyAIML

安裝

(base) $ pip install aiml

AIML標簽

以下是AIML文檔中常用的重要標簽。

編號標簽描述
1<aiml>定義AIML文檔的開頭和結尾。
2<category>定義Alicebot知識庫中的知識單元。
3<pattern>定義模式以匹配用戶可以輸入到Alicebot的模式。
4<template>定義Alicebot對用戶輸入的響應。

我們將在AIML基礎標簽章節中討論這些標簽。
以下是一些其他廣泛使用的aiml標簽。 我們將在接下來的章節中詳細討論每個標簽。

編號標簽描述
1<star>用于匹配<pattern>標簽中的通配符*字符
2<srai>多用途標簽,用于調用/匹配其他類別。
3<random>使用<random>獲取隨機響應。
4<li>用于表示多個響應。
5<set>用于在AIML變量中設置值。
6<get>用于獲取存儲在AIML變量中的值。
7<that>在AIML中用于根據上下文進行響應。
8<topic>在AIML中用于存儲上下文,以便以后可以基于該上下文完成對話。
9<think>在AIML中用于存儲變量而不通知用戶。
10<condition>與編程語言中的switch語句類似。 它有助于ALICE響應匹配輸入。

  • 類別,代表一次會話
  • 模式,用來匹配對方的問題
  • 模板
  • 原子模板元素
  • <Template-side that>
  • <Input>
  • <Thatstar>
  • <Topicstar>
  • <Get>
  • <Short-cut>
  • <System-defined predicates>
  • <Text Format>
  • 條件元素
  • 捕獲元素
  • 轉換元素
  • 隱藏元素
  • 擴展處理器元素

元素示例


AIML

Aiml:定義在AIML文件的開頭和結尾。
它包含版本和編碼屬性的版本和編碼信息。


語法結構

<aiml:aiml version = number> <!-- Content: top-level-elements) --> </aiml:aiml>

案例

<?xml version="1.0" encoding="UTF-8"?> <aiml> <category><pattern>hi</pattern><template>你好</template> </category> </aiml>

Topic 主題

用于AIML存儲上下文,這樣以后可以談話基于這一 背景下進行。


語法規則

<!-- Category: top-level-element --> <aiml:topic name=aiml-simple-pattern-expression> <!-- Content: aiml:category+ --> </aiml:topic>

說明

  • 頂級元素:可以包含
  • 可選元素:一個AMIL對象必須包含0/1個主題元素
  • Name屬性:必須包括Name屬性
  • 獨立空間:完整的匹配路徑

案例

設置主題:只有當前的topic系統變量是“功夫” 時才會匹配到這里;

<aiml> <topic name="功夫"> <category> <pattern> phrase </pattern> <that> phrase </that> <template> phrase </template> </category> </topic> </aiml>

Category 類別


語法規則

<!-- Category: top-level-element --> < aiml:category><!-- Content: aim/-category-elements --> </aiml:category>

規則說明

  • 頂級元素或二級元素(包含于Topic)
  • 必選元素:一個AIML必須包含1-N個類別元素
  • 無屬性
  • 必須包含子標簽: <pattern> </pattern> 和 <template> </template>

  • Pattern 模式


    語法規則

    <!-- Category: aiml-category-elements -- < aiml:pattern> <!-- Content: aiml-pattern- expression -> </aiml:pattern>

    二、規則說明

  • 用戶表達內容;
  • 必選元素:一個類別必須包含1-N個模式元素;
  • 無屬性
  • 必須包含配對標簽:<template> </template>
  • 第一子元素:Category ;

  • Template 模板


    語法規則

    <!-- Category: aiml-category-elements --> < aiml:template><!-- Content: aim/-template-elements --> </aiml:template>

    規則說明

  • 機器回復內容;
  • 必選元素: -個類別必須包含1-N個模板元素;
  • 無屬性:
  • 必須伴隨配對標簽: < pattern> </ pattern>
  • 第二子元素: Category ;

  • 原子模板元素

    Star(*)

    替代Pattern中的第Index個“*”所表述的內容 1.1 語法規則


    語法規則

    <! - Category:aiml-template-elements - > <aiml:star index = single-integer-index />

    案例

    用戶:我的名字叫黑山!

    <pattern>* 名 字 叫 *</pattern> <template>呵呵,我知道了,你的名字叫<star index="2"/></template>

    注意事項 pattern元素里的匹配模式是用* 號表示任意匹配的,但在其他元素里面不能用* 號,而用<star/>這個元素來表示。


    Template-side that

    <!-- Category: aiml-template-elements --> < aiml:that index = (single- integer-indexl comma- separated-integer-pair) />

    案例

    對話場景:
    用戶:你好.
    機器人:計算機的型號是什么
    用戶: p4
    機器人: p4這個型號是計算機里面很好的商品

    <category><pattern>45R7F</pattern><template>計算機的型號是什么</template> </category><category><pattern>* </pattern><that>*的型號是什么</that><template> <star/>這個型號是<thatstar/>里面<random><li>很好的商品</li><li>很流行的商品</li><li>很華麗的商品</li><random>。</template> </category>

    Input

    Input:用戶輸入的內容
    語法規則:

    <!-- Category: aiml-template-elements --> <aiml:input index = (single-integer-index | comma-separated- integer-pair) />

    示例

    <input index="2"/>將輸出用戶倒數第2次的輸入,看如 下對話: 用戶:好阿 機器人:你也好,你叫什么名字? 用戶:我叫黑山 機器人:呵呵,你好黑山。 如果有aiml文件里有片斷: <category> <pattern>嘿 嘿</pattern> <template> <gossip>你剛才說:“<input index="2"/>”? </gossip> </template> </category> 如果這個時候用戶輸入“嘿嘿”,那么機器人將回復:你 剛才說:“我叫黑山”? Index屬性的數字表示倒數第幾句話,1:倒數第一句,2: 倒數第2句,依此類推。

    Thatstar

  • Thatstar:元素先前第n個機器人說過的星號部分 的話;

  • 語法規則:

    <!-- Category: aiml-template-elements --> <aiml:thatstar index = single-integer-index />

    案例

    對話場景:
    用戶:你好
    機器人:計算機 的 型 號 是 什 么
    用戶:p4 機器人:p4這個型號是計算機里面很好的商品

    <category> <pattern>你好</pattern> <template> 計算機 的 型 號 是 什 么 </template> </category> <category> <pattern>*</pattern> <that>* 的 型 號 是 什 么</that> <template><star/> 這個型號是<thatstar/>里面 <random> <li>很好的商品</li> <li>很流行的商品</li> <li>很華麗的商品</li> <random></template> </category>

    Topicstar

  • Topicstar:元素用來得到先前倒數第n次談論的主 題;
    5.1 語法規則:
  • <!-- Category: aiml-template-elements --> <aiml:topicstar index = single-integer-index/>

    案例


    Get

    Get:用于獲取存儲在AIML變量的值;
    6.1 語法規則:

    <!-- Category: aiml-template-elements --> <aiml:get name = aiml-predicate-name />


    Short-cut

    7.1 SR:
    語法規則:
    <! - Category:aiml-template-elements - > <AIML:SR />
    7.2 Person2:第一人稱替換為第二人稱
    語法規則:

    7.3 Person:第一人稱替換為第三人稱
    語法規則:

    <!-- Category: aiml-template-elements --> <aiml:person/>

    gender:替換性別以及代名詞
    語法規則


    案例

    將被替換成:He told her to take a hike,跟性 別有關的單詞都將被替換,中文怎么處理不是很清 楚。

    <gender>She told him to take a hike.</gender>

    System-defined predicates

    模板-原子模板元素

    7.1 Date:系統時間; 語法規則: <!-- Category: aiml-template-elements --> <aiml:date/> 7.2 ID:用戶ID 語法規則: <!-- Category: aiml-template-elements --> <aiml:id/> 7.3 Size:元素數量 語法規則: <!-- Category: aiml-template-elements --> <aiml:size/> 7.4 Version:版本 語法規則: <!-- Category: aiml-template-elements --> <aiml:version/>

    文本格式化元素


    Text Format

    模板-文本格式化元素

    1 Uppercase:元素轉換為大寫 語法規則: <!-- Category: aiml-template-elements --> <aiml:uppercase> <!-- Contents: aiml-template-elements --> </aiml:uppercase>2 Lowercase:元素轉換為小寫 語法規則: <!-- Category: aiml-template-elements --> <aiml:lowercase> <!-- Content: aiml-template-elements --> </aiml:lowercase>3 Formal:格式化,首字母大寫,標題樣式 語法規則: <!-- Category: aiml-template-elements --> <aiml:formal> <!-- Content: aiml-template-elements --> </aiml:formal>4. Sentence:格式化句子 語法規則: <!-- Category: aiml-template-elements --> <aiml:sentence> <!-- Content: aiml-template-elements --> </aiml:sentence> 典型示例: <sentence>this is some kind of sentence test.</sentence> This is some kind of sentence test. 典型案例: <upcase>xiaoxie</upcase> XIAOXIE

    條件元素

    1.Condition:條件語句 典型示例: <?xml version="1.0"encoding="UTF-8"?> <aiml version="1.0.1" encoding="UTF-8"?> <category><pattern> HOW ARE YOUFEELING TODAY </pattern> <template><think><setname="state"> happy</set></think> <condition name="state"value="happy">I am happy!</condition> <condition name="state"value="sad">I am sad!</condition></template> </category> </aiml> Human: How are you feeling today Robot: I am happy!2.Random:隨機選擇 語法結構: <!-- Category: aiml-template-elements --> <aiml:random> <!-- Contents: default-list-item+ --> </aiml:random>

    典型示例:


    捕獲元素

    .Set:設置變量取值
    語法結構:

    <!-- Category: aiml-template-elements --> <aiml:set name = aiml-predicate-name > <!-- Contents: aiml-template-elements --> </aiml:set>

    示例


    轉換元素

    1.Person2:人稱替換 <!-- Category: aiml-template-elements --> <aiml:person2> <!-- Contents: aiml-template-elements --> </aiml:person2>2.Person:人稱替換 <!-- Category: aiml-template-elements --> <aiml:person> <!-- Contents: aiml-template-elements --> </aiml:person>3.Gender:性別替換 <!-- Category: aiml-template-elements --> <aiml:gender> <!-- Contents: aiml-template-elements --> </aiml:gender>

    隱藏元素

    think

    記錄用戶輸入且里面的內容,不回復給用戶


    語法規則:

    <!-- Category: aiml-template-elements --> <aiml:think><!-- Contents: aim/- template -elements --> </aiml:think>

    案例:
    下面的示例:把female這個值保存到gender這個變量里,且回復內容不包括female

    <category><pattern>I AM FEMALE</pattern><template> Thanks for telling me your gender.<think><set name=gender>female</set></think></template> </category>

    Learn

    Learn:檢索資源,并加載
    語法規則:

    <!-- Category: aiml-template -elements -- <aiml:learn> <!-- Contents: uri-reference --> </aiml:leam>
    典型案例: <aiml version="1.0.1" encoding= "UTF-8"> <!-- std-startup.xml --> <!-- Category是-個自劫的AIML単元--> <category><!-- Pattern用來匹配用戸輸入--><!--如果用戸輸入"LOAD AIML B" --><pattern>LOAD AIML C</pattern><!-- Template是模式的喃虛--<!--這里學習一個aiml文件--><template><learn> basic. chat.aiml</learn><!--你可以在遠里添加更多的aiml文件--><!-- <learn> more_ aiml.aiml</learn>--><learn> tuling. aiml</learn></template> </category> </aiml>

    擴展處理器元素

    System

    語法結構

    <aiml:system> <!-- Contents: character data, aiml-template- elements --> </aiml:system>

    示例
    表示取系統當前日期


    使用 aiml 自帶文件

    import aimlimport os import sysdef get_module_dir(name):path = getattr(sys.modules[name], '__file__', None)print(path) # /Users/xx/opt/anaconda3/lib/python3.7/site-packages/aiml/__init__.pyif not path:raise AttributeError('module %s has not attribute __file__' % name)return os.path.dirname(os.path.abspath(path))def test():alice_path = get_module_dir('aiml') + '/botdata/alice'print(alice_path)#切換到語料庫所在工作目錄os.chdir(alice_path)alice = aiml.Kernel()alice.learn("startup.xml")alice.respond('LOAD ALICE')while True:print(alice.respond(input("Enter your message >> ")))if __name__ == '__main__':test1()

    效果

    Loading startup.xml...done (0.03 seconds) Loading xfind.aiml...done (0.00 seconds) Loading mp6.aiml...done (0.09 seconds) ... Loading mp5.aiml...done (0.14 seconds) Loading iu.aiml...done (0.00 seconds) Loading money.aiml...done (0.00 seconds) Loading reduction0.safe.aiml...done (0.21 seconds) Enter your message >> hi Hi there! Enter your message >> Enter your message >> this is my friend You don't say. Enter your message >> what is your name I am called Nameless.

    創建配置文件

    1、創建 startup.xml,作為加載AIML文件的主入口點
    我們想要匹配模式load aiml b,然后讓它加載我們的aiml大腦作為響應。我們將在一步內創建basic_chat.aiml文件。

    <aiml version="1.0.1" encoding="UTF-8"><!-- std-startup.xml --><!-- Category是一個自動的AIML單元 --><category><!-- Pattern用來匹配用戶輸入 --><!-- 如果用戶輸入 "LOAD AIML B" --><pattern>LOAD AIML B</pattern><!-- Template是模式的響應 --><!-- 這里學習一個aiml文件 --><template><learn>basic_chat.aiml</learn><!-- 你可以在這里添加更多的aiml文件 --><!--<learn>more_aiml.aiml</learn>--></template></category></aiml>

    2、創建 basic_chat.aiml

    上面 startup.xml 中只能處理一個模式: load aiml b。當我們向機器人輸入那個命令時,它將會嘗試加載basic_chat.aiml。如果沒有創建則無效。
    下面是 basic_chat.aiml 的內容,將匹配兩個基本的模式和響應。

    <aiml version="1.0.1" encoding="UTF-8"> <!-- basic_chat.aiml --> <aiml><category><pattern>HELLO</pattern><template>Well, hello!</template></category><category><pattern>WHAT ARE YOU</pattern><template>I'm Emily!</template></category></aiml>

    相關資料

    • Wiki: AIML
      https://en.wikipedia.org/wiki/AIML
    • https://blog.csdn.net/xvshu/article/details/80973649
    • https://segmentfault.com/a/1190000010216805
    • 易百教程:AIML
      https://www.yiibai.com/aiml/aiml_introduction.html
    • 使用Python AIML搭建聊天機器人的方法示例
      https://www.jb51.net/article/143395.htm

    總結

    以上是生活随笔為你收集整理的NLP - AIML的全部內容,希望文章能夠幫你解決所遇到的問題。

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