Как обрабатывать сокращения в вопросах для чата? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть сценарий, в котором пользователь может задавать один и тот же вопрос чатботу разными способами. Например, вопрос может быть "что такое туберкулез?" или это может быть «что такое переходные выгоды?». Ответ на оба вопроса один и тот же, но способ задать вопрос различен. Я использую levenshtein_distance для сравнения операторов в моем коде, но это не сработает в этом случае, так как это соответствует буквенно-буквенным поправкам. Как мне сравнить мои заявления в этом случае? Должен ли я предоставить оба вопроса для моих данных или есть какой-нибудь другой умный способ сделать это. Пожалуйста, предложите.

1 Ответ

0 голосов
/ 30 июня 2018

У меня есть решение для этого. Мы можем написать нашу собственную функцию предварительной обработки и вызвать ее внутри экземпляра chatbot.

bot = ChatBot("Norman",
          read_only=True,
          preprocessors=[
                       'chatterbot.preprocessors.TB_Correction'
                        ])

А внутри Preprocessors.py (присутствует в C: \ Users \ Имя_пользователя \ AppData \ Local \ Continuum \ Anaconda3 \ Lib \ site-packages \ chatterbot) мы можем добавить к нему функцию, как показано ниже:

def TB_Correction(chatbot,statement):
    '''
    Replacing TB with Transition Benefits
    '''
    import re

    if 'TB' in statement.text:
            statement.text = re.sub(r'[T][B]','Transition Benefits',statement.text)
    return statement
...