Skip to Main Content

ANTswers Library Chatbot


Email this link:

Subject Guide

Profile Photo
Danielle Kane
Contact:
Computational Research Librarian Geographic Information Systems (GIS)
Office: Science Library 226
Phone: 949-824-2024
EMail: kaned@uci.edu

About ANTswers

The ANTswers project started in 2013 and took a year to implement, the bulk of that time was taken up by creating all of the code needed to answer questions about the library.  A library programmer handled the installation of Program-O on the server, created a back-end system for reviewing chat transcripts and keeping statistics.  The Emerging Technologies Librarian now the Computational Research Librarian managed the project and focused on creating the .aiml code needed to support the chatbot.  This librarian still serves as the botmaster and is responsible for reviewing chatlogs, updating the code, and working with our library IT to make any needed updates. This project could not have been completed without the support of our library IT and library staff!

Program-O

ANTswers currently utilizes Program-O (https://program-o.com/) a PHP MySQL AIML Chatbot which is hosted on a library server.  Since Program-O is currently at end-of-life,  has been archived  for now, and will not actively monitored, improved or fixed new options are being investigated.

Natural Language Processing (NLP)

Natural language processing is a subfield of linguistics, computer science, and artificial intelligence concerned with the interactions between computers and human language, in particular how to program computers to process and analyze large amounts of natural language data. Wikipedia

Artifical Intelligence Markup Language (AIML)

ANTswers Cheat Sheet

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template>My name is ANTswers.</template>
</category>
<category></category>: Categories in AIML form the fundamental unit of knowledge.

<pattern></pattern>: A pattern is a string of characters intended to match one or more user inputs.

<template></template>: A template specifies the response to a matched pattern. A template may be as simple as some literal text, include variables, and/or urls.

<category>
  <pattern>WHAT IS YOUR NAME</pattern>
  <template><srai>NAME</srai></template>
</category>

<srai></srai>: SRAI is a recursive element and will continue until the chatbot reaches a final category. Basically, a category can call other categories to make your code easier to manage. It is useful if there are a number of ways to ask a questions but they can all be mapped to the same answer

<category>
  <pattern>I WANT INFORMATION ON *</pattern>
  <template>Did you want articles or books on *? Say: "articles" or "books".</template>
</category>

Wildcards: We use an asterisk * in the pattern to capture the user's input. This symbol in AIML is known as a wildcard.

<category>
  <pattern>* ACCESS ONLINE RESOURCES</pattern>
  <template>Do you need to know how to find them or how to access to the VPN - to use them when 
  off-campus? Say Find or VPN.</template>
</category>

<category>
   <pattern>FIND</pattern>
   <that>Do you need to know how to find them or access to the VPN_</that>
   <template>All of our online resources can be found in our catalog Library Search.</template>
</category>

<that></that>: a <that> Tag is used in AIML to set up responses based on the context of the original questions.  It's a way to ask the chatter a follow-up question. 

<category>
  <pattern>ONE ON ONE HELP</pattern>
  <template>Library services that provide one on one help can be found on our 
  <a href=" https://www.lib.uci.edu/ask-librarian-reference-services" target="_blank">Ask a Librarian</a> 
  page.</template>
</category>

URLS

<category>
  <pattern>I NEED JOURNAL ARTICLES ON *</pattern>
  <template><think><set name="topic"><star /></set><set name="sourcetype">articles</set></think>
  <sr /></template>
</category>

<topic>: Tag is used in AIML to store a context so that later conversation can be done based on that context. Usually, <topic> tag is used in Yes/No type conversation. It helps AIML to search categories written within the context of the topic.

File Structure

Type of File Example # of ANTswers Files
Conversation Files C_A_01.aiml 26
Library Files lib_borrowing fines_01.aiml 23
Ready Reference rr_science_01.aiml 6
Subject Files s_anthropology_01.aiml 67
Bot Files b_profile_01.aiml 3
Book Recommendations bANTerbot_biography_01.aiml 29