How logic adapters select a response¶
A typical logic adapter designed to return a response to an input statement will use two main steps to do this. The first step involves searching the database for a known statement that matches or closely matches the input statement. Once a match is selected, the second step involves selecting a known response to the selected match. Frequently, there will be a number of existing statements that are responses to the known match.
To help with the selection of the response, several methods are built into ChatterBot for selecting a response from the available options.
Response selection methods¶
Response selection methods determines which response should be used in the event that multiple responses are generated within a logic adapter.
- chatterbot.response_selection.get_first_response(input_statement, response_list, storage=None) Statement [source]¶
- Parameters:
input_statement (Statement) – A statement, that closely matches an input to the chat bot.
response_list (list) – A list of statement options to choose a response from.
storage (StorageAdapter) – An instance of a storage adapter to allow the response selection method to access other statements if needed.
- Returns:
Return the first statement in the response list.
- chatterbot.response_selection.get_most_frequent_response(input_statement, response_list, storage=None) Statement [source]¶
- Parameters:
input_statement (Statement) – A statement, that closely matches an input to the chat bot.
response_list (list) – A list of statement options to choose a response from.
storage (StorageAdapter) – An instance of a storage adapter to allow the response selection method to access other statements if needed.
- Returns:
The response statement with the greatest number of occurrences.
- chatterbot.response_selection.get_random_response(input_statement, response_list, storage=None) Statement [source]¶
- Parameters:
input_statement (Statement) – A statement, that closely matches an input to the chat bot.
response_list (list) – A list of statement options to choose a response from.
storage (StorageAdapter) – An instance of a storage adapter to allow the response selection method to access other statements if needed.
- Returns:
Choose a random response from the selection.
Use your own response selection method¶
You can create your own response selection method and use it as long as the function takes two parameters (a statements and a list of statements). The method must return a statement.
def select_response(statement, statement_list, storage=None):
# Your selection logic
return selected_statement
Setting the response selection method¶
To set the response selection method for your chat bot, you
will need to pass the response_selection_method
parameter
to your chat bot when you initialize it. An example of this
is shown below.
from chatterbot import ChatBot
from chatterbot.response_selection import get_most_frequent_response
chatbot = ChatBot(
# ...
response_selection_method=get_most_frequent_response
)
Response selection in logic adapters¶
When a logic adapter is initialized, the response selection method
parameter that was passed to it can be called using self.select_response
as shown below.
response = self.select_response(
input_statement,
list_of_response_options,
self.chatbot.storage
)
Selecting a response from multiple logic adapters¶
The generate_response
method is used to select a single response from the responses
returned by all of the logic adapters that the chat bot has been configured to use.
Each response returned by the logic adapters includes a confidence score that indicates
the likeliness that the returned statement is a valid response to the input.
Response selection¶
The generate_response
will return the response statement that has the greatest
confidence score. The only exception to this is a case where multiple logic adapters
return the same statement and therefore agree on that response.
For this example, consider a scenario where multiple logic adapters are being used. Assume the following results were returned by a chat bot’s logic adapters.
Confidence |
Statement |
---|---|
0.2 |
Good morning |
0.5 |
Good morning |
0.7 |
Good night |
In this case, two of the logic adapters have generated the same result. When multiple logic adapters come to the same conclusion, that statement is given priority over another response with a possibly higher confidence score. The fact that the multiple adapters agreed on a response is a significant indicator that a particular statement has a greater probability of being a more accurate response to the input.
When multiple adapters agree on a response, the greatest confidence score that was generated for that response will be returned with it.