Computing systems are currently in wide use. Some computing systems include online chat functionality that allows users to engage in real time (or near real time) messaging with one another. Similarly, some computing systems include bots (sometimes referred to as web bots) which are applications that are run to perform tasks over a network (such as a wide area network). When a bot uses chat functionality, it is sometimes referred to as a chat bot.
Chat bots are sometimes used in computing systems in order to implement conversational interfaces. A user can interact with a conversational interface, using natural language, in order to perform a wide variety of different tasks. Some tasks include obtaining information (in which case the bot implements search functionality and returns information to a user), and performing a task (in which case the bot implements control functionality to control some physical control system or item). Chat bots can be used by users to perform a wide variety of other tasks as well.
As just a few examples, a chat bot can be used as a conversational interface to a data storage system, so that searches can be conducted, using natural language input queries. In another example, a chat bot may be used to implement an interface to a home automation system where different controllable subsystems in a home can be controlled by a user using conversational inputs to the chat bot. Chat bots can be used to make reservations, get driving directions, get weather information, and many other things.
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A chat bot computing system includes a bot controller and a natural language processor. The natural language processor receives a first textual input and accesses a knowledge model to identify concepts represented by the first textual input. An indication of the concepts is output to the bot controller which generates a response to the first textual input. The concepts output by the natural language processor are also fed back into the input to the natural language processor, as context information, when a second textual input is received. The natural language processor then identifies concepts represented in the second textual input, based on the second natural language, textual input and the context information.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
As discussed above, chat bots are often used to implement natural language interfaces to various different types of systems. Natural language inputs often contain ambiguity. This is because natural language conversation often assumes a level of shared context between the participants in the conversation.
By way of example, assume that the following conversation takes place:
Conversation Participant 1: “What is the weather in Seattle today?”
Participant 2: “Today it will be cloudy with a chance of rain.”
Participant 1: “How about tomorrow?”
Participant 2: “Tomorrow showers are likely.”
Participant 1: “And Ellensburg?”
Participant 2: “Tomorrow it will be sunny in Ellensburg.”
At the beginning of the conversation, the recipient of the first utterance had no context, but the first utterance (“What is the weather in Seattle today?”) was unambiguous. However, the second utterance (“How about tomorrow?”), taken by itself, is ambiguous.
When these types of natural language inputs are provided through a conversational interface implemented by a chat bot, the only way for the chat bot to have understood what the user meant by the second utterance would be for it to have known the context of that utterance. The context indicates what the participants in the conversation were talking about, before the second utterance was received. In the present example, those things would include “weather” “Seattle”, and “today”. The same is true in responding to the users third utterance (“And Ellensburg?”). The only way to accurately respond is to know that the content of the utterance was “weather” and “tomorrow” (which would override the context of “today”).
The present discussion thus proceeds with respect to identifying concepts in natural language inputs to a chat bot and carrying those concepts forward in the conversation, as context information, that is provided to augment subsequent utterances in the conversation.
User device 108 can be any of a wide variety of different types of devices. In the example shown in
By way of example,
In the example shown in
Thus, in one example, the chat message 112 is provided as a text input 126 from bot controller 122 to natural language processor 124. Natural language processor 124 (as will be described in greater detail below) identifies concepts in input text 126 and generates an output 128 that represents those concepts. The concepts, as is described in greater detail below, may be represented by unique identifiers.
The concepts in input text 126 (e.g., the unique identifiers) are provided back to bot controller 122 which generates a responsive chat message 114 (or takes other actions in response to those concepts). In accordance with one example, the output 128 is also fed back into natural language processor 124 along with a subsequent input text that is subsequently received (e.g., based on a second utterance) from user 106.
Thus, continuing with the example discussed above, the first input text 126 may be “What is the weather in Seattle today?” Based on that input, natural language processor 124 may identify concepts (or unique identifiers corresponding to those concepts) such as “weather”, “Seattle”, and “today”. Those concepts may be output as output 128 to bot controller 122 which generates a responsive chat message 114 which may be “Today it will be cloudy with a chance of rain.” Then, when the second utterance is received as a second chat message 112 (“How about tomorrow?”), that textual input is provided as input text 126 to natural language processor 124, along with the concepts that were identified in the first utterance (“weather”, “Seattle”, and “today”). Thus, natural language processor 124 generates an output indicative of the concepts represented in the second utterance based not only on the text of the second utterance, but also based on the concepts identified in the first utterance (which serves as context for the second utterance). The output generated by natural language processor 124 based upon the second utterance will again be fed back to bot controller 122, so that it can generate a response, but that output from natural language processor 124 will also be fed back into natural language processor 124, as context for a third utterance, should one be received.
Referring again to the example conversation set out above, the second response generated by bot controller 122 (in response to the second utterance “How about tomorrow?”) is “Tomorrow showers are likely.” User 106 then generates the third utterance “And Ellensburg?” Clearly, if one knows the context of the conversation, user 106 is asking what the weather will be like, tomorrow, in Ellensburg. Thus, the output 128 generated by natural language processor 124 in response to the second utterance (“How about tomorrow?”) will include the concepts “weather”, “tomorrow”, and “Seattle”. It will be provided to bot controller 122 so that bot controller 122 can generate the response “Tomorrow showers are likely.” The concepts will also be fed back into natural language processor 124 along with the third utterance “And Ellensburg?” Since the concept “Ellensburg” is more recent than the concept “Seattle”, “Ellensburg” will replace “Seattle”. Thus, natural language processor 124 will know, based upon the context fed back into it, that the conversation is currently about “weather”, “tomorrow” and “Ellensburg”.
Natural language processor 124 will thus generate another output 128 based upon the third utterance and the context that is fed back into it from the second utterance. The output 128 based on the third utterance will be provided to bot controller 122 so that it can generate a response to the third utterance. As set out in the example conversation, that response may include “Tomorrow it will be sunny in Ellensburg.”
As briefly mentioned above, in one example, natural language processor 124 includes code so that the most recent words (in the most recent utterance) will be more significant, any conflicting override, and context that accompanies them and that is fed back from the previous utterance. Therefore, in the example discussed above, when the second utterance “How about tomorrow?” is provided, the concept “tomorrow” overrides the context information for the concept “today”. Thus, the concepts “weather” and “Seattle”, were used to disambiguate the second utterance, but the context “today” was discarded because a more current concept “tomorrow” overrode it. The new context information for the second utterance will then be “weather”, “Seattle”, and “tomorrow”. Then, when the third utterance is received, the concept “Ellensburg” overrides the concept “Seattle”.
In the example shown in
The bot controller 122 provides the representation of the utterance to natural language processor 124, for evaluation. This is indicated by block 136. The natural language processor receives any context, from any previous utterances, along with the representation of the utterance that is provided to it by bot controller 122. Receiving the context from any previous utterances is indicated by block 138 in the flow diagram of
However, as is described in greater detail below, the context information can include not only the output 128 from natural language processor 124, but it can include an enhanced or modified version of that output, or it can include context from other sources, other than the output of natural language processor 124. Providing a filtered, enhanced output from a previous evaluation is indicated by block 142 and providing context information from other sources is indicated by block 144.
Natural language processor 124 then evaluates the representation of the utterance that it has received, given the context information that it has also received. This is indicated by block 146. By evaluating the representation of the utterance, given the context, it is meant that natural language processor 124 identifies a new set of concepts based upon the newly received utterance, and its context information. It can do this in a wide variety of different ways. In one example, it uses a knowledge model (as discussed in greater detail below with respect to
Natural language processor 124 generates and outputs a set of concepts, based on the evaluation, to bot controller 122. This is indicated by block 152. The bot controller 122 formulates and outputs a chat response to the chat message channel functionality 104, based upon the evaluation results provided by natural language processor 124. Formulating and outputting the chat response is indicated by block 154 in the flow diagram of
If another representation of another utterance is received, as indicated by block 156, then processing reverts to block 136 where the bot controller 122 provides that representation to the natural language processor 124. Then, at block 138, natural language processor 124 receives the context information from the previous utterance, and evaluation proceeds. Thus, as shown with respect to
Each concept may have multiple different labels. For instance, the weather might be described as “gloomy”. However, when someone is emotionally sad, their emotional state may also be described as “gloomy”. Thus, a concept of “overcast weather” may be labeled “gloomy”. Similarly, the concept of “a sad emotional state” may also be labeled as “gloomy”. Further, knowledge model 158 illustratively accounts for synonyms. For example, the concept of “a sad emotional state” may be labeled with the linguistic labels (e.g., with the words) “sad”, “unhappy”, “gloomy”, among others.
In addition, concepts may also be related to other concepts, and not just labels. Knowledge model 158 also illustratively captures these types of relationships because context information that is output by natural language processor 124 may include not only the concepts identified in the textual input 126, but also closely related concepts. For example, it may be useful to relate the discrete concepts of “ski conditions” and “driving conditions” to the concept of “weather”.
It can also be useful to name these types of relationships and make them directional. For instance, it may be helpful for knowledge model 158 to indicate that the concept of an “emotional state” is broader than the concept of the “emotional state-sad”. Similarly, that the concept “emotional state-sad” is broader than the concept of the “emotional state—pessimistic”. Further, concepts may have the same relationship to more than one different concept. For example, the concept of the “emotional state-pessimistic” may have a relationship to two different concepts that are both broader. It may, for instance, have a relationship to a broader concept “emotional state—negative” and also have a relationship to a broader concept “emotional state”.
Thus, in one example, knowledge model 158 has entries that represent different concepts (e.g., concept entries), that are each given unique identifiers. The concepts can be related to other concepts with named and directional relationships. They can be labeled with natural language words (e.g., linguistic labels). There can be many different labels for a particular concept and the labels themselves may not be unique in the sense that the same label can be used on different concepts. The underlying concepts, however, are unique relative to other model concepts.
The concepts can also be connected to one another by labeled, directional links 162. Model 158 can include a wide variety of other items 164 as well. Thus, in operation, the example of architecture 100 shown in
Before describing the operation of architecture 100, in the example shown in
Before describing logic 170 in more detail, it will be understood that concepts often have a useful duration or scope (also referred to as shelf life). Therefore, the context information provided along with an utterance may have a limited useful duration (or shelf life). The shelf life may be determined by a number of different criteria. In one example, temporal criteria may be used to determine the shelf life of a concept in context information. For instance, if an utterance is received by chat bot computing system 102 on a Monday that inquiries about the weather that day, then if the next utterance is received two days later, the context information generated from the previous utterance is very likely no longer applicable or meaningful to the second utterance. Thus, including the concept information from the first utterance, as context information in the second utterance, may have a limited useful duration, and that duration may be identified using temporal criteria (such as a time stamp).
The limited usefulness of context information can also be generalized to other dimensions, other than time. For instance, chat bot computing system 102 may implement a natural language interface on an automobile. In that case, the user may provide an utterance looking for the nearest gas station. However, the next subsequent utterance may be an utterance that is provided by user 106 after the automobile has traveled 100 miles since the previous utterance. In that case, the previous utterance looking for the nearest gas station is not very likely to be useful as context information for the next subsequent utterance. Similarly, in the same example, if the first utterance is inquiring as to the next closest freeway exit, and the second utterance is provided after the automobile has already exited the freeway, then the first utterance may be of limited usefulness as context information to the next subsequent utterance. Thus, in this example, the shelf life or expiration criteria may be location (or geographic position) information (such as a current geographic location), instead of temporal information.
Further, it may be learned that context information is often only useful for a particular maximum number of dialog turns. By way of example, it may be found that context information is only useful for three dialog turns (in which three utterances have been received and responded to by chat bot computing system 102). After that, it may be found that the usefulness of the context information from the first utterance is relatively low. Thus, in such a scenario, the expiration criteria may be the number of dialog turns that have been processed within a given amount of time. It will be noted, of course, that the number of dialog turns that are used to identify usefulness may be any number, and three is provided by way of example only.
In the example illustrated in
In one example, the expiration criteria (or shelf life criteria) may be temporal criteria. In that case, timestamp generator 196 generates a timestamp for each concept that will be fed back as context information. In an example where the shelf life or expiration criteria includes the number of dialog turns, then turn counter 198 generates a turn count indication, identifying the particular dialog turn (within the last predetermined amount of time) for which the output 128 is generated. Similarly, where the shelf life or expiration criteria include location information, then location stamp generator 200 generates a location stamp (e.g., based on information received from a GPS receiver or other position identifier) indicating a location of user device 108 when the chat message 112 was received.
It will be noted that a shelf life indicator can be generated for each individual concept. One can also be generated for the output 128, as a whole.
Expiration criteria processor 182 then processes the shelf life indication (such as by comparing it to expiration criteria) that are associated with, or attached to, the different items of context information that are fed back into natural language processor 124. This is done to determine the relevance of the context information to the next utterance. For instance, concept-level logic 204 processes the shelf life information corresponding to each concept identifier that is fed back in as context information. Each item of context information (e.g., each concept) may be generated at a different time, based upon a different utterance. A time stamp is generated for it at that time. When a concept is fed back in as an item of context, it is associated with that timestamp. When enough time has elapsed between the timestamp on a given concept, then that item may be treated as less relevant to a subsequent utterance. It may be removed from the context information fed back into natural language processor 124. It may be assigned a lower relevance weight, etc.
Overall context logic 206 evaluates the shelf life information associated with an overall context (e.g., which may include multiple concepts from an utterance or aggregated and carried forward over time from multiple utterances) that is fed back into natural language processor 124. By way of example, the entire context that is to be fed back into natural language processor 124 may have been generated from utterances that were input when a vehicle was at a location that is 100 miles from the current location. In that case, logic 170 may discard the entire context as being irrelevant.
Context enhancement system 186 can illustratively interact with other context sources 168 to obtain other context information. Other context sources 168 may be specified or generated by a developer to provide certain behavior for chat bot computing system 102. Context filtering system 188 illustratively filters items of context based on the expiration (or shelf life) criteria or for other reasons. Context weighting system may weight different items of context based upon their shelf life or expiration criteria. For instance, as an item of context ages (based upon its timestamp) it may be weighted lower by context weighting system 190, because it is likely less relevant than when it was first generated. Similarly, when an item of context was generated in a first dialog turn, then its weight may be decreased with each subsequent dialog turn, because it is likely becoming less relevant. Similarly, when an item of context was generated at a first location, the weight of that item of context may be reduced as the user moves further away from that particular location. These are examples only.
Context output generator 192 then generates an output indicative of the filtered and/or enhanced context, to natural language processor 124, so that it can be considered along with the next subsequent utterance.
In one example, model 158 can be distributed so that different parts of the model can be created at different times by different systems and from different data sources and then combined. The combined model can then be used to build a runtime execution model, during runtime. Similarly, knowledge model 158 may be structured in a non-hierarchical way. While the concepts are modeled with unique identifiers, name spaces may be used for relationship names.
It is first assumed that natural language processor 124 receives text 126 to be evaluated along with any unique identifiers representing context from the previous utterance. This is indicated by block 212 in the flow diagram of
Natural language processor 124 identifies current unique identifiers of concepts that have labels that best match the current text being evaluated (the matching concept entries), given the context information. Again, by way of example, assume that the knowledge model 158 includes entries such as that shown in
Natural language processor 124 then generates an output 128 based on the current unique identifiers identified for the text input 126, and based on the unique identifiers representing the context information that was received. This is indicated by block 218 in the flow diagram of
Natural language processor 124 then performs natural language processing to identify the concepts in the utterance, given its context. This is indicated by block 236. It can do this using knowledge model 158, as indicated by block 238 in the flow diagram of
Once the shelf life indicator has been associated with each of the concepts identified based on the present utterance, then any other already-existing items of context can be added to the output 128 before it is fed back to natural language processor 124, as context for the next utterance. This is referred to as the overall context information that will be fed back along with the next utterance. Adding the existing context items to obtain the overall context is indicated by block 252 in the flow diagram of
Shelf life indication generator 180 then associates an overall shelf life indicator with the overall context. This is indicated by block 254 in the flow diagram of
Expiration criteria processor 182 then compares the concept level shelf life indicators and the overall shelf life indicator to expiration criteria to see if any of the context information should be filtered out of (or de-weighted in) the overall context that is provided to natural language processor 124, as context for the next utterance. Comparing the shelf life indicators to expiration criteria is indicated by block 264 in the flow diagram of
The form of the expiration criteria will depend on the form of the shelf life indicator. For instance, where the shelf life indicator is a time stamp, then the expiration criteria may be an elapsed time criteria indicating that the concept associated with the time stamp is no longer relevant, has reduced relevance, etc. Filtering context based on a current or elapsed time is indicated by block 266.
If the shelf life indicator is a location stamp, then expiration criteria processor 182 may compare the location stamp against a current location of user device 108. Analyzing expiration criteria based on a current location is indicated by block 268.
If the shelf life indicator is a dialog turn count indicator, then the expiration criteria may be a current turn count number. Evaluating the expiration criteria based upon a current turn count number is indicated by block 270.
It will be appreciated that evaluation of the expiration criteria can be done in a wide variety of other ways as well. This is indicated by block 272.
Context filter/enhancement logic 170 then filters or enhances the individual concepts and the overall context based on the comparison to the expiration criteria, to obtain a filtered/enhanced context. This is indicated by block 274 in the flow diagram of
Context enhancement system 186 can enhance the context by obtaining additional context from other context sources 168. It can enhance the context information in other ways as well, such as by identifying concept entries that are related to the matching concept entry by a relational link, etc.
Context output generator 192 then generates an output indicative of the filtered/enhanced context information and provides it to natural language processor 124 so that it can be considered as context information with the next subsequent utterance. Returning the filtered/enhanced context to the natural language processor 124 for evaluation along with a next utterance is indicated by block 282 in the flow diagram of
It will be noted that the above discussion has described a variety of different systems, components and/or logic. It will be appreciated that such systems, components and/or logic can be comprised of hardware items (such as processors and associated memory, or other processing components, some of which are described below) that perform the functions associated with those systems, components and/or logic. In addition, the systems, components and/or logic can be comprised of software that is loaded into a memory and is subsequently executed by a processor or server, or other computing component, as described below. The systems, components and/or logic can also be comprised of different combinations of hardware, software, firmware, etc., some examples of which are described below. These are only some examples of different structures that can be used to form the systems, components and/or logic described above. Other structures can be used as well.
The present discussion has mentioned processors and servers. In one example, the processors and servers include computer processors with associated memory and timing circuitry, not separately shown. They are functional parts of the systems or devices to which they belong and are activated by, and facilitate the functionality of the other components or items in those systems.
Also, a number of user interface displays have been discussed. They can take a wide variety of different forms and can have a wide variety of different user actuatable input mechanisms disposed thereon. For instance, the user actuatable input mechanisms can be text boxes, check boxes, icons, links, drop-down menus, search boxes, etc. They can also be actuated in a wide variety of different ways. For instance, they can be actuated using a point and click device (such as a track ball or mouse). They can be actuated using hardware buttons, switches, a joystick or keyboard, thumb switches or thumb pads, etc. They can also be actuated using a virtual keyboard or other virtual actuators. In addition, where the screen on which they are displayed is a touch sensitive screen, they can be actuated using touch gestures. Also, where the device that displays them has speech recognition components, they can be actuated using speech commands.
A number of data stores have also been discussed. It will be noted they can each be broken into multiple data stores. All can be local to the systems accessing them, all can be remote, or some can be local while others are remote. All of these configurations are contemplated herein.
Also, the figures show a number of blocks with functionality ascribed to each block. It will be noted that fewer blocks can be used so the functionality is performed by fewer components. Also, more blocks can be used with the functionality distributed among more components.
The description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides substantially seamless pooling of resources, as well as a reduced need to manage and configure underlying hardware infrastructure.
A public cloud is managed by a vendor and typically supports multiple consumers using the same infrastructure. Also, a public cloud, as opposed to a private cloud, can free up the end users from managing the hardware. A private cloud may be managed by the organization itself and the infrastructure is typically not shared with other organizations. The organization still maintains the hardware to some extent, such as installations and repairs, etc.
In the example shown in
It will also be noted that architecture 100, or portions of it, can be disposed on a wide variety of different devices. Some of those devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palm top computers, cell phones, smart phones, multimedia players, personal digital assistants, etc.
In other examples, applications or systems are received on a removable Secure Digital (SD) card that is connected to a SD card interface 15. SD card interface 15 and communication links 13 communicate with a processor 17 (which can also embody processors or servers from other FIGS.) along a bus 19 that is also connected to memory 21 and input/output (I/O) components 23, as well as clock 25 and location system 27.
I/O components 23, in one embodiment, are provided to facilitate input and output operations. I/O components 23 for various embodiments of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches and output components such as a display device, a speaker, and or a printer port. Other I/O components 23 can be used as well.
Clock 25 illustratively comprises a real time clock component that outputs a time and date. It can also, illustratively, provide timing functions for processor 17.
Location system 27 illustratively includes a component that outputs a current geographical location of device 16. This can include, for instance, a global positioning system (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning system. It can also include, for example, mapping software or navigation software that generates desired maps, navigation routes and other geographic functions.
Memory 21 stores operating system 29, network settings 31, applications 33, application configuration settings 35, data store 37, communication drivers 39, and communication configuration settings 41. Memory 21 can include all types of tangible volatile and non-volatile computer-readable memory devices. It can also include computer storage media (described below). Memory 21 stores computer readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. Similarly, device 16 can have a client system 24 which can run various applications or embody parts or all of architecture 100. Processor 17 can be activated by other components to facilitate their functionality as well.
Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. Application configuration settings 35 include settings that tailor the application for a specific enterprise or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items such as GPRS parameters, SMS parameters, connection user names and passwords.
Applications 33 can be applications that have previously been stored on the device 16 or applications that are installed during use, although these can be part of operating system 29, or hosted external to device 16, as well.
Note that other forms of the devices 16 are possible.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. It includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810. The logical connections depicted in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
It should also be noted that the different examples described herein can be combined in different ways. That is, parts of one or more examples can be combined with parts of one or more other examples. All of this is contemplated herein.
Example 1 is a computing system, comprising:
a knowledge model that models concepts in natural language;
a natural language processor (NLP) that receives a textual input, indicative of a chat message under evaluation, and context information, identified based on a previously received chat message that was received previous to the chat message under evaluation, the natural language processor accessing the knowledge model to identify a concept in the chat message under evaluation and generating an NLP output identifying the concept based on the textual input and the context information; and
a bot controller that receives the NLP output from the natural language processor and generates a bot response output based on the NLP output.
Example 2 is the computing system of any or all previous examples wherein the knowledge model is configured with a plurality of concept entries, each concept entry identifying a different concept with a different corresponding unique identifier, that is unique relative to unique identifiers for other of the concept entries.
Example 3 is the computing system of any or all previous examples wherein the knowledge model is configured with labeled relationship links, each relationship link linking two concept entries and identifying a relationship between the two concept entries.
Example 4 is the computing system of any or all previous examples wherein the relationship links are directional, indicating a role, of each of the two linked concept entries, in the relationship between the two linked concept entries.
Example 5 is the computing system of any or all previous examples wherein the knowledge model is configured with each concept entry having a corresponding linguistic label.
Example 6 is the computing system of any or all previous examples wherein the natural language processor is configured to identify the concept in the textual input by matching words in the textual input against the linguistic labels corresponding to the concept entries in the knowledge model to identify a matching concept entry.
Example 7 is the computing system of any or all previous examples wherein the natural language processor generates the NLP output with the unique identifier corresponding to the matching concept entry.
Example 8 is the computing system of any or all previous examples wherein the bot controller is configured to generate the bot response based on the label corresponding to the matching concept entry.
Example 9 is the computing system of any or all previous examples wherein the natural language processor is configured to feed the unique identifier corresponding to the matching concept entry back to an input of the natural language processor, as context information for a subsequently received textual input indicative of a subsequently received chat message that is received subsequent to the chat message under evaluation.
Example 10 is the computing system of any or all previous examples wherein the natural language processor is configured to access the knowledge model to identify a concept in the subsequently received textual input based on the subsequently received textual input and the context information.
Example 11 is the computing system of any or all previous examples wherein the natural language processor is configured to access the knowledge model to identify a related concept entry that is related to the matching concept entry by a relationship link and to return, as context information for the subsequently received textual input, the unique identifier corresponding to the matching concept entry and the unique identifier corresponding to the related concept entry.
Example 12 is a chat bot computing system, comprising:
a knowledge model that models concepts in natural language, the knowledge model having a plurality of concept entries, each concept entry identifying a different concept with a different corresponding unique identifier, that is unique relative to unique identifiers for other of the concept entries;
a natural language processor (NLP) that receives a textual input, indicative of a chat message under evaluation, and context information, identified based on a previously received chat message that was received previous to the chat message under evaluation, the natural language processor accessing the knowledge model to identify a concept entry corresponding to a concept in the chat message under evaluation based on the textual input and the context information, and generating an NLP output identifying the concept, the natural language processor feeding the unique identifier corresponding to the identified concept entry back to an input of the natural language processor, as context information for a subsequently received textual input indicative of a subsequently received chat message that is received subsequent to the chat message under evaluation; and
a bot controller that receives the NLP output from the natural language processor and generates a bot response output based on the NLP output.
Example 13 is the chat bot computing system of any or all previous examples wherein the knowledge model is configured with labeled relationship links, each relationship link linking two concept entries and identifying a relationship between the two concept entries.
Example 14 is the chat bot computing system of any or all previous examples wherein the relationship links are directional, indicating a role, of each of the two linked concept entries, in the relationship between the two linked concept entries.
Example 15 is the chat bot computing system of any or all previous examples wherein the knowledge model is configured with each concept entry having a corresponding linguistic label, and wherein the natural language processor is configured to identify the concept in the textual input by matching words in the textual input against the linguistic labels corresponding to the concept entries in the knowledge model to identify a matching concept entry.
Example 16 is the chat bot computing system of any or all previous examples wherein the natural language processor is configured to access the knowledge model to identify a concept in the subsequently received textual input based on the subsequently received textual input and the context information.
Example 17 is the chat bot computing system of any or all previous examples wherein the natural language processor is configured to access the knowledge model to identify a related concept entry that is related to the matching concept entry by a relationship link and to return, as context information for the subsequently received textual input, the unique identifier corresponding to the matching concept entry and the unique identifier corresponding to the related concept entry.
Example 18 is a computer implemented method, comprising:
providing a knowledge model that models concepts in natural language, the knowledge model having a plurality of concept entries, each concept entry identifying a different concept with a different corresponding unique identifier, that is unique relative to unique identifiers for other of the concept entries;
receiving, at a natural language processor, a textual input, indicative of a chat message under evaluation, and context information, identified based on a previously received chat message that was received previous to the chat message under evaluation;
accessing, with the natural language processor, the knowledge model to identify a concept entry corresponding to a concept in the chat message under evaluation based on the textual input and the context information;
generating an NLP output identifying the concept;
feeding the unique identifier corresponding to the identified concept entry back to an input of the natural language processor, as context information for a subsequently received textual input indicative of a subsequently received chat message that is received subsequent to the chat message under evaluation; and
generating a bot response output based on the NLP output.
Example 19 is the computer implemented method of any or all previous examples wherein the knowledge model is configured with labeled relationship links, each relationship link linking two concept entries and identifying a relationship between the two concept entries and wherein the knowledge model is configured with each concept entry having a corresponding linguistic label, and wherein accessing the knowledge model to identify a concept entry comprises:
matching words in the textual input against the linguistic labels corresponding to the concept entries in the knowledge model to identify a matching concept entry.
Example 20 is the computer implemented method of any or all previous examples and further comprising:
accessing, with the natural language processor, the knowledge model to identify a related concept entry that is related to the matching concept entry by a relationship link; and
returning, as context information for the subsequently received textual input, the unique identifier corresponding to the matching concept entry and the unique identifier corresponding to the related concept entry.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.