2017-10-16 121 views
0

在使用西班牙语语言捕获数字时,我遇到了IBM Watson Conversation中的一个奇怪问题。让我来解释一下:如何判断Watson会话是否将字符串识别为数字

在西班牙语中,当你写(或说),“请给我一个答案”(POR青睐,圣母院UNA respuesta)或“我想用专业说话”(quiero hablar联合专业),华生认识到“una”和“un”作为一个数字。是的,它是一个数字(数字1),但在这些短语中它们不具有数字的含义,它们作为一篇文章工作。

你知道如何让沃森不把字符串识别为数字吗?我一直在考虑模式,但数字可以有不同的长度。

在先进的感谢

回答

0

根据官方的文档中,@sys-number系统实体检测使用的是数字或字写入数字。在或者的情况下,返回的数值

当您启用系统实体@ SYS-数,这个实体总是尝试检测如果用户输入一些数字,有公认的格式:

  • 二十一(中你的情况,作品与联合国,UNA等)
  • 3.13

你可以看到这个表说明如何使用此实体与其他的例子:

enter image description here

因此,沃森将识别这些值(联合国,UNA)像一个数字,目前没有异常或配置不认可的东西,像你的榜样,通过用户输入的字。 如果你想为某种目的发送给用户的“UNA”或“取消”(文字格式的例子),只需添加你的谈话回应:

The number is @sys-number.literal 

而在机器人的回报率将是:

The number is un? 
+0

小百合,谢谢你的回答。您已经对@ sys-number在Watson Conversation中的工作做了很好的解释,但它对我没有帮助。数字值始终会被检测到,并且由于Watson填充该值,所以它会打断对话框中的插槽。我发现要避免的唯一方法是在外部应用程序中添加一个逻辑,这是用户和Watson之间的中介,以获取实体值并查找字符串或数字。 –

+0

'string input = conversation.Input.text; int start = Int32.Parse(item.Location [0] .ToString()); int end = Int32.Parse(item.Location [1] .ToString()); int length = end - start; string word = input.Substring(start,length); if(Regex.IsMatch(word,@“^ \ d + $”))values.Add(item.Value);' –

+0

我明白。这是此系统实体的目的。我的答案是沃森对话,与代码,一段时间在你的目的将工作。但是,当你需要识别后,也许你会遇到问题 –

-1

因此,无法将@sys-number配置为仅识别数字,因为大多数情况下都需要数字和字符串。我们正在努力向系统实体添加额外的上下文提示,以便在不清楚数字的情况下知道不会返回数字。

对此的一种解决方法可能是使用对话框设计。您的对话框应设置为不会不断监听号码,但仅当您提示用户输入号码时才会发生错误肯定的值,而不会触发不需要的条件。例如,如果您的用户说“quiero hablar con un profesional”,您的#escalate_to_agent意图将被触发,而不是您收集该号码的节点。

如果您想解释您遇到的确切用例,我很乐意在我们改进实体理解的同时寻找解决方法。或者为了更快的频道,请使用以下方式加入我们的Slack频道:http://wdc-slack-inviter.mybluemix.net/

+0

这并没有提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18728793) – Ragnis

+0

@Ragnis相反,这篇文章以答复的形式重申了评论中发布的内容,但本应作为答案发布。 – TylerH

相关问题