Как мне обработать специальный символ '/' в расе? - PullRequest
0 голосов
/ 29 апреля 2020

Например, следующее предложение: «Привет, добрый день, как дела». Цель этой шутки - «поприветствовать». Когда я запрашиваю API 'model / parse', он возвращает правильное намерение и сущность. Но когда я добавляю специальный символ «/» перед этим предложением, например: «/ привет, добрый день, как дела?», Намерение, возвращаемое «model / parse», звучит как «/ привет, добрый день, как дела?» вместо «приветствовать». Я читаю исходный код rasa следующим образом: enter image description here

Как мне поступить со специальным символом '/', чтобы принять во внимание RegexInterpreter исходного кода, и я цитирую этот пример best Лучше решить эту проблему без изменения исходного кода. Пожалуйста, помогите мне, спасибо.

ответ на:

Я хочу одновременно реализовать следующие три функции:

  1. Когда message.text = '/ greet {"people": "tom"}':

Фактический результат, возвращаемый функцией "model / parse", выглядит следующим образом:

 {
        "text": "/ greet {\" people \ ": \" tom \ "}",
        "intent": {
            "name": "greet",
            "confidence": 1.0
        },
        "intent_ranking": [
            {
                "name": "greet",
                "confidence": 1.0
            }
        ],
        "entities": [
            {
                "entity": "people",
                "start": 6,
                "end": 22,
                "value": "tom"
            }
        ]
    }

2, когда message.text = 'Привет, Том, добрый день'

Фактический результат, возвращаемый функцией "модель / анализ", выглядит следующим образом:

{
    "text": "Hi Tom, good afternoon",
    "intent": {
        "name": "greet",
        "confidence": 0.923
    },
    "intent_ranking": [
        {
            "name": "greet",
            "confidence": 0.923
        }
    ],
    "entities": [
        {
            "entity": "people",
            "start": 2,
            "end": 5,
            "value": "tom",
            "confidence": 0.8433478958,
            "extractor": "CRFEntityExtractor"
        }
    ]
}

3, когда message.text = '/ Привет, Том, добрый день'

Фактический результат, возвращаемый функцией "модель / анализ", выглядит следующим образом (это не то, что я хочу):

{
    "text": "/ Hi Tom, good afternoon",
    "intent": {
        "name": "Hi Tom, good afternoon",
        "confidence": 1.0
    },
    "intent_ranking": [
        {
            "name": "Hi Tom, good afternoon",
            "confidence": 1.0
        }
    ],
    "entities": []
}

Но ожидаемый результат выглядит следующим образом:

{
    "text": "Hi Tom, good afternoon",
    "intent": {
        "name": "greet",
        "confidence": 0.923
    },
    "intent_ranking": [
        {
            "name": "greet",
            "confidence": 0.923
        }
    ],
    "entities": [
        {
            "entity": "people",
            "start": 2,
            "end": 5,
            "value": "tom",
            "confidence": 0.8433478958,
            "extractor": "CRFEntityExtractor"
        }
    ]
}

Обратите внимание, что третье и второе различие заключается в том, что третий message.text добавляет только '/' в начале

Следовательно, существует ли метод, который может решить эта проблема хорошо, и может ли удовлетворить вышеупомянутые три ситуации одновременно?

1 Ответ

0 голосов
/ 07 мая 2020

Наличие / в начале пользовательского сообщения является установленным способом прямого запуска намерения. Из приведенного вами примера это не похоже на то, что часто происходит (если вообще происходит) в реальной пользовательской ситуации. Тем не менее, если вы хотите быть уверены, что с / могут быть инициированы только реальные намерения, вы можете создать пользовательский компонент , который удаляет любой ведущий /, если за ним не следует намерение уже в ваших данных обучения.

Однако, прежде чем приступить к этим усилиям, я бы рекомендовал проверить, как часто это происходит на самом деле.

...