欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

聊天机器人1(C#,AIML)

程序员文章站 2022-07-14 22:09:41
...

本文章使用AIML实现聊天机器人

步骤:

1 新建C#控制台程序,工程名称为:ChatbotDemo

 

2  AIML下载地址:

http://sourceforge.net/projects/aimlbot/files/aimlbot/2.5/ConsoleBot2.5.zip/download 

备用地址:链接:https://pan.baidu.com/s/1sJhX6fcFfIau8xFkh5guMQ    提取码:usnm 
 

解压下载的文件,把里面的bin/Debug目录下的文件  config和AIMLbot.dll文件拷贝到C#工程的Debug目录下

聊天机器人1(C#,AIML)

 

拷贝到工程Debug目录下后的结果如下图:

聊天机器人1(C#,AIML)

3  在工程的Debug目录下新建一个文件夹Myaiml,如下图:

聊天机器人1(C#,AIML)

在Myaiml添加一个文本文件,编码格式最好为utf-8(注意,window系统中的记事本默认保存的格式不是utf-8,需要另存为保存,再选择保存格式),名称为my.aiml并编辑如下

<?xml version="1.0" encoding="utf-8"?>
  <aiml>

    <category>
      <pattern>Who are you</pattern>
      <template>
        zxy
      </template>
    </category>

    <category>
      <pattern>Hello</pattern>
      <template>
        Hi
      </template>
    </category>
    

 </aiml>

 

 

4  把刚才的Myaiml文件夹添加到配置文件中,打开工程Debug目录下config目录下的Settings.xml,并在Settings.xml做修改如下图:

聊天机器人1(C#,AIML)

 

5 把AIMLbot.dll引用添加到工程中

聊天机器人1(C#,AIML)

 

6  添加一个类,名称为Chatbot,并编辑如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AIMLbot;            //添加的命名空间

namespace ChatbotDemo
{
    internal class Chatbot
    {
        const string UserId = "zxy";
        private Bot AimlBot;
        private User myUser;
       
        public Chatbot() {
            AimlBot = new Bot();
            myUser = new User(UserId,AimlBot);
            Init();
        }

        private void Init() {
            AimlBot.loadSettings();
            AimlBot.isAcceptingUserInput = false;
            AimlBot.loadAIMLFromFiles();
            AimlBot.isAcceptingUserInput = true;
            
        }

        public string getOutput(string input) {
            Request request = new Request(input,myUser,AimlBot);
            Result res = AimlBot.Chat(request);
            return (res.Output);
        }
    }
}

 

 

7 编辑主程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChatbotDemo
{
    class Program
    {
        static Chatbot chatbot = new Chatbot();
        static void Main(string[] args)
        {
            string input=Console.ReadLine();
            while(input!="q"){
                string output = chatbot.getOutput(input);
                Console.WriteLine("Robot: "+output);
                input = Console.ReadLine();
            }

            Console.ReadKey();
        }
    }
}

 

运行如下图:

聊天机器人1(C#,AIML)

 

编辑my.aiml,可以自己添加语料,新添加如下:

<?xml version="1.0" encoding="utf-8"?>
  <aiml>

    <category>
      <pattern>Who are you</pattern>
      <template>
        zxy
      </template>
    </category>

    <category>
      <pattern>Hello</pattern>
      <template>
        Hi
      </template>
    </category>

     
    <!--新添加-->
    <category>
      <pattern>How old are you</pattern>
      <template>
        20
      </template>
    </category>

    <category>
      <pattern>How are you</pattern>
      <template>
        Fine,Thank you
      </template>
    </category>
    

 </aiml>

 

再一次运行如下图:

聊天机器人1(C#,AIML)

 

当然,再添加一个后缀名为aiml的语料文件(名称可以随便起),并添加语料,放到Myaiml文件夹内即可,其它不用修改,这样你新添加的语料文件也起作用了。