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

歡迎訪問 生活随笔!

生活随笔

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

ChatGpt

AIML框架标签详解

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

文章目錄

    • AIML框架--->分詞
      • 中文分詞庫-Jieba
      • 中英文分詞的方式
      • 全模式分詞
      • 精確模式分詞
      • 搜索模式
    • AIML框架--->基本標簽
      • 小試牛刀
      • 基本標簽
      • star標簽
      • random標簽
      • srai標簽
      • set和get標簽
      • that標簽
      • topic標簽
      • think標簽
      • condition標簽

前言:
之前有寫過關于 AIML初探的文章,
鏈接: https://blog.csdn.net/weixin_42250835/article/details/86766776

AIML框架—>分詞

中文分詞庫-Jieba

安裝Jieba中文分詞庫:pip install jieba / pip3 install jieba (全自動安裝)

目前 Jieba 是幾個主流的中文分詞庫之一,下面是幾個主流的分詞工具包

分詞工具 詞庫中詞的數量 最后更新時間

分詞工具詞庫中詞的數量最后更新時間
jieba16.6萬2015年
IK27.5萬2012年
mmseg15萬2014年
word64.2萬2015年

以上分詞工具、詞庫中詞的數量、最后更新時間 信息來自網絡搜集。

中英文分詞的方式

my name is Fiarter: my name is Fiarter
我的名字是張三: 我 的 名字 是 張三

以上的中英文分詞特點,我們可以看到中文分詞與英文分詞有很大的不同,對英文而言,一個單詞就是一個詞,而漢語是以字為基本的書寫單位,詞語之間沒有明顯的區分標記,需要人為的切分才可以達到中文分詞的目的。
在NLP中,分詞是一塊比較大的知識要點,自然語言處理漢語的時候,中文分詞技術是相當重要的,這里關于分詞技術不做太多深入的詳解,先帶大家初步了解分詞,形成一種簡單直觀的分詞感覺。

jieba 支持三種分詞模式:全模式、精確模式、搜索模式。
全模式:將句子中所有的可能成詞的詞語都掃描出來,速度非常快,但是不能解決歧義。
精確模式:試圖將句子最精確地切開,適合文本分析。
搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適用于搜索引擎分詞。

全模式分詞

使用全模式分詞需要添加 cut_all 參數,將其設置為 True,代碼如下:

import jieba #導入jieba#全模式 while True:my_in = input("") #input手動輸入的內容,賦值給變量 my_ins = jieba.cut(my_in,cut_all = True) #input手動輸入的內容,通過jieba.cut函數調用,匹配cut_all全模式z = " ".join(s) #使用空格把 jieba 分詞的結果區分開。" ":引號中就是普通的字符串print(z) #輸出 分詞 的結果#例句:早上吃了一個茶葉蛋 #分詞結果:早上 吃 了 一個 茶葉 茶葉蛋

精確模式分詞

精確模式分詞,默認情況下使用精確模式。同樣的也可使用cut()方法進行精確模式分詞的操作,cut()方法的參數改為 False 即可。代碼如下:

#精確模式while True:my_in = input("")#s = jieba.cut(my_in) #默認的情況下使用的就是精確模式s = jieba.cut(my_in,cut_all = False) z = " ".join(s) print(z) #例句:早上吃了一個茶葉蛋 #分詞結果:早上 吃 了 一個 茶葉蛋

搜索模式

使用搜索引擎模式分詞需要調用 cut_for_search() 方法,代碼如下:

#搜索模式(也叫‘搜索引擎模式’) while True:my_in = input("") s = jieba.cut_for_search(my_in) z = " ".join(s) print(z)#例句:早上吃了一個茶葉蛋 #分詞結果:早上 吃 了 一個 茶葉 茶葉蛋

AIML框架—>基本標簽

小試牛刀

“Project”下新建一個 aiml_main.py 文件,代碼如下:

import aiml import jiebakernel = aiml.Kernel() kernel.learn("std-startup.xml") kernel.respond("load aiml b")while True: print(kernel.respond(" ".join(jieba.cut_for_search(input("請輸入你的內容>>>")))))

new —> file —> std-startup.xml 創建 “std-startup.xml”文件,代碼如下:

<aiml version="1.0.1" encoding="UTF-8"><category><pattern>我 老 了</pattern> <!--加空格的原因是因為需要加入分詞--><template>好像是的</template>></category></aiml>


運行 aiml_main

基本標簽

<aiml> : 定義AIML文檔的開頭和結尾
<category> : 定義機器人的知識庫中的知識單元。
附:可以理解為所有的對話都由category組成
<pattern> : 定義模式以匹配用戶可以輸入到機器人中的模式
附:其實就是問題
<template> : 定義機器人對用戶輸入的響應
附:其實就是機器人對用戶的回答

舉例:

<aiml version="1.0.1" encoding="UTF-8"><category><pattern>HELLO</pattern><template>Hello User</template></category> </aiml>

star標簽

使用方法 <star index = “n”/> n 表示<pattern>標簽中用戶輸入中 * 的位置
附:這樣說可能不是很直觀,我們結合下面的代碼來看一下

<category><!--一個 蘋果是一種水果 嗎--><pattern>一個 * 是 一種 * 嗎</pattern><template>第一個參數值是<star index="1"/>,第二個參數值是<star index="2"></template> </category>


第一個 * 對應的是蘋果,第二個行對應的是水果。
附:也可以通過正則表達式這樣理解,* 匹配的是蘋果和水果。

random標簽

用于獲取隨機響應。此標記使AIML能夠針對相同的輸入做出不同的響應。
<random>標簽與<li>標簽一起使用,<li>標簽帶有不同的響應,這些響應將隨機傳遞給用戶。

代碼實例:

<category><pattern>我 想 你 了</pattern><template><random><li>我也想你了</li><li>不要臉,想我干啥</li><li>你真奔放啊,上來就說想人家</li><li>上旁邊想去</li></random></template> </category>

srai標簽

<srai>標簽是一個多功能標簽。 此標記使AIML能夠為同一模板定義不同的目標。
有很多時候,我們提出一系列的問題,但實際上只需要統一的回答,這個時候<srai>標簽就有用武之地了。

<srai>標簽實例:

<category><pattern>你好 *</pattern><template><srai>你好</srai></template> </category><category><pattern>你好</pattern><template><li>你好啊</li><li>很高興見到你</li><li>好巧啊,你也來啦</li><li>是不是又想我了</li></template> </category>

set和get標簽

<set>和<get>標簽用于處理AIML中的變量,變量可以是預定義變量或程序員創建的變量。

<set>標簽用于設置變量的值
示例: <set name = “variable-name”>variable-value</set>
<get>標簽用于從變量中獲取值
示例: <get name = “variable-name”></get>

<category><pattern>你好 我 是 *</pattern><template>你好啊<set name="username"><star/></set>很高興見到你</template> </category><category><pattern>晚安</pattern><template>美夢,<get name="username"/>跟你聊天很愉快,期待下一次!</template> </category>

that標簽

<that>template</that>: <that>標簽在AIML中用于根據上下文進行響應

實例:

<category><pattern>你 喜歡 哪個 明星 嗎</pattern><template>劉德華</template> </category><category><pattern>我 也 是</pattern><that>劉德華</that><template>太棒了,我也喜歡劉德華啊</template> </category><category><pattern>我 喜歡 * </pattern><that>劉德華</that><template>我也很喜歡他啊</template> </category>

topic標簽

<topic>標簽在AIML中用于存儲上下文,以便以后的對話可以基于該上下文完成。通常,
<topic>標簽用于 是/否類型對話。它有助于AIML搜索在主題上下文中編寫的類別
1、使用<set>標記定義主題

<template><set name="topic">topic-name</set> </template>

2、使用<topic>標記定義類別

<topic name="topic-name"><category>...</category> </topic>

實例:

<category><pattern>我們 討論一下 作業 吧</pattern><template>好啊,那就聊聊<set name="topic">作業</set></template> </category> <topic name="作業"> <category><pattern>好難 啊</pattern><template>作業真是難,我也這么想的,太難啦</template> </category> <category><pattern>作業 怎么 做</pattern><template>你說什么呢?我不太理解</template> </category>

think標簽

<think>:用于AIML存儲變量不通知用戶。

實例:

<category><pattern>我的 名字 是 *</pattern><template>你好,歡迎來到貪心學院!<think><set name="username1"></set></think></template> </category><category><pattern>不聊 了</pattern><template>好啊,<get name="username1"/>,那下次聊。</template> </category>

condition標簽

<condition>標簽類似于編程語言中的swich語句。也可以理解成多個 if else
<ondition name = “variable-name” value = “variable-value” />

實例:

<category><pattern>我 愛 *</pattern><template><think><set name="star"><star/></set></think>哇塞,你好<condition name="star"><li value="健身">帥啊</li><li value="讀書">有內涵啊</li><li>666啊</li><condition></template> </category>

總結

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

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