US20050102065A1 - Method and system for programming virtual robots using a template - Google Patents
Method and system for programming virtual robots using a template Download PDFInfo
- Publication number
- US20050102065A1 US20050102065A1 US10/705,208 US70520803A US2005102065A1 US 20050102065 A1 US20050102065 A1 US 20050102065A1 US 70520803 A US70520803 A US 70520803A US 2005102065 A1 US2005102065 A1 US 2005102065A1
- Authority
- US
- United States
- Prior art keywords
- information
- rules
- template
- retrieving
- signifier
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
- G06N5/025—Extracting rules from data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Definitions
- the present invention is directed to a method and system for the use of virtual robots (“Bots”) to autonomously process requests. More particularly, this invention is directed to a method and system for the mass customization of Bots by administrators having no specialized knowledge or experience in the art.
- Bots virtual robots
- structured data data maintained in a database, file, or other source of structured and/or tagged data
- structured data data maintained in a database, file, or other source of structured and/or tagged data
- “virtual robots” or “Bots” are software programs that interact and/or communicate with users (human, machine, or otherwise) and take actions or make responses according to input from these users.
- Bot refers to any program which interacts with a user in some fashion and should not be assumed to refer only to physically embodied robots.
- Input refers to any description of a situation the Bot may encounter; although the most common inputs are textual inputs from users, inputs can be actions taken by users, external circumstances, or even events internal to the Bot such as an internal alarm clock.
- a common use of a Bot is as an interface to a web site where the administrator of that site (the “administrator”) has programmed the Bot to answer simple inquiries (the “input”) that are typically asked by visitors to the site.
- the Bot finds a pattern, consisting of text and/or code, that best matches the input, and then takes the action that it is programmed to take in connection with that pattern (the “response”).
- the response can take the form of a text string that contains the information sought by the user (which text string can be transmitted to the user in text form, “read” by a text-to-speech engine, played back to the user as a wave file, or otherwise transmitted to the user in a comprehensible form) or the response can be any other action of which a program is capable, for example, opening a web page, turning a circuit on or off, initiating or ending a program, and the like.
- the Bot be scripted to anticipate the inputs that it is likely to receive and the situations that it is likely to encounter. Because users may ask questions or otherwise create inputs in a wide variety of different ways, a large variety of patterns are required to comprehensively anticipate the variety of inputs that the Bot may receive. This complexity is greatly increased by the number of different ways a user may create any particular input. For example, if a user wants to know the name of the president of the Administrator's company, the user may input a text string reading “Who is your President?”, “What's the President's name?”, or even “Who's the top dog at AdminCo.?”
- Bots have been scripted manually, by having one or more human scripters write patterns for the Bot and tie those patterns to appropriate responses.
- Such human scripting although usually necessary, has a number of drawbacks.
- scripting is time-consuming.
- a typical Bot may contain thousands of possible patterns and responses, all of which need to be scripted.
- the list of patterns and responses is usually incomplete. It is almost impossible for the scripters to comprehensively cover all possible patterns for a large body of information and desired responses.
- there are many opportunities for misspellings or other errors The greatest part of the time, expense, and difficulty of creating a Bot, therefore, is in the process of scripting it. Additionally, as the information changes or is added to over time, the time, expense, and difficulty of maintaining the patterns and responses that refer to the information are very substantial as well.
- Scripting heretofore has been done in some form of code, either complex or simple, and has always required some level of aptitude and training. Furthermore, it takes a great deal of experience to successfully anticipate the questions that may be asked in any situation, making that task unsuited for lay people or lower pay grade workers.
- the present invention meets these objectives by providing a method whereby an administrator with no special skills or knowledge can input information into a template.
- the information is manipulated by an editor to create a wide range of rules which are provided to an engine together with other rules of a background nature (if desired).
- the rules enable the engine to provide responses to a wide range of inputs without any further programming or action on the part of the administrator.
- the information will be saved and can be changed or edited later by the administrator.
- the method according to the present invention includes inputting and saving the information, inserting the information into rules, and editing the information.
- FIG. 1 is a schematic drawing of an operating environment of the present invention
- FIG. 2 . 1 is a flow chart of the processes used by an engine of the present invention
- FIG. 2 . 2 is a flow chart of the processes used by a preprocess input component of an engine of the present invention
- FIG. 3 . 1 is a schematic drawing of a script and associated component parts of the present invention
- FIG. 3 . 2 is a flow chart of an input recognizer component of a script of the present invention
- FIG. 4 . 1 is a flow chart of a statement validator of the present invention
- FIG. 4 . 2 is a flow chart of another statement validator of the present invention.
- FIG. 4 . 3 is a flow chart of yet another statement validator of the present invention.
- FIG. 4 . 4 is a flow chart of yet another statement validator of the present invention.
- FIG. 5 . 1 is a flow chart of a logic layer component of a script of the present invention
- FIG. 5 . 2 is a flow chart of a response layer component of a script of the present invention
- FIG. 6 . 1 is a schematic drawing of a template of the present invention
- FIGS. 6 . 2 - 6 . 4 is a flow chart of the processes used by an information input & save component of the present invention
- FIG. 7 . 1 is a flow chart of the processes used by an insert information into rules component of the present invention
- FIG. 7 . 2 is a flow chart of the processes used by an edit information component of the present invention.
- FIG. 8 is a schematic drawing of a script storage of the present invention.
- FIGS. 9 . 1 - 9 . 3 are flow charts of the processes used by a get information component of the present invention.
- FIG. 1 an operating environment of the present invention is depicted.
- the environment can be characterized generally into three sections: a front end section 120 , a Bot processor section 140 , and an administration section 160 .
- the front end section 120 is generally an environment in which a user 101 interacts with a Bot connection interface 104 , possibly via a user interface 102 that may be connected to the Bot connection interface 104 via a network 103 .
- the user interface 102 can be anything capable of receiving human or machine language input, including, without limitation, a computer, a Personal Digital Assistant (PDA), a telephone, or a pager.
- PDA Personal Digital Assistant
- the user interface 102 will also typically have some form of client software 110 installed to provide a text box, buttons, or other method for the entry of user 101 inputs and some method for displaying intelligible responses from the Bot.
- the network 103 can be any system capable of transmitting such input over any distance, including, without limitation, a local area network (LAN), the Internet, a “wifi” (wireless fidelity), cellular or other wireless data connection, a virtual private network (VPN), or simply a hard wired telephone system.
- LAN local area network
- Wifi wireless fidelity
- VPN virtual private network
- the user 101 can also simply act directly upon the Bot connection interface 104 . In such circumstances (as well as in circumstances such as telephony where the user input will not support client software 110 ), client software 110 will usually be resident in the Bot connection interface 104 to facilitate user 101 interaction.
- client software 110 will usually be resident in the Bot connection interface 104 to facilitate user 101 interaction. It will be appreciated that many other means of connection to the Bot processor section 140 are well known to those skilled in the art and that the present invention should not be limited to any particular aspects of the general operating environment as disclosed herein.
- the user 101 connects to a site where the user interface 102 includes client software 110 .
- the advantage for the site developer is that the user 101 may have a help or information request that is easily handled via a Bot using the client software 110 . It is not uncommon to find sites having a list of FAQs (Frequently Asked Questions) which serve the purpose of handling very low level user concerns and questions. However, where there are a substantial number of FAQ's, pointing and clicking through web pages becomes an inefficient method of finding the required information, as does searching with a conventional search engine. Bots provide a more efficient method of obtaining information and of handling more advanced questions or interactions with the site.
- FAQs frequently Asked Questions
- the Bot connection interface 104 consists of hardware, an operating system, and any application software necessary to support a Bot engine 210 and enable the Bot engine 210 to receive inputs and send responses in a chosen communications mode.
- Necessary application software in the Bot connection interface 104 may include an email application, an instant messaging application, an internet relay chat (IRC) application, voice recognition software, or other applications, as necessary, to support the chosen mode or modes of communication between the Bot engine 210 and the user 101 .
- the client software 110 along with structured data 105 and script storage 106 , may be resident on the Bot connection interface 104 , although these may also be hosted on a remote computer and made available to the Bot engine 210 via a network 103 or other connection.
- the Bot engine 210 receives the inputs, processes the inputs, and generates responses.
- a two way communications dialogue occurs between the user 101 and the Bot engine 210 in that the user 101 may ask questions, make declarative statements, and perform other normal communications patterns that typify modes of human communications.
- “communications” is intended to be a broad concept. Indeed, suitable communications may be in the form of written or spoken language, graphics, URL's, or the like that may be passed to and from a user and an automatic interface program, such as the present invention.
- the Bot engine 210 accepts the inputs generated by the user 101 and generates responses by processing the inputs according to a script or scripts 310 that are stored in the script storage 106 .
- the scripts 310 contain rules 311 and are typically created at the administration section 160 as necessary or appropriate for the specific use to which the Bot will be put. For example, if the site using the Bot engine 210 is a site for a reseller of personal computers, then the scripts 310 should be designed to handle questions and discussions concerning personal computers and their peripherals. Thus, the administration section 160 will generate the scripts 310 such that the scripts 310 will guide the discussion concerning many computer-related topics.
- the scripts 310 are then stored for use by the Bot engine 210 , or, alternatively, the scripts 310 may be compiled by a compiler and the compiled code incorporated into an engine (see, for example, U.S. Pat. No. 6,532,401).
- the administration section 160 consists of an administrator 108 , an administrator interface 109 , and an editor 111 .
- the administrator 108 is the human being who creates the scripts 310 that govern the behavior of the Bot engine 210 .
- this human being accomplishes this task through the use of the administrator interface 109 that has a text box or boxes or other entry points for the input of patterns, as well as a response or responses associated with that input.
- the administrator interface 109 may also provide various tools to facilitate the process of inputting the patterns in an organized and efficient way.
- the editor 111 takes the patterns provided by the administrator 108 and associates them with the appropriate response or responses.
- the administrator interface 109 and the editor 111 may be created as a single unit or may be designed to reside in separate computers. It will be appreciated by those skilled in the art that the scripts 310 can be written by human administrators or by automated or partially automated script creation tools and that the present invention should not be limited to scripts written by humans or otherwise.
- FIG. 1 gives a general description of various operating environments in which Bots may exist, it will be appreciated that many other operating environments are obvious to those skilled in the art and that the scope of the present invention should not be so limited to the exemplary descriptions as given above.
- FIG. 2 . 1 provides a detailed depiction of the processes used by the Bot engine 210 according to the present invention.
- step 211 inputs are brought to the Bot engine 210 via the Bot connection interface 104 , as shown FIG. 1 .
- the Bot engine 210 takes the input in step 211 and then, typically, but not necessarily, preprocesses the input to some degree to enable recognition and added functionality in step 220 . Examples of some typical functions that may be contained in the preprocessing of input in step 220 are detailed below.
- the input is then taken to an input recognizer component 320 of each rule 311 in the script 310 , where it is determined for each rule 311 whether the input is recognized, step 212 .
- Step 212 is repeated for each rule 311 , for so long as the input is not recognized.
- the process continues at step 213 to the next layer of the rule 311 , which is either a response layer (or routine) 340 or a logic layer 330 . Details of the workings of the input recognizer 320 , the logic layer 330 , and the response layer 340 are provided below in connection with FIGS. 3 . 2 , 5 . 1 , and 5 . 2 .
- FIG. 2 . 2 provides a detailed depiction of the processes used by the preprocess input step 220 , if utilized, of the Bot engine 210 according to the present invention.
- the functions contained in the preprocess input step 220 can vary greatly among different Bot designs, depending upon the overall strategy employed by the designer.
- the preprocess input step 220 is composed of processes that are intended to either: (i) standardize the inputs in some regard in order to reduce the complexity of the input faced by the engine or (ii) extract some level of structure or meaning from the input and embody this as code so that the Bot engine 210 can manipulate or manage it.
- Examples of the first purpose include a remove punctuation process 222 , a spell check process 223 , an expand contractions process 224 , and a standardize case 225 process.
- Examples of the second purpose include a lexical analysis process 226 , a semantic analysis process 227 , and other translation processes 228 .
- the preprocess input step 220 begins by taking the input in step 221 and then proceeding to remove punctuation in step 222 . Removing the punctuation from a text string removes the ambiguity created by the fact that people punctuate their sentences differently and that some people forget to punctuate at all.
- the input is spell checked at step 223 so that spelling errors can be removed, further minimizing text variation due to error or variant usage by the user 101 .
- the input is further standardized so that the Bot engine 210 can recognize contracted words, for example, “what's” as being identical to its constituent parts “what is”, further reducing the complexity of the inputs that the Bot engine 210 must be able to recognize.
- the next step 225 standardizes case, allowing the Bot engine 210 to recognize, for example, “the”, “The”, and “THE” as being identical, and removing as a variable the scheme of capitalization that may have been employed by the user 101 .
- lexical analysis might parse or partition the input to determine those text strings that are synonymous (at least for the administrator's purposes) with other text strings, for example, “I want”, “I need”, and “Give me”. Typically these text strings would be replaced with a text or code string that stands in for them in the input, allowing a single rule 311 to recognize an input phrased in any of these different ways.
- step 227 is useful in identifying parts of the sentence, for example, the subject of the sentence, the object of the verb, or the referent of a pronoun.
- this step can be useful for pattern recognition and/or for maintaining context in a “conversation” between the user 101 and the Bot.
- the input is passed through other translations in step 228 , where the other translations are any other processes whereby strings are added to or substituted for portions of the input in order to add functionality to the Bot.
- These processes may include language translation, substitutions of machine language for natural language, or other methodologies.
- FIG. 3 . 1 depicts the structure of an embodiment of a script 310 and its component parts, suitable for the purposes of the present invention.
- the script 310 contains one or more rules 311 that are in turn composed of an input recognizer 320 and one or more response layers 340 .
- Some rules 311 may also contain a logic layer 330 , enabling them to fire one or more responses of those that are available. The detailed processes of each of these components are described in more detail below.
- the rules 311 can be ordered, grouped, or sorted in order to enhance the speed or accuracy of the Bot engine 210 and that the present invention should not be limited to any particular method or strategy of ordering, grouping, or sorting the rules 311 .
- the steps of the input recognizer 320 are depicted in more detail in FIG. 3 . 2 .
- the first step 321 in input recognition is typically the matching of the preprocessed input to a pattern contained in a set of pattern matches of the input recognizer 320 .
- a pattern is a coded text string that represents a set of strings.
- a string matches a pattern if the string is in the set that the pattern represents.
- Pattern matching may be accomplished by, for example, regular expressions.
- the Bot engine 210 will continue to search for a match in other rules 311 . If a pattern match is found, for most Bot engines 210 , the rule 311 will then go into effect.
- the administrator 108 has the option of creating one or more statement (input) validators 410 a - d involving the querying of the structured data 105 which, if true, will result in the successful recognition of the input in step 324 and the effectiveness of the rule 311 , and which if false, will provide for the non-recognition of the input in step 322 by the input recognizer 320 , with the result that the Bot engine 210 will continue to seek for a matching pattern in other rules 311 .
- Each of these statement validators 410 a - d is tested in turn in step 323 , for so long as they continue to be valid. If any statement validator 410 a - d is invalid, the input is not recognized in step 322 . If all are valid, the input is recognized in step 324 .
- statement validators 410 a - d there can be any number of statement validators 410 a - d that work with pattern matches 321 in the input recognizer 320 or none at all.
- the input is ultimately recognized 324 or not recognized 322 . If recognized 324 , the process continues to the next layer of the rule 311 , whether that is a response layer 340 that generates a response to be transmitted to the user or a logic layer 330 that chooses between the various responses to be used in the response layer 340 .
- a typical data flow for a response layer 340 simply involves getting the response in step 521 and sending it to the connection interface in step 526 .
- a response can typically consist of (i) text, (ii) code to be run in the user interface 102 , and/or (iii) code to be extracted and run locally before sending the response to the Bot connection interface 104 .
- the response may consist entirely of text, where this is appropriate.
- code allows for dynamic information to be added to the answer and is typically used for frequently changing information, such as the time, stock quotes, weather, or the like.
- the code is non-extractable and is sent to the Bot connection interface 104 in step 526 , to be sent to and run in the user interface 102 , bringing a web page, running a java applet, or taking some other action that brings the required information to the user 101 .
- the response is determined to contain extractable code in step 522 , the code is extracted in step 523 , and the code is run locally in step 524 , so that the dynamic information required is embedded in the response in step 525 before transmission to the Bot connection interface 104 in step 526 .
- a rule 311 can also be designed to employ a logic layer 330 as shown in FIG. 5 . 1 .
- the purpose of the logic layer 330 is neither input recognition 320 , nor response generation, but rather the choosing of an appropriate response upon recognition of an input. This is accomplished by the use of a logical function in step 511 .
- the logical function step 511 may result in a random choice of responses, choosing responses in rotation, or choosing the proper response after appeal to some outside piece of information 107 (for example, the time) or after querying the structured data 105 using simple queries and/or any of the statement validators 410 a - d described herein.
- the truth or falsity of the logical statement in step 414 a - d in the statement validator 410 a - d would result in a choice in step 511 between two or more different results (responses) in step 520 . It is important to distinguish between such a choice between results in step 511 , and the above-described function of the statement validator 410 a - d , so as to enable an input recognizer 320 to either recognize or not recognize an input.
- the present invention is principally located in the administration section 160 of the Bot, but posts information that may ultimately be held in the script storage 106 and/or in the structured data 105 of the Bot processor.
- the administrator interface 109 contains a template 610 for the input of information in step 620 a - c .
- the template 610 provides an opportunity for the administrator 108 to provide information in a standardized format. This is accomplished by a page, application, or other user interface containing fields 611 , for example, text boxes, check boxes, drop-down boxes, or the like, that are labeled or otherwise intended to elicit specific pieces of information from the administrator 108 .
- template 610 Many variations on the template 610 are possible, including, without limitation, providing a series of questions to be answered by the administrator 108 (e.g., “What is your company name?”, “What is your company address?”), providing the administrator 108 with tables to be filled in with relevant information (e.g., a corporate organization chart with names, titles, phone numbers, email addresses, or the like), and interviewing the administrator 108 via Bot or human interaction and then embodying the information in some form of template 610 or table.
- the process is initiated with the specific purpose of eliciting individual pieces of standardized information from the administrator 108 .
- the administrator 108 has provided the administrator interface 109 with individual pieces of information such as names, addresses, slogans, product descriptions, or the like, that are specific to the administrator's 108 company or entity.
- step 621 the editor 111 saves the information in step 622 so that it will not be lost.
- this can be done on manual command by the administrator 108 or automatically upon the occurrence of certain events, such as the passage of time or the closing of the template 610 .
- the information can be saved: (i) as part of the template 610 in step 623 , (ii) as structured data 105 in step 624 , or (iii) into the rules 311 at step 710 without any intermediate storage steps by directly inserting the information into the rules 311 .
- the information stored in the structured data 105 may be used solely to refresh the template 610
- the information stored in the rules 311 may be used to run the Bot engine 210 .
- the ability to save the information within the template at step 623 depends upon the structure and programming of the template 610 to possess such a storage capability.
- Storing the information as structured data 105 in step 624 involves saving the information within each of the fields 611 to a separate field or location within the structured data 105 .
- a more elaborate procedure is necessary, as is described in more detail immediately below.
- the process of inserting information into the rules 311 will now be described.
- the Bot engine 210 access the information from the structured data 105 or from the template 610 , depending on where the information is saved.
- the editor 111 obtains the rules 311 from script storage 106 in step 701 .
- the editor 111 may obtain all of the rules 311 in the script storage 106 , but in the preferred embodiment may include only those rules 311 contained in a template information script 310 a , as these are the only rules 311 that should be affected by the information.
- the editor 111 checks to see if the input recognizer 320 needs information in step 702 .
- the need for information may be signaled either by a specific tag or instruction embedded in a text string used by the input recognizer 320 or by the recognition by the editor 111 of a piece of code in the input recognizer 320 which calls for a specific piece of information (or by any such tagged text string, code, or similar instruction, that is by a “signifier”). If there is such a signifier, the editor 11 obtains the necessary information from a corresponding field in the template 610 in step 703 and inserts the information into the input recognizer 320 in step 704 . This continues at step 702 for all rules 311 until the process is done.
- the editor 11 checks to see if the response layer 340 needs information in step 708 , as signaled by a signifier (described above) in the response layer 340 . If there is such a signifier, the editor 11 obtains the necessary information in step 709 and inserts it into the response layer 340 in step 710 . This continues at step 708 for all rules 311 until the process is done. Finally, for each rule 311 , the editor 11 checks to see if the logic layer 330 , if present, needs information in step 705 , as signaled by a signifier (described above) in the logic layer 330 . If there is such a signifier, the editor 11 obtains the necessary information in step 706 and inserts it into the logic layer 330 in step 707 . This continues at step 705 for all rules 311 until the process is done at step 711 .
- each layer 330 , 340 is checked across all rules 311 before moving on to the next layer 330 , 340 . Variations in method are possible, such as checking all layers 330 , 340 in each rule 311 before moving on to the next rule 311 .
- step 720 the editor 111 obtains the information in step 721 from wherever it has been stored.
- the processes used to obtain information 910 a - c depend on how the information is stored.
- the information is automatically restored to the fields 611 or other points of data entry as a function of the template 610 .
- the editor 111 follows essentially the process 910 a .
- the editor 111 obtains instructions in step 911 a which indicate where the information for the field 611 is to be found.
- the editor 111 executes the instructions in step 912 a to obtain the information.
- the editor 111 sends the information to the appropriate field 611 in the template 610 in step 913 a .
- the editor 111 determines if there are more fields 611 for which to obtain information in step 914 a . If the answer is yes, the editor 311 repeats the process for each field 611 until there are no more fields 611 for which to obtain information. At this point, all of the fields 611 are filled with the appropriate information and the editor 111 is finished with the get information process.
- the process used has some variability as set in processes 910 a - c .
- the process 910 a (described above) may be used to obtain information from the rules 311 .
- the editor 111 obtains instructions in step 911 a as to where to find the information.
- the editor 111 executes the instructions to obtain the information in step 912 a from the appropriate rule 311 , and then sends the information to the field 611 in step 913 a.
- the processes of 910 b and 910 c may be used.
- the first step is to obtain the rules 311 in step 921 b , 921 c .
- the editor checks each rule 311 for a signifier in step 922 b , 922 c . If the rule 311 has a signifier, the editor 111 either executes instructions to obtain the information associated with that rule 311 in step 912 b or obtains tagged information contained in that rule 311 in step 931 c . In either instance, the information is then sent to the appropriate field in the template 610 in step 913 b , 913 c . The process is repeated until all of the rules 311 have been checked.
- the administrator 108 is free to use the input and save the information process 620 a - c , as discussed above, thus, effectively updating the information contained in the template 610 and anywhere else that the information has been saved.
- the present invention enables a person to successfully customize a Bot for an individual application where the person uses knowledge that can be given to the Bot by any lay person or lower-level employee. This results in several important advantages. Information can be inexpensively input, and fully effective rules formed, by administrators working at pay grades substantially below that of a skilled programmer. Cost is further reduced by the fact that little or no training is required to accomplish this task. Speed to completion is dramatically enhanced, as there is no actual scripting that needs to take place—it all takes place automatically upon completion. The opportunity for error is greatly reduced, and consistent effectiveness of the rules at responding to inputs is greatly enhanced, dramatically increasing overall quality. The invention also provides a way to easily and consistently create and manage a large number of similarly-tasked Bots.
Abstract
Disclosed is a method for processing input entered by a user and providing at least one response maintained by an administrator in a system for autonomously processing requests. A template is provided to the administrator, wherein the template includes at least one field to elicit specific information from the administrator. The information is received from the administrator into the template. The information is saved for use in providing the at least one response in reply to a request from a user. An apparatus for performing this method is also disclosed.
Description
- 1. Field of the Invention
- The present invention is directed to a method and system for the use of virtual robots (“Bots”) to autonomously process requests. More particularly, this invention is directed to a method and system for the mass customization of Bots by administrators having no specialized knowledge or experience in the art.
- 2. Description of Related Art
- For the purposes of the present invention, data maintained in a database, file, or other source of structured and/or tagged data is referred to herein as “structured data”. So called “virtual robots” (or “Bots”) are software programs that interact and/or communicate with users (human, machine, or otherwise) and take actions or make responses according to input from these users. “Bot” refers to any program which interacts with a user in some fashion and should not be assumed to refer only to physically embodied robots. “Input” refers to any description of a situation the Bot may encounter; although the most common inputs are textual inputs from users, inputs can be actions taken by users, external circumstances, or even events internal to the Bot such as an internal alarm clock.
- A common use of a Bot is as an interface to a web site where the administrator of that site (the “administrator”) has programmed the Bot to answer simple inquiries (the “input”) that are typically asked by visitors to the site. The Bot finds a pattern, consisting of text and/or code, that best matches the input, and then takes the action that it is programmed to take in connection with that pattern (the “response”). The response can take the form of a text string that contains the information sought by the user (which text string can be transmitted to the user in text form, “read” by a text-to-speech engine, played back to the user as a wave file, or otherwise transmitted to the user in a comprehensible form) or the response can be any other action of which a program is capable, for example, opening a web page, turning a circuit on or off, initiating or ending a program, and the like.
- It is desirable that the Bot be scripted to anticipate the inputs that it is likely to receive and the situations that it is likely to encounter. Because users may ask questions or otherwise create inputs in a wide variety of different ways, a large variety of patterns are required to comprehensively anticipate the variety of inputs that the Bot may receive. This complexity is greatly increased by the number of different ways a user may create any particular input. For example, if a user wants to know the name of the president of the Administrator's company, the user may input a text string reading “Who is your President?”, “What's the President's name?”, or even “Who's the top dog at AdminCo.?”
- Historically, Bots have been scripted manually, by having one or more human scripters write patterns for the Bot and tie those patterns to appropriate responses. Such human scripting, although usually necessary, has a number of drawbacks. First, scripting is time-consuming. A typical Bot may contain thousands of possible patterns and responses, all of which need to be scripted. Second, the list of patterns and responses is usually incomplete. It is almost impossible for the scripters to comprehensively cover all possible patterns for a large body of information and desired responses. Third, there are many opportunities for misspellings or other errors. The greatest part of the time, expense, and difficulty of creating a Bot, therefore, is in the process of scripting it. Additionally, as the information changes or is added to over time, the time, expense, and difficulty of maintaining the patterns and responses that refer to the information are very substantial as well.
- Scripting heretofore has been done in some form of code, either complex or simple, and has always required some level of aptitude and training. Furthermore, it takes a great deal of experience to successfully anticipate the questions that may be asked in any situation, making that task unsuited for lay people or lower pay grade workers.
- Thus, there is a need in the art to have a method of scripting a Bot which successfully customizes the Bot to an individual application using knowledge that can be given to the Bot by any lay person or lower-level employee.
- It is an object of the present invention to provide a method of creating Bots according to patterns (or text strings) that are written in a very high level language that closely resembles a human natural language and are intended to anticipate the inputs that may be received from users.
- It is a further object of the present invention to enable administrators with no specialized background, training, or expertise to enter information that will be incorporated into patterns and used by the Bot, thereby enabling the Bot to correctly respond to a multitude of different questions with the information the administrator provides.
- The present invention meets these objectives by providing a method whereby an administrator with no special skills or knowledge can input information into a template. The information is manipulated by an editor to create a wide range of rules which are provided to an engine together with other rules of a background nature (if desired). The rules enable the engine to provide responses to a wide range of inputs without any further programming or action on the part of the administrator. In addition, the information will be saved and can be changed or edited later by the administrator.
- The method according to the present invention includes inputting and saving the information, inserting the information into rules, and editing the information.
-
FIG. 1 is a schematic drawing of an operating environment of the present invention; -
FIG. 2 .1 is a flow chart of the processes used by an engine of the present invention; -
FIG. 2 .2 is a flow chart of the processes used by a preprocess input component of an engine of the present invention; -
FIG. 3 .1 is a schematic drawing of a script and associated component parts of the present invention; -
FIG. 3 .2 is a flow chart of an input recognizer component of a script of the present invention; -
FIG. 4 .1 is a flow chart of a statement validator of the present invention; -
FIG. 4 .2 is a flow chart of another statement validator of the present invention; -
FIG. 4 .3 is a flow chart of yet another statement validator of the present invention; -
FIG. 4 .4 is a flow chart of yet another statement validator of the present invention; -
FIG. 5 .1 is a flow chart of a logic layer component of a script of the present invention; -
FIG. 5 .2 is a flow chart of a response layer component of a script of the present invention; -
FIG. 6 .1 is a schematic drawing of a template of the present invention; -
FIGS. 6 .2-6.4 is a flow chart of the processes used by an information input & save component of the present invention; -
FIG. 7 .1 is a flow chart of the processes used by an insert information into rules component of the present invention; -
FIG. 7 .2 is a flow chart of the processes used by an edit information component of the present invention; -
FIG. 8 is a schematic drawing of a script storage of the present invention; and -
FIGS. 9 .1-9.3 are flow charts of the processes used by a get information component of the present invention. - A complete understanding of the present invention will be obtained from the following description when taken in connection with the accompanying drawing figures wherein like reference characters identify like elements throughout.
- The general architecture of the present invention will now be described. Referring to
FIG. 1 , an operating environment of the present invention is depicted. The environment can be characterized generally into three sections: afront end section 120, aBot processor section 140, and anadministration section 160. - The
front end section 120 is generally an environment in which auser 101 interacts with aBot connection interface 104, possibly via auser interface 102 that may be connected to theBot connection interface 104 via anetwork 103. Theuser interface 102 can be anything capable of receiving human or machine language input, including, without limitation, a computer, a Personal Digital Assistant (PDA), a telephone, or a pager. Theuser interface 102 will also typically have some form ofclient software 110 installed to provide a text box, buttons, or other method for the entry ofuser 101 inputs and some method for displaying intelligible responses from the Bot. Thenetwork 103 can be any system capable of transmitting such input over any distance, including, without limitation, a local area network (LAN), the Internet, a “wifi” (wireless fidelity), cellular or other wireless data connection, a virtual private network (VPN), or simply a hard wired telephone system. Theuser 101 can also simply act directly upon theBot connection interface 104. In such circumstances (as well as in circumstances such as telephony where the user input will not support client software 110),client software 110 will usually be resident in theBot connection interface 104 to facilitateuser 101 interaction. It will be appreciated that many other means of connection to theBot processor section 140 are well known to those skilled in the art and that the present invention should not be limited to any particular aspects of the general operating environment as disclosed herein. - In a common use of Bot technology, the
user 101 connects to a site where theuser interface 102 includesclient software 110. The advantage for the site developer is that theuser 101 may have a help or information request that is easily handled via a Bot using theclient software 110. It is not uncommon to find sites having a list of FAQs (Frequently Asked Questions) which serve the purpose of handling very low level user concerns and questions. However, where there are a substantial number of FAQ's, pointing and clicking through web pages becomes an inefficient method of finding the required information, as does searching with a conventional search engine. Bots provide a more efficient method of obtaining information and of handling more advanced questions or interactions with the site. - In the operating environment of this embodiment of the present invention, the
Bot connection interface 104 consists of hardware, an operating system, and any application software necessary to support aBot engine 210 and enable theBot engine 210 to receive inputs and send responses in a chosen communications mode. Necessary application software in theBot connection interface 104 may include an email application, an instant messaging application, an internet relay chat (IRC) application, voice recognition software, or other applications, as necessary, to support the chosen mode or modes of communication between theBot engine 210 and theuser 101. Theclient software 110, along withstructured data 105 andscript storage 106, may be resident on theBot connection interface 104, although these may also be hosted on a remote computer and made available to theBot engine 210 via anetwork 103 or other connection. - As the
user 101 sends inputs, theBot engine 210 receives the inputs, processes the inputs, and generates responses. Typically, where theuser 101 is human, a two way communications dialogue occurs between theuser 101 and theBot engine 210 in that theuser 101 may ask questions, make declarative statements, and perform other normal communications patterns that typify modes of human communications. For the purposes of the present invention, “communications” is intended to be a broad concept. Indeed, suitable communications may be in the form of written or spoken language, graphics, URL's, or the like that may be passed to and from a user and an automatic interface program, such as the present invention. - In turn, the
Bot engine 210 accepts the inputs generated by theuser 101 and generates responses by processing the inputs according to a script orscripts 310 that are stored in thescript storage 106. As will be discussed in greater detail in connection withFIGS. 3 .1 and 3.2, thescripts 310 containrules 311 and are typically created at theadministration section 160 as necessary or appropriate for the specific use to which the Bot will be put. For example, if the site using theBot engine 210 is a site for a reseller of personal computers, then thescripts 310 should be designed to handle questions and discussions concerning personal computers and their peripherals. Thus, theadministration section 160 will generate thescripts 310 such that thescripts 310 will guide the discussion concerning many computer-related topics. Thescripts 310 are then stored for use by theBot engine 210, or, alternatively, thescripts 310 may be compiled by a compiler and the compiled code incorporated into an engine (see, for example, U.S. Pat. No. 6,532,401). - The
administration section 160 consists of anadministrator 108, anadministrator interface 109, and aneditor 111. Theadministrator 108 is the human being who creates thescripts 310 that govern the behavior of theBot engine 210. Typically, this human being accomplishes this task through the use of theadministrator interface 109 that has a text box or boxes or other entry points for the input of patterns, as well as a response or responses associated with that input. Theadministrator interface 109 may also provide various tools to facilitate the process of inputting the patterns in an organized and efficient way. Theeditor 111 takes the patterns provided by theadministrator 108 and associates them with the appropriate response or responses. Theadministrator interface 109 and theeditor 111 may be created as a single unit or may be designed to reside in separate computers. It will be appreciated by those skilled in the art that thescripts 310 can be written by human administrators or by automated or partially automated script creation tools and that the present invention should not be limited to scripts written by humans or otherwise. - Although
FIG. 1 gives a general description of various operating environments in which Bots may exist, it will be appreciated that many other operating environments are obvious to those skilled in the art and that the scope of the present invention should not be so limited to the exemplary descriptions as given above. - The
Bot processor section 140 will now be described.FIG. 2 .1 provides a detailed depiction of the processes used by theBot engine 210 according to the present invention. Instep 211, inputs are brought to theBot engine 210 via theBot connection interface 104, as shownFIG. 1 . TheBot engine 210 takes the input instep 211 and then, typically, but not necessarily, preprocesses the input to some degree to enable recognition and added functionality instep 220. Examples of some typical functions that may be contained in the preprocessing of input instep 220 are detailed below. The input is then taken to aninput recognizer component 320 of eachrule 311 in thescript 310, where it is determined for eachrule 311 whether the input is recognized,step 212. Step 212 is repeated for eachrule 311, for so long as the input is not recognized. Once theinput recognizer component 320 of arule 311 recognizes an input instep 212, the process continues atstep 213 to the next layer of therule 311, which is either a response layer (or routine) 340 or alogic layer 330. Details of the workings of theinput recognizer 320, thelogic layer 330, and theresponse layer 340 are provided below in connection withFIGS. 3 .2, 5.1, and 5.2. - The preprocessing of input,
step 220, will now be described.FIG. 2 .2 provides a detailed depiction of the processes used by thepreprocess input step 220, if utilized, of theBot engine 210 according to the present invention. The functions contained in thepreprocess input step 220 can vary greatly among different Bot designs, depending upon the overall strategy employed by the designer. Typically thepreprocess input step 220 is composed of processes that are intended to either: (i) standardize the inputs in some regard in order to reduce the complexity of the input faced by the engine or (ii) extract some level of structure or meaning from the input and embody this as code so that theBot engine 210 can manipulate or manage it. Examples of the first purpose include aremove punctuation process 222, aspell check process 223, an expandcontractions process 224, and a standardizecase 225 process. Examples of the second purpose include alexical analysis process 226, asemantic analysis process 227, and other translation processes 228. - In the embodiment described herein, the
preprocess input step 220 begins by taking the input instep 221 and then proceeding to remove punctuation instep 222. Removing the punctuation from a text string removes the ambiguity created by the fact that people punctuate their sentences differently and that some people forget to punctuate at all. - Next the input is spell checked at
step 223 so that spelling errors can be removed, further minimizing text variation due to error or variant usage by theuser 101. - By proceeding to expand contractions in
step 224, the input is further standardized so that theBot engine 210 can recognize contracted words, for example, “what's” as being identical to its constituent parts “what is”, further reducing the complexity of the inputs that theBot engine 210 must be able to recognize. - The
next step 225 standardizes case, allowing theBot engine 210 to recognize, for example, “the”, “The”, and “THE” as being identical, and removing as a variable the scheme of capitalization that may have been employed by theuser 101. - The input is then passed to lexical analysis in
step 226, where processes relating to the meaning of words are performed. As an example, lexical analysis might parse or partition the input to determine those text strings that are synonymous (at least for the administrator's purposes) with other text strings, for example, “I want”, “I need”, and “Give me”. Typically these text strings would be replaced with a text or code string that stands in for them in the input, allowing asingle rule 311 to recognize an input phrased in any of these different ways. - Next the input goes through semantic analysis in
step 227, which is useful in identifying parts of the sentence, for example, the subject of the sentence, the object of the verb, or the referent of a pronoun. Depending upon the methodologies used, this step can be useful for pattern recognition and/or for maintaining context in a “conversation” between theuser 101 and the Bot. - Finally, the input is passed through other translations in
step 228, where the other translations are any other processes whereby strings are added to or substituted for portions of the input in order to add functionality to the Bot. These processes may include language translation, substitutions of machine language for natural language, or other methodologies. - Those skilled in the art will readily understand that some or all of the above exemplary processes might be included at this stage in various orders and configurations and that there are other processes of similar purpose that may be undertaken in a Bot suitable for the present invention. Similarly, some or all of these objectives may be achieved by incorporating the functionality into the rules used to recognize inputs.
- The recognition of input,
step 212, will now be described.FIG. 3 .1 depicts the structure of an embodiment of ascript 310 and its component parts, suitable for the purposes of the present invention. Thescript 310 contains one ormore rules 311 that are in turn composed of aninput recognizer 320 and one or more response layers 340. Somerules 311 may also contain alogic layer 330, enabling them to fire one or more responses of those that are available. The detailed processes of each of these components are described in more detail below. As those skilled in the art will readily understand, there are many different strategies and methods by which therules 311 can be ordered, grouped, or sorted in order to enhance the speed or accuracy of theBot engine 210 and that the present invention should not be limited to any particular method or strategy of ordering, grouping, or sorting therules 311. - The steps of the
input recognizer 320 are depicted in more detail inFIG. 3 .2. Thefirst step 321 in input recognition is typically the matching of the preprocessed input to a pattern contained in a set of pattern matches of theinput recognizer 320. A pattern is a coded text string that represents a set of strings. A string matches a pattern if the string is in the set that the pattern represents. Pattern matching may be accomplished by, for example, regular expressions. As those skilled in the art will also be aware, there are many different languages and protocols in which such pattern matchings are commonly carried out, including, without limitation, Perl, Java, PHP, and others, and that the present invention should not be limited by the use of any particular query, language, or protocol. If there is no match found in the pattern matches, the input will not be recognized and theBot engine 210 will continue to search for a match inother rules 311. If a pattern match is found, formost Bot engines 210, therule 311 will then go into effect. - The
administrator 108 has the option of creating one or more statement (input) validators 410 a-d involving the querying of the structureddata 105 which, if true, will result in the successful recognition of the input instep 324 and the effectiveness of therule 311, and which if false, will provide for the non-recognition of the input instep 322 by theinput recognizer 320, with the result that theBot engine 210 will continue to seek for a matching pattern inother rules 311. Each of these statement validators 410 a-d is tested in turn instep 323, for so long as they continue to be valid. If any statement validator 410 a-d is invalid, the input is not recognized instep 322. If all are valid, the input is recognized instep 324. - There can be any number of statement validators 410 a-d that work with pattern matches 321 in the
input recognizer 320 or none at all. Upon completion of pattern matches 321 andvalidation 323 of the statement validators 410 a-d, if any, contained in the input recognizer, the input is ultimately recognized 324 or not recognized 322. If recognized 324, the process continues to the next layer of therule 311, whether that is aresponse layer 340 that generates a response to be transmitted to the user or alogic layer 330 that chooses between the various responses to be used in theresponse layer 340. - Those skilled in the art will readily understand that the steps of the
input recognizer 320 might occur in various orders (or contemporaneously with each other) and configurations and that there are other processes of similar purpose that may be undertaken in a Bot suitable for the present invention. - The generation of responses will now be described. The next step in the execution of a
rule 311 following recognition of an input atstep 324 by theinput recognizer 320 is typically to go to a response layer 340 (FIG. 5 .2), the purpose of which is to obtain and prepare the appropriate response to the user's input. A typical data flow for aresponse layer 340 simply involves getting the response instep 521 and sending it to the connection interface instep 526. A response can typically consist of (i) text, (ii) code to be run in theuser interface 102, and/or (iii) code to be extracted and run locally before sending the response to theBot connection interface 104. The response may consist entirely of text, where this is appropriate. However, more complexity and functionality can be provided by adding code to the response. The use of code allows for dynamic information to be added to the answer and is typically used for frequently changing information, such as the time, stock quotes, weather, or the like. Most typically, the code is non-extractable and is sent to theBot connection interface 104 instep 526, to be sent to and run in theuser interface 102, bringing a web page, running a java applet, or taking some other action that brings the required information to theuser 101. Where it is desirable to embed the information provided by running the code in the response, the response is determined to contain extractable code instep 522, the code is extracted instep 523, and the code is run locally instep 524, so that the dynamic information required is embedded in the response instep 525 before transmission to theBot connection interface 104 instep 526. - A
rule 311 can also be designed to employ alogic layer 330 as shown inFIG. 5 .1. The purpose of thelogic layer 330 is neitherinput recognition 320, nor response generation, but rather the choosing of an appropriate response upon recognition of an input. This is accomplished by the use of a logical function instep 511. Thelogical function step 511 may result in a random choice of responses, choosing responses in rotation, or choosing the proper response after appeal to some outside piece of information 107 (for example, the time) or after querying the structureddata 105 using simple queries and/or any of the statement validators 410 a-d described herein. In this case, the truth or falsity of the logical statement in step 414 a-d in the statement validator 410 a-d would result in a choice instep 511 between two or more different results (responses) instep 520. It is important to distinguish between such a choice between results instep 511, and the above-described function of the statement validator 410 a-d, so as to enable aninput recognizer 320 to either recognize or not recognize an input. - The present invention is principally located in the
administration section 160 of the Bot, but posts information that may ultimately be held in thescript storage 106 and/or in the structureddata 105 of the Bot processor. - The process of inputting information 620 a-c will now be described. Referring to
FIGS. 6 .1-6.4, theadministrator interface 109 contains atemplate 610 for the input of information in step 620 a-c. Thetemplate 610 provides an opportunity for theadministrator 108 to provide information in a standardized format. This is accomplished by a page, application, or other userinterface containing fields 611, for example, text boxes, check boxes, drop-down boxes, or the like, that are labeled or otherwise intended to elicit specific pieces of information from theadministrator 108. Many variations on thetemplate 610 are possible, including, without limitation, providing a series of questions to be answered by the administrator 108 (e.g., “What is your company name?”, “What is your company address?”), providing theadministrator 108 with tables to be filled in with relevant information (e.g., a corporate organization chart with names, titles, phone numbers, email addresses, or the like), and interviewing theadministrator 108 via Bot or human interaction and then embodying the information in some form oftemplate 610 or table. The process is initiated with the specific purpose of eliciting individual pieces of standardized information from theadministrator 108. At the end of the process, theadministrator 108 has provided theadministrator interface 109 with individual pieces of information such as names, addresses, slogans, product descriptions, or the like, that are specific to the administrator's 108 company or entity. - Referring again to
FIGS. 6 .1-6.4, the process of saving information 620 a-c will now be described. Following the input of information instep 621, theeditor 111 saves the information instep 622 so that it will not be lost. As those skilled in the art will know, this can be done on manual command by theadministrator 108 or automatically upon the occurrence of certain events, such as the passage of time or the closing of thetemplate 610. There are at least three places where the information can be saved. The information can be saved: (i) as part of thetemplate 610 instep 623, (ii) as structureddata 105 instep 624, or (iii) into therules 311 atstep 710 without any intermediate storage steps by directly inserting the information into therules 311. For some embodiments it is desirable to store the information in more than one place, depending upon the purposes for which the information will be used. For example, the information stored in the structureddata 105 may be used solely to refresh thetemplate 610, while the information stored in therules 311 may be used to run theBot engine 210. - The ability to save the information within the template at
step 623 depends upon the structure and programming of thetemplate 610 to possess such a storage capability. Storing the information asstructured data 105 instep 624 involves saving the information within each of thefields 611 to a separate field or location within the structureddata 105. In order to save the information by inserting information into therules 311 atstep 710, a more elaborate procedure is necessary, as is described in more detail immediately below. - Referring to
FIG. 7 .1, the process of inserting information into therules 311 will now be described. For most embodiments of the invention, it is necessary to insert the information entered by theadministrator 108 into therules 311 instep 710 before theBot engine 210 will be able to access the information and use it to recognize and respond to inputs. However, it should be noted that it is also possible to have theBot engine 210 access the information from the structureddata 105 or from thetemplate 610, depending on where the information is saved. - Referring to
FIGS. 7 .1 and 8, first, theeditor 111 obtains therules 311 fromscript storage 106 instep 701. Theeditor 111 may obtain all of therules 311 in thescript storage 106, but in the preferred embodiment may include only thoserules 311 contained in atemplate information script 310 a, as these are theonly rules 311 that should be affected by the information. Next, for eachrule 311, theeditor 111 checks to see if theinput recognizer 320 needs information instep 702. The need for information may be signaled either by a specific tag or instruction embedded in a text string used by theinput recognizer 320 or by the recognition by theeditor 111 of a piece of code in theinput recognizer 320 which calls for a specific piece of information (or by any such tagged text string, code, or similar instruction, that is by a “signifier”). If there is such a signifier, the editor 11 obtains the necessary information from a corresponding field in thetemplate 610 instep 703 and inserts the information into theinput recognizer 320 instep 704. This continues atstep 702 for allrules 311 until the process is done. Similarly, for eachrule 311, the editor 11 checks to see if theresponse layer 340 needs information in step 708, as signaled by a signifier (described above) in theresponse layer 340. If there is such a signifier, the editor 11 obtains the necessary information instep 709 and inserts it into theresponse layer 340 instep 710. This continues at step 708 for allrules 311 until the process is done. Finally, for eachrule 311, the editor 11 checks to see if thelogic layer 330, if present, needs information instep 705, as signaled by a signifier (described above) in thelogic layer 330. If there is such a signifier, the editor 11 obtains the necessary information instep 706 and inserts it into thelogic layer 330 instep 707. This continues atstep 705 for allrules 311 until the process is done atstep 711. - In a preferred embodiment, each
layer rules 311 before moving on to thenext layer layers rule 311 before moving on to thenext rule 311. - Referring to
FIGS. 7 .2 and 9.1-9.3, the process of editing information will now be described. Once the information has been saved in the appropriate manner and, if desired, inserted into therules 311, it is still desirable that the information be easily updatable within thetemplate 610 instep 720. In order to achieve this, theeditor 111 obtains the information instep 721 from wherever it has been stored. The processes used to obtain information 910 a-c depend on how the information is stored. - If the information has been stored as part of the
template 610 itself, the information is automatically restored to thefields 611 or other points of data entry as a function of thetemplate 610. - If the information has been stored in the structured
data 105, theeditor 111 follows essentially theprocess 910 a. In this process, for eachfield 611 in thetemplate 610, theeditor 111 obtains instructions instep 911 a which indicate where the information for thefield 611 is to be found. Next, theeditor 111 executes the instructions instep 912 a to obtain the information. Theeditor 111 sends the information to theappropriate field 611 in thetemplate 610 instep 913 a. Theeditor 111 then determines if there aremore fields 611 for which to obtain information in step 914 a. If the answer is yes, theeditor 311 repeats the process for eachfield 611 until there are nomore fields 611 for which to obtain information. At this point, all of thefields 611 are filled with the appropriate information and theeditor 111 is finished with the get information process. - If the information has been stored by inserting the information into the
rules 311 instep 710, the process used has some variability as set in processes 910 a-c. Theprocess 910 a (described above) may be used to obtain information from therules 311. For each field in the template, theeditor 111 obtains instructions instep 911 a as to where to find the information. Theeditor 111 executes the instructions to obtain the information instep 912 a from theappropriate rule 311, and then sends the information to thefield 611 instep 913 a. - Alternatively, the processes of 910 b and 910 c may be used. The first step is to obtain the
rules 311 instep rule 311 for a signifier instep rule 311 has a signifier, theeditor 111 either executes instructions to obtain the information associated with thatrule 311 instep 912 b or obtains tagged information contained in thatrule 311 instep 931 c. In either instance, the information is then sent to the appropriate field in thetemplate 610 instep rules 311 have been checked. - Once the template has been repopulated with information by the process of obtaining information 910 a-c, the
administrator 108 is free to use the input and save the information process 620 a-c, as discussed above, thus, effectively updating the information contained in thetemplate 610 and anywhere else that the information has been saved. - The present invention enables a person to successfully customize a Bot for an individual application where the person uses knowledge that can be given to the Bot by any lay person or lower-level employee. This results in several important advantages. Information can be inexpensively input, and fully effective rules formed, by administrators working at pay grades substantially below that of a skilled programmer. Cost is further reduced by the fact that little or no training is required to accomplish this task. Speed to completion is dramatically enhanced, as there is no actual scripting that needs to take place—it all takes place automatically upon completion. The opportunity for error is greatly reduced, and consistent effectiveness of the rules at responding to inputs is greatly enhanced, dramatically increasing overall quality. The invention also provides a way to easily and consistently create and manage a large number of similarly-tasked Bots.
- It will be understood by those skilled in the art that while the foregoing description sets forth in detail preferred ordering of steps of the various processes, other ordering of the steps are contemplated by the present invention.
- It will be understood by those skilled in the art that while the foregoing description sets forth in detail preferred embodiments of the present invention, modifications, additions, and changes might be made thereto without departing from the spirit and scope of the invention.
Claims (40)
1. A method for maintaining at least one response by an administrator in a system for autonomously processing requests, comprising the steps of:
providing a template to the administrator, wherein the template includes at least one field to elicit information from the administrator,
receiving information from the administrator into the template, and
making the information accessible to a rules-based program for use in providing the at least one response in reply to a request from a user.
2. The method according to claim 1 , wherein the step of making the information accessible to the rules-based program saves the information as part of the template, as structured data, and/or into rules.
3. The method according to claim 2 , wherein the step of saving the information into rules includes the steps of:
retrieving rules,
for each rule retrieved, determining whether the rule needs information,
if the rule needs information, retrieving the information from a corresponding field in the template and inserting the information into the rule.
4. The method according to claim 3 , wherein the step of determining whether the rule needs information includes the steps of:
determining whether an input recognizer needs information,
if the input recognizer needs information, retrieving the information from a corresponding field in the template and inserting the information into the input recognizer.
5. The method according to claim 4 , wherein the step of determining whether the rule needs information includes the steps of:
determining whether a response layer needs information, and
if the response layer needs information, retrieving the information from a corresponding field in the template and inserting the information into the response layer.
6. The method according to claim 5 , wherein the step of determining whether the rule needs information includes the steps of:
determining whether a logic layer needs information, and
if the logic layer needs information, retrieving the information from a corresponding field in the template and inserting the information into the logic layer.
7. The method according to claim 4 , wherein the step of determining whether the input recognizer needs information, includes the step of identifying a signifier.
8. The method according to claim 5 , wherein the signifier is a tag in a text string.
9. The method according to claim 5 , wherein the signifier is an instruction embedded in a text string.
10. The method according to claim 5 , wherein the signifier is a code.
11. The method according to claim 3 , wherein the step of determining whether the rule needs information includes the steps of:
determining whether a response layer needs information, and
if the response layer needs information, retrieving the information from a corresponding field in the template and inserting the information into the response layer.
12. The method according to claim 11 , wherein the step of determining whether the response layer needs information, includes the step of identifying a signifier in the response layer.
13. The method according to claim 12 , wherein the signifier is a tag in a text string.
14. The method according to claim 12 , wherein the signifier is an instruction embedded in a text string.
15. The method according to claim 12 , wherein the signifier is a code.
16. The method according to claim 3 , wherein the step of determining whether the rule needs information includes the steps of:
determining whether a logic layer needs information, and
if the logic layer needs information, retrieving the information from a corresponding field in the template and inserting the information into the logic layer.
17. The method according to claim 16 , wherein the step of determining whether the logic layer needs information, includes the step of identifying a signifier in the logic layer.
18. The method according to claim 17 , wherein the signifier is a tag in a text string.
19. The method according to claim 17 , wherein the signifier is an instruction embedded in a text string.
20. The method according to claim 17 , wherein the signifier is a code.
21. The method according to claim 3 , wherein the step of retrieving rules retrieves all of the rules.
22. The method according to claim 3 , wherein the step of retrieving rules retrieves all of the rules in a template information script.
23. The method according to claim 1 , wherein the step of making the information accessible to the rules-based program is accomplished by receiving a manual command from a user.
24. The method according to claim 1 , wherein the step of making the information accessible to the rules-based program is accomplished automatically upon the occurrence of a predefined event.
25. The method according to claim 24 , wherein the predefined event is closing of the template.
26. The method according to claim 24 , wherein the predefined event is passage of a predetermined amount of time.
27. The method according to claim 24 , wherein the predefined event is activation of a save function by the administrator.
28. The method according to claim 1 , further including the step of enabling the administrator to edit the information.
29. The method according to claim 28 , wherein the step of enabling the administrator to edit the information includes the steps of:
retrieving the information,
posting the information in at least one appropriate field in the template,
receiving edited information from the administrator into the template, and
making the edited information accessible to the rules-based program for use in providing the at least one response in reply to a request from the user.
30. The method according to claim 29 , wherein:
the step of making the information accessible to the rules-based program saves the information as part of the template, and
the step of retrieving the information includes the step of restoring the information to the at least one field.
31. The method according to claim 29 , wherein:
the step of making the information accessible to the rules-based program saves the information as structured data, and
the step of retrieving the information includes the steps of, for at least one of the at least one field in the template:
retrieving instructions indicating where the information is stored, and
executing the instructions to retrieve the information.
32. The method according to claim 29 , wherein:
the step of making the information accessible to the rules-based program saves the information into rules, and
the step of retrieving the information includes the steps of, for at least one of the at least one field in the template:
retrieving instructions indicating where the information is stored, and
executing the instructions to retrieve the information.
33. The method according to claim 29 , wherein:
the step of making the information accessible to the rules-based program saves the information into rules, and
the step of retrieving the information includes the steps of, for each rule used:
determining whether the rule includes a signifier, and
if a signifier is included, executing instructions from the signifier to retrieve the information associated with the rule.
34. The method according to claim 29 , wherein:
the step of making the information accessible to the rules-based program saves the information into rules, and
the step of retrieving the information includes the steps of, for each rule used:
determining whether the rule includes a signifier, and
if a signifier is included, retrieving the information tagged in the rule.
35. A computer based system that processes inputs entered by a user and provides at least one response that is maintained by an administrator, comprising:
an interface configured to receive information from the administrator; and
an engine configured to make the information accessible to a rules-based program that provides the at least one response in reply to the inputs from the user.
36. The computer based system according to claim 35 , wherein the interface is a template including at least one field.
37. The computer based system according to claim 36 , wherein the information is saved in the template.
38. The computer based system according to claim 35 , further including structured data, wherein the information is saved in the structured data.
39. The computer based system according to claim 35 , further including a set of rules, wherein the information is saved in the set of rules.
40. The computer based system according to claim 35 , further including an editor adapted to access the information and enable the administrator to edit the information.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/705,208 US20050102065A1 (en) | 2003-11-10 | 2003-11-10 | Method and system for programming virtual robots using a template |
PCT/US2004/037259 WO2005048064A2 (en) | 2003-11-10 | 2004-11-09 | Programming virtual robots using template |
US13/848,906 US8930296B2 (en) | 2003-11-10 | 2013-03-22 | Method and system for programming virtual robots using a template |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/705,208 US20050102065A1 (en) | 2003-11-10 | 2003-11-10 | Method and system for programming virtual robots using a template |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/848,906 Continuation US8930296B2 (en) | 2003-11-10 | 2013-03-22 | Method and system for programming virtual robots using a template |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050102065A1 true US20050102065A1 (en) | 2005-05-12 |
Family
ID=34552308
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/705,208 Abandoned US20050102065A1 (en) | 2003-11-10 | 2003-11-10 | Method and system for programming virtual robots using a template |
US13/848,906 Expired - Lifetime US8930296B2 (en) | 2003-11-10 | 2013-03-22 | Method and system for programming virtual robots using a template |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/848,906 Expired - Lifetime US8930296B2 (en) | 2003-11-10 | 2013-03-22 | Method and system for programming virtual robots using a template |
Country Status (2)
Country | Link |
---|---|
US (2) | US20050102065A1 (en) |
WO (1) | WO2005048064A2 (en) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168480A1 (en) * | 2006-01-13 | 2007-07-19 | Microsoft Corporation | Interactive Robot Creation |
US20090100160A1 (en) * | 2007-10-12 | 2009-04-16 | International Business Machines Corporation | Data server administration using a chatbot |
US20130145261A1 (en) * | 2006-04-05 | 2013-06-06 | Research In Motion Limited | Handheld electronic device and method for performing optimized spell checking during text entry by providing a sequentially ordered spell-check algorithms |
US20160255186A1 (en) * | 2015-02-27 | 2016-09-01 | Samsung Eletrônica da Amazônia Ltda. | Method for communication between users and smart appliances |
WO2018190885A1 (en) | 2017-04-14 | 2018-10-18 | Facebook, Inc. | Techniques to automate bot creation for web pages |
US10853361B2 (en) | 2012-05-15 | 2020-12-01 | Microsoft Technology Licensing, Llc | Scenario based insights into structure data |
US20210220064A1 (en) * | 2018-05-18 | 2021-07-22 | Corindus, Inc. | Remote communications and control system for robotic interventional procedures |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3271837A4 (en) * | 2015-03-17 | 2018-08-01 | VM-Robot, Inc. | Web browsing robot system and method |
US10646994B2 (en) | 2017-04-25 | 2020-05-12 | At&T Intellectual Property I, L.P. | Robot virtualization leveraging Geo analytics and augmented reality |
US10733004B2 (en) | 2017-04-26 | 2020-08-04 | At&T Intellectual Property I, L.P. | Intelligent service on-demand robot virtualization |
US11416785B2 (en) * | 2018-12-04 | 2022-08-16 | International Business Machines Corporation | Automated interactive support |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870552A (en) * | 1995-03-28 | 1999-02-09 | America Online, Inc. | Method and apparatus for publishing hypermedia documents over wide area networks |
US5907837A (en) * | 1995-07-17 | 1999-05-25 | Microsoft Corporation | Information retrieval system in an on-line network including separate content and layout of published titles |
US5963940A (en) * | 1995-08-16 | 1999-10-05 | Syracuse University | Natural language information retrieval system and method |
US6173311B1 (en) * | 1997-02-13 | 2001-01-09 | Pointcast, Inc. | Apparatus, method and article of manufacture for servicing client requests on a network |
US20010054096A1 (en) * | 2000-05-17 | 2001-12-20 | Ikuya Morikawa | Communication setting management system |
US6366300B1 (en) * | 1997-03-11 | 2002-04-02 | Mitsubishi Denki Kabushiki Kaisha | Visual programming method and its system |
US6393474B1 (en) * | 1998-12-31 | 2002-05-21 | 3Com Corporation | Dynamic policy management apparatus and method using active network devices |
US6484149B1 (en) * | 1997-10-10 | 2002-11-19 | Microsoft Corporation | Systems and methods for viewing product information, and methods for generating web pages |
US20020178008A1 (en) * | 2001-04-24 | 2002-11-28 | Microsoft Corporation | Method and system for applying input mode bias |
US20030023573A1 (en) * | 2001-07-27 | 2003-01-30 | International Business Machines Corporation | Conflict-handling assimilator service for exchange of rules with merging |
US6529904B1 (en) * | 1998-05-28 | 2003-03-04 | Oracle Corp. | Deployment of snapshots with parameterized data description language strings |
US20030145281A1 (en) * | 2001-10-31 | 2003-07-31 | Metacyber.Net | Hypertext page generator for a computer memory resident rapid comprehension document for original source information, and method |
US20030163783A1 (en) * | 2001-04-16 | 2003-08-28 | Chikirivao Bill S. | System and method for developing rules utilized in a knowledge management system |
US20030220890A1 (en) * | 2000-07-28 | 2003-11-27 | Okude Shin?Apos;Ichiro | Object-oriented knowledge base system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5862325A (en) * | 1996-02-29 | 1999-01-19 | Intermind Corporation | Computer-based communication system and method using metadata defining a control structure |
US6259969B1 (en) | 1997-06-04 | 2001-07-10 | Nativeminds, Inc. | System and method for automatically verifying the performance of a virtual robot |
AU769742B2 (en) * | 1999-03-02 | 2004-02-05 | Amway Corp. | Electronic commerce transactions within a marketing system that may contain a membership buying opportunity |
US6834298B1 (en) * | 1999-09-21 | 2004-12-21 | Siemens Information And Communication Networks, Inc. | System and method for network auto-discovery and configuration |
US6775658B1 (en) * | 1999-12-21 | 2004-08-10 | Mci, Inc. | Notification by business rule trigger control |
US6532201B1 (en) * | 2000-04-03 | 2003-03-11 | Hewlett-Packard Company | Copy protection for optical discs |
US7172113B2 (en) * | 2002-09-16 | 2007-02-06 | Avery Dennison Corporation | System and method for creating a display card |
US20040181753A1 (en) * | 2003-03-10 | 2004-09-16 | Michaelides Phyllis J. | Generic software adapter |
-
2003
- 2003-11-10 US US10/705,208 patent/US20050102065A1/en not_active Abandoned
-
2004
- 2004-11-09 WO PCT/US2004/037259 patent/WO2005048064A2/en active Application Filing
-
2013
- 2013-03-22 US US13/848,906 patent/US8930296B2/en not_active Expired - Lifetime
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870552A (en) * | 1995-03-28 | 1999-02-09 | America Online, Inc. | Method and apparatus for publishing hypermedia documents over wide area networks |
US5907837A (en) * | 1995-07-17 | 1999-05-25 | Microsoft Corporation | Information retrieval system in an on-line network including separate content and layout of published titles |
US5963940A (en) * | 1995-08-16 | 1999-10-05 | Syracuse University | Natural language information retrieval system and method |
US6173311B1 (en) * | 1997-02-13 | 2001-01-09 | Pointcast, Inc. | Apparatus, method and article of manufacture for servicing client requests on a network |
US6366300B1 (en) * | 1997-03-11 | 2002-04-02 | Mitsubishi Denki Kabushiki Kaisha | Visual programming method and its system |
US6484149B1 (en) * | 1997-10-10 | 2002-11-19 | Microsoft Corporation | Systems and methods for viewing product information, and methods for generating web pages |
US6529904B1 (en) * | 1998-05-28 | 2003-03-04 | Oracle Corp. | Deployment of snapshots with parameterized data description language strings |
US6393474B1 (en) * | 1998-12-31 | 2002-05-21 | 3Com Corporation | Dynamic policy management apparatus and method using active network devices |
US20010054096A1 (en) * | 2000-05-17 | 2001-12-20 | Ikuya Morikawa | Communication setting management system |
US20030220890A1 (en) * | 2000-07-28 | 2003-11-27 | Okude Shin?Apos;Ichiro | Object-oriented knowledge base system |
US20030163783A1 (en) * | 2001-04-16 | 2003-08-28 | Chikirivao Bill S. | System and method for developing rules utilized in a knowledge management system |
US20020178008A1 (en) * | 2001-04-24 | 2002-11-28 | Microsoft Corporation | Method and system for applying input mode bias |
US20030023573A1 (en) * | 2001-07-27 | 2003-01-30 | International Business Machines Corporation | Conflict-handling assimilator service for exchange of rules with merging |
US20030145281A1 (en) * | 2001-10-31 | 2003-07-31 | Metacyber.Net | Hypertext page generator for a computer memory resident rapid comprehension document for original source information, and method |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070168480A1 (en) * | 2006-01-13 | 2007-07-19 | Microsoft Corporation | Interactive Robot Creation |
US20130145261A1 (en) * | 2006-04-05 | 2013-06-06 | Research In Motion Limited | Handheld electronic device and method for performing optimized spell checking during text entry by providing a sequentially ordered spell-check algorithms |
US9128922B2 (en) * | 2006-04-05 | 2015-09-08 | Blackberry Limited | Handheld electronic device and method for performing optimized spell checking during text entry by providing a sequentially ordered series of spell-check algorithms |
US20090100160A1 (en) * | 2007-10-12 | 2009-04-16 | International Business Machines Corporation | Data server administration using a chatbot |
US8250192B2 (en) | 2007-10-12 | 2012-08-21 | International Business Machines Corporation | Data server administration using a chatbot |
US10853361B2 (en) | 2012-05-15 | 2020-12-01 | Microsoft Technology Licensing, Llc | Scenario based insights into structure data |
US10003683B2 (en) * | 2015-02-27 | 2018-06-19 | Samsung Electrônica da Amazônia Ltda. | Method for communication between users and smart appliances |
US20160255186A1 (en) * | 2015-02-27 | 2016-09-01 | Samsung Eletrônica da Amazônia Ltda. | Method for communication between users and smart appliances |
WO2018190885A1 (en) | 2017-04-14 | 2018-10-18 | Facebook, Inc. | Techniques to automate bot creation for web pages |
US10333868B2 (en) * | 2017-04-14 | 2019-06-25 | Facebook, Inc. | Techniques to automate bot creation for web pages |
CN110785970A (en) * | 2017-04-14 | 2020-02-11 | 脸谱公司 | Techniques to automate robotic creation of web pages |
EP3610611A4 (en) * | 2017-04-14 | 2020-03-18 | Facebook Inc. | Techniques to automate bot creation for web pages |
US20210220064A1 (en) * | 2018-05-18 | 2021-07-22 | Corindus, Inc. | Remote communications and control system for robotic interventional procedures |
Also Published As
Publication number | Publication date |
---|---|
US8930296B2 (en) | 2015-01-06 |
US20140122625A1 (en) | 2014-05-01 |
WO2005048064A2 (en) | 2005-05-26 |
WO2005048064A3 (en) | 2006-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8930296B2 (en) | Method and system for programming virtual robots using a template | |
US7676519B2 (en) | Method and system for responding to requests relating to complex data maintained in a structured form | |
US10115056B2 (en) | Method and apparatus for responding to an inquiry | |
US7774292B2 (en) | System for conditional answering of requests | |
CA2484410C (en) | System for identifying paraphrases using machine translation techniques | |
CN100489841C (en) | Method and integrated development tool for building a natural language understanding application | |
US6460029B1 (en) | System for improving search text | |
US6601059B1 (en) | Computerized searching tool with spell checking | |
US6513031B1 (en) | System for improving search area selection | |
US20020133347A1 (en) | Method and apparatus for natural language dialog interface | |
Shawar et al. | A comparison between Alice and Elizabeth chatbot systems | |
US20180203833A1 (en) | Data collection for a new conversational dialogue system | |
EP1247174A2 (en) | Any-to-any component computing system | |
KR20200014047A (en) | Method, system and computer program for knowledge extension based on triple-semantic | |
Tarasiev et al. | Using of open-source technologies for the design and development of a speech processing system based on stemming methods | |
Bogatu et al. | Conversational Agent that Models a Historical Personality. | |
JP7044245B2 (en) | Dialogue system reinforcement device and computer program | |
Schmidtova | A chatbot for the banking domain | |
JP3506058B2 (en) | Semantic analysis method and apparatus, and recording medium storing semantic analysis program | |
Arunkumar et al. | Development of Chatbot Automation Application–DGCT CSE ALEXA | |
JP7349219B1 (en) | Information processing device, information processing method, and program | |
Lennartsson et al. | Chat Bots & Voice Control: Applications and limitations of combining Microsoft’s Azure Bot Service and Cognitive Services’ Speech API | |
Javed et al. | Comparative Analysis of Classical and Neural Networks based ChatBot’s Techniques. | |
CN113127619A (en) | Intelligent question answering method and device | |
Saraiva | A Conversational Interface for Webpage Code Generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CONVERSIVE, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCBRIDE, AARON JOSEPH;ROMERO, JEREMY;BRENNAN, CHRISTOPHER;AND OTHERS;REEL/FRAME:015053/0328;SIGNING DATES FROM 20040224 TO 20040227 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION |
|
AS | Assignment |
Owner name: AVAYA INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CONVERSIVE, INC.;REEL/FRAME:033774/0368 Effective date: 20121005 |