将新词识别为 rasa nlu 中的意图
identify new words as intents in rasa nlu
一直在使用 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"
}
]
}
但如果卡西欧 SX56 被西铁城 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"
}
]
}
谢谢!
确保在使用 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
后端管道
我正在寻找的功能是短语匹配器,它允许我将可能的实体列表添加到训练模型中。这样,如果弹出任何新名称,我们只需将该名称添加到短语列表中,模型就能够用所有可能的话语来识别它。虽然这仍在开发中,但应该很快就会添加到 master 中:https://github.com/RasaHQ/rasa_nlu/pull/822
一直在使用 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"
}
]
}
但如果卡西欧 SX56 被西铁城 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"
}
]
}
谢谢!
确保在使用 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
后端管道
我正在寻找的功能是短语匹配器,它允许我将可能的实体列表添加到训练模型中。这样,如果弹出任何新名称,我们只需将该名称添加到短语列表中,模型就能够用所有可能的话语来识别它。虽然这仍在开发中,但应该很快就会添加到 master 中:https://github.com/RasaHQ/rasa_nlu/pull/822