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

歡迎訪問 生活随笔!

生活随笔

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

ChatGpt

AIML元素详细说明

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

  • 目錄
    • 前言:
    • 1、簡介
    • 2、詳細說明
    • 總結:

目錄

前言:

智能客服客戶咨詢功能的實現主要依靠的就是Python的AIML庫,這里就先介紹下AIML。
詳細的使用教程可參考:https://github.com/andelf/PyAIML
目前大部分AIML只支持Py2.7版本并且不支持中文,即使有支持Py3且支持中文的版本,AIML的一些功能也有一些缺陷,但是黃天不負有心人,經過博主不斷的搜尋,最終找到了一款算是比較穩定的支持Py3版本的AIML。
地址:https://github.com/Shuang0420/aiml
后期博主會將自己的項目發布出來,到時候大家有興趣的也可以參考下。

1、簡介

AIML是Artificial Intelligence Markup Language的縮寫, 用于描述一類稱為AIML的對象,同時部分描述了計算機程序處理這些對象時的表現。AIML是XML語言(可擴展標記語言)的衍生。

AIML對象是由topic和category單元組成的,格式化或未格式化的數據均可。格式化的數據是由字符組成的,其中有的組成符號數據,有的構成AIML元素。AIML元素將應答數據封裝在文檔中。包含這些元素的字符數據有可能被AIML解釋器格式化,也有可能在之后的響應中處理。

aiml中的元素不區分大小寫

2、詳細說明

1、think元素

型如: <think><set name="topic">Me</set></think>

放置在template元素里面,表示一旦用戶的輸入匹配到該category時,再回復應答的同時,給一個變量賦值,這里也就是把Me記在腦子里,以后就可以用<get name=”topic”/>來取出先前記住的內容。

2、<star/>表示*
比如有一個匹配模式是<pattern>* 你 好 *<pattern>;這里pattern元素里的匹配模式是用*號表示任意匹配的,但在其他元素里面不能用*號,而用<star/>這個元素來表示。

3、<srai>元素
表示<srai>里面的話會被當作是用戶輸入,從新查找匹配模式,直到找到非<srai>定義的回復。例如:
<srai>我 是 <star/></srai>,那么機器人會把“我 是 *”當作是用戶輸入來從新查找匹配模式。(PS:srai不能很好的匹配中文)

4、<condition>元素(condition元素即為做選擇操作時使用的元素,類似于if-else語句。)
放在template元素里面,可以有多個condition元素,但不能嵌套(目前還不支持),有3種形式:

<condition name="name" value="value">你好 </condition> <condition name="name" contains="value"> 你好</condition> <condition name="name" exists="value">你好 </condition>

Name是預先定義的變量,第一種表示name變量的值如果和value相等,回復內容就包括”你好”;第二種表示name變量的值如果里面包含value這個字符串,回復內容就包括“你好”;第三種表示name變量的值如果存在value的值,回復內容就包括“你好”(這個什么意思還不明確)
舉個使用例子:

<category> <pattern>你 好</pattern> <template> 你好阿! <condition name="用戶名字" value="張三"> 你又來了阿:) </condition> </template> </category>

a. 情況一:如果事先用think設置了變量“用戶名字”,而且等于“張三”,那么用戶接受到的回復內容是:你好阿!你又來了阿;)
b.情況二:如果事先沒有定義或者變量“用戶名字”的值不等于“張三”,那么用戶接受到的回復內容是:你好阿!
寫法有一下幾種:

<category> <pattern>我 頭 發 的 顏 色 是 藍 色 *</pattern> <template>哇塞,你很 <condition name="用戶性別" value="女"> 漂亮阿!</condition> <condition name="用戶性別" value="男">英俊阿!</condition> </template> </category><category> <pattern>我 頭 發 的 顏 色 是 藍 色 *</pattern> <template>哇塞,你很 <condition> <li name="用戶性別" value="女">漂亮阿!</li> <li name="用戶性別" value="男">英俊阿!</li> </condition> </template> </category><category> <pattern>我 頭 發 的 顏 色 是 藍 色 *</pattern> <template>哇塞,你很 <condition name="用戶性別"> <li value="女"> 漂亮阿!</li> <li value="男"> 英俊阿!</li> </condition> </template> </category><category> <pattern>我 頭 發 的 顏 色 是 藍 色 *</pattern> <template>哇塞,你很 <condition> <li name="用戶性別" value="女"> 漂亮阿!</li> <li>好看!</li> </condition> </template> </category>

這里最后一個li元素表示默認的情況;即找不到condition相匹配時,就用默認的。

6、<gender>元素
替換性別以及代名詞,例如:

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

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

7、<get name=””名字/>
即得到name的值。

8、<gossip>元素
用來把改元素里面的內容保存到gossip.log文件里。

9、<if>元素
判斷元素,有以下形式:

<if name="topic" value="cars"></if> <if name="topic" contains="cars"></if> <if name="topic" exists="true"></if> 例子: <template> <if name="用戶名稱" exists="true"> 你的名字叫 <get name=”用戶名稱”/>. <else/> 你叫什么名字? </if> </template>

10、<input>表示用戶輸入

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

11、<learn filename=”xxx.aiml”>元素
表示讓機器人學習某個aiml文件。

12、<li></li>元素
可以在random元素或condition等元素當中使用,表示一個列表;
13、<pattern>表示匹配模式
里面的內容必須大寫,可以有星號* 或下劃線_,星號表示匹配所有,任意情況;下劃線的意義跟星號一樣,除了不能匹配字典里面Z后面的字母。

14、<person>和<person2>
第一個是把第一人稱轉換成第3人稱;第2個是把第一人稱轉成第2人稱。<person/>等于 <person><star/></person>

15、<random>隨機元素
一般和<li>一起使用,表示從列表里隨機取一個。

16、<sentence>元素用來格式化句子

比如: <sentence>this is some kind of sentence test.</sentence> 可以格式化成:This is some kind of sentence test.即把句子首字母大寫,還可以添加標點符號等。如: <category><pattern>你是誰</pattern><template><sentence>你好我是聊天機器人小君</sentence></template> </category>

17、<star/>表示星號
已經不推薦使用,只針對0。9版本,目前一般要加index屬性來使用,

例如:<star index="1"/>,看如下對話: 用戶:我的名字叫黑山! <pattern>* 名 字 叫 *</pattern> <template>呵呵,我知道了,你的名字叫<star index="2"/></template>

18、<system><system>元素
表示調用系統函數,

例如: <system>date</system>表示取系統當前日期 警告:使用這個元素要千萬小心,因為有可能使用戶運行你的系統命令。 19、<template>定義回復的模板。

20、<that>元素

表示先前機器人說的話,例如: <category> <pattern></pattern> <that>一 起 聊 聊 電 影 好 嗎 *</that> <template>那你喜歡什么電影那?</template> </category> 即:如果機器人先前問用戶“一起聊聊電影好嗎?”,而且現在用戶回答了“好”,那么匹配正確,回復內容為:“那你喜歡什么電影那?” 如果要取前面的前面機器人的話,可以用:<that index=”nx,ny”>,例如:<that index=”2,<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1”>表示取機器人倒數第2句的話,<that index=”2,1”>也等于<justbeforethat/>

21、<thatstar index=”n”>元素
先前第n個機器人說過的星號部分的話,

<thatstar/>等于<thatstar index="1"/>.看個例子: <category> <pattern>你好</pattern> <template> 計算機 的 型 號 是 什 么 </template> </category> <category> <pattern>*</pattern> <that>* 的 型 號 是 什 么</that> <template><star/> 這個型號是<thatstar/>里面 <random> <li>很好的商品</li> <li>很流行的商品</li> <li>很華麗的商品</li> <random>。 </template> </category> 對話場景: 用戶:你好 機器人:計算機 的 型 號 是 什 么 用戶:p4 機器人:p4這個型號是計算機里面很好的商品

22、<think>
記錄用戶輸入且里面的內容不回復給用戶。

例如: <category> <pattern>I AM FEMALE</pattern> <template>Thanks for telling me your gender. <think> <set namegender>female</set> </think> </template> </category> 這里把female這個值保存到gender這個變量里,且回復內容不包括female。

23、<Topic name=”film”>元素

用來設置主題,例如: <aiml> <topic name="功夫"><category> <pattern> phrase </pattern> <that> phrase </that> <template> phrase </template> </category> </topic> </aiml> 只有當前的topic系統變量是“功夫”時才會匹配到這里。

24、<topicstar index=”n”>元素用來得到先前倒數第n次談論的主題。

總結:

個人感覺在業務咨詢模塊,包括在整個智能客服的項目中,這個AIML知識庫即用以上的這些語法組成的知識庫的設計是最重要、最耗時的工作,因為如果把這個知識庫設計好,后面可以省去很多事情,但是如何才能設計好這個知識庫呢?這就是一個經驗問題了,你除了需要有相關的盡可能多的數據外,還得了解咨詢業務中那些問題是常見的,對于一些常見問題你需要怎么去設計這個知識庫去匹配等等,最終你還需要熟悉整個AIML的標簽以及如何將業務問題最優化的使用這些標簽來表示(畢竟真實的業務咨詢場景出現的問題會是各種各樣,一旦數據量大了之后,很有可能整個知識庫就會發生沖突,如輸入一個問題,有兩個匹配的答案,那么這時系統就會崩潰。。。后面就會有一大堆的問題接踵而來)。所以感覺這部分跟技術關聯不是特別大,更多的是和業務關聯比較大。

總結

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

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