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 文档页面中打开了 pull request 以添加注释。