You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.2 KiB
72 lines
2.2 KiB
"""
|
|
Response selection methods determines which response should be used in
|
|
the event that multiple responses are generated within a logic adapter.
|
|
"""
|
|
import logging
|
|
|
|
|
|
def get_most_frequent_response(input_statement, response_list):
|
|
"""
|
|
:param input_statement: A statement, that closely matches an input to the chat bot.
|
|
:type input_statement: Statement
|
|
|
|
:param response_list: A list of statement options to choose a response from.
|
|
:type response_list: list
|
|
|
|
:return: The response statement with the greatest number of occurrences.
|
|
:rtype: Statement
|
|
"""
|
|
matching_response = None
|
|
occurrence_count = -1
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger.info(u'Selecting response with greatest number of occurrences.')
|
|
|
|
for statement in response_list:
|
|
count = statement.get_response_count(input_statement)
|
|
|
|
# Keep the more common statement
|
|
if count >= occurrence_count:
|
|
matching_response = statement
|
|
occurrence_count = count
|
|
|
|
# Choose the most commonly occuring matching response
|
|
return matching_response
|
|
|
|
|
|
def get_first_response(input_statement, response_list):
|
|
"""
|
|
:param input_statement: A statement, that closely matches an input to the chat bot.
|
|
:type input_statement: Statement
|
|
|
|
:param response_list: A list of statement options to choose a response from.
|
|
:type response_list: list
|
|
|
|
:return: Return the first statement in the response list.
|
|
:rtype: Statement
|
|
"""
|
|
logger = logging.getLogger(__name__)
|
|
logger.info(u'Selecting first response from list of {} options.'.format(
|
|
len(response_list)
|
|
))
|
|
return response_list[0]
|
|
|
|
|
|
def get_random_response(input_statement, response_list):
|
|
"""
|
|
:param input_statement: A statement, that closely matches an input to the chat bot.
|
|
:type input_statement: Statement
|
|
|
|
:param response_list: A list of statement options to choose a response from.
|
|
:type response_list: list
|
|
|
|
:return: Choose a random response from the selection.
|
|
:rtype: Statement
|
|
"""
|
|
from random import choice
|
|
logger = logging.getLogger(__name__)
|
|
logger.info(u'Selecting a response from list of {} options.'.format(
|
|
len(response_list)
|
|
))
|
|
return choice(response_list)
|