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 是几个主流的中文分词库之一,下面是几个主流的分词工具包

分词工具 词库中词的数量 最后更新时间

分词工具 词库中词的数量 最后更新时间
jieba 16.6万 2015年
IK 27.5万 2012年
mmseg 15万 2014年
word 64.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_in
	s = 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 jieba

kernel = 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框架标签详解_第1张图片
运行 aiml_main

AIML框架标签详解_第2张图片

基本标签

: 定义AIML文档的开头和结尾
: 定义机器人的知识库中的知识单元。
附:可以理解为所有的对话都由category组成
: 定义模式以匹配用户可以输入到机器人中的模式
附:其实就是问题