2017-10-16 78 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

相關問題