определить новые слова как намерения в раса нлу - PullRequest
0 голосов
/ 24 мая 2018

Использую rasa nlu для классификации намерений и сущностей для моего чат-бота.Все работает как ожидалось (с обширным обучением), но с сущностями, кажется, предсказывает значение на основе точного положения и длины слова.Это хорошо для сценария, в котором сущности ограничены.Но когда бот должен идентифицировать слово (которое имеет другую длину и еще не обучено, например, новое имя), оно не может обнаружить.Есть ли способ, с помощью которого я могу сделать так, чтобы rasa идентифицировал сущности на основе относительной позиции слова или, что еще лучше, вставил список слов, который становится предметной областью, с которой сущность должна найти соответствие (например, список фраз в LUIS)?

{"q":"i want to buy a Casio SX56"}

{
"project": "default",
"entities": [
    {
        "extractor": "ner_crf",
        "confidence": 0.7043648832678735,
        "end": 26,
        "value": "Casio SX56",
        "entity": "watch",
        "start": 16
    }
],
"intent": {
    "confidence": 0.8835646513829762,
    "name": "buy_watch"
},
"text": "i want to buy a Casio SX56",
"model": "model_20180522-165141",
"intent_ranking": [
    {
        "confidence": 0.8835646513829762,
        "name": "buy_watch"
    },
    {
        "confidence": 0.07072182459497935,
        "name": "greet"
    }       
]
}

Но если заменить Casio SX56 на Citizen M1:

{"q":"i want to buy a Citizen M1"}

{
"project": "default",
"intent": {
    "confidence": 0.8710909096729019,
    "name": "buy_watch"
},
"text": "i want to buy a Citizen M1",
"model": "model_20180522-165141",
"intent_ranking": [
    {
        "confidence": 0.8710909096729019,
        "name": "buy_watch"
    },
    {
        "confidence": 0.07355588750895545,
        "name": "greet"
    }       
]
}

Спасибо!

Ответы [ 2 ]

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

Функция, которую я искал, - это сопоставление фраз, которое позволило бы мне добавить список возможных объектов в модель обучения.Таким образом, если появится любое новое имя, мы можем просто добавить имя в список фраз, и модель сможет идентифицировать его со всеми возможными высказываниями.Хотя это все еще в разработке и должно быть добавлено к мастеру в ближайшее время: https://github.com/RasaHQ/rasa_nlu/pull/822

0 голосов
/ 31 мая 2018

Убедитесь, что вы на самом деле добавили примеры обучения каждой сущности, прежде чем обучать его с помощью rasa_nlu.

--- Для успешного извлечения сущности нам нужно создать как минимум 2 или более контекстных обучающих данных ---

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

"text": "i want to buy a Citizen M1",
"model": "model_20180522-165141",
"intent_ranking": [
    {
        "confidence": 0.8710909096729019,
        "name": "buy_watch"
    },
    {
        "confidence": 0.07355588750895545,
        "name": "greet"
    }       
]

извлечение сущности с соответствием фраз работает в rasa_nlu, попробуйте ее с spacy_sklearn внутренним конвейером

...