我正在阅读此处详细介绍的训练数据 RASA 格式。
{
"text": "show me chinese restaurants",
"intent": "restaurant_search",
"entities": [
{
"start": 8,
"end": 15,
"value": "chinese",
"entity": "cuisine"
}
]
}
子字符串Chinese
被标记为话语的第 8 到第 15 个索引的实体。
我编写了一个小 C# 程序来验证话语中字符索引的正确性。
public class Program
{
public static void Main(string[] args)
{
string s = "show me chinese restaurants";
int i = 0;
foreach(var item in s.ToCharArray())
Console.WriteLine("{0} - {1}", item, i++);
}
}
但是当我运行程序时,我得到以下输出:
s - 0
h - 1
o - 2
w - 3
- 4
m - 5
e - 6
- 7
c - 8
h - 9
i - 10
n - 11
e - 12
s - 13
e - 14
- 15
r - 16
e - 17
s - 18
t - 19
a - 20
u - 21
r - 22
a - 23
n - 24
t - 25
s - 26
注意文本注释的奇怪行为,子字符串Chinese
从索引 8 开始,到 15 结束,并带有一个空格。
但是子字符串Chinese
应该从索引 8 开始,到位置 14 结束。
Chinese
当我使用从位置 8 开始到 14 结束的索引来训练相同的文本时。我收到Misaligned Entity Annotation
RASA 的警告,详见此处。
有人可以解释这种奇怪的行为。
谢谢