Rasa 中的实体同义词可能会导致一些混乱。他们提供的实际功能非常简单。对于模型解析的每个实体,该实体的值都会根据实体同义词列表进行检查。如果该值与实体同义词匹配,则将其替换为同义词值。
上述陈述中的一大问题是实体必须由模型识别,然后才能用同义词替换。
所以把这个作为一个简化的例子。这是我的实体同义词定义:
{
"value": "New York City",
"synonyms": ["NYC", "nyc", "the big apple"]
}
如果我的训练数据只提供了这个例子:
{
"text": "in the center of NYC",
"intent": "search",
"entities": [
{
"start": 17,
"end": 20,
"value": "New York City",
"entity": "city"
}
]
}
我的模型不太可能像In the center of the big apple.
我上面所说的那样检测句子中的实体,如果the big apple
模型没有将其解析为实体,则它不能被实体同义词替换以读取纽约市。
出于这个原因,您应该在实际common_examples
的训练数据中包含更多带有标记的实体的示例。一旦实体的所有变体都被正确分类,然后将这些值添加到实体同义词中,它们将被替换。
[
{
"text": "in the center of NYC",
"intent": "search",
"entities": [
{
"start": 17,
"end": 20,
"value": "New York City",
"entity": "city"
}
]
},
{
"text": "in the centre of New York City",
"intent": "search",
"entities": [
{
"start": 17,
"end": 30,
"value": "New York City",
"entity": "city"
}
]
}
]
我已经在 Rasa 文档页面中打开了一个拉取请求,以为此效果添加注释。