2017-09-14 63 views
0

我正在C#和LUIS中使用Microsoft Bot框架構建BOT。 使用預先構建的實體datetime.V2,我能夠正確地捕獲諸如「上週」,「下個月」等術語。 然而,當涉及到我來襲:如何在LUIS和BOT框架中評估大於今天的用戶輸入

"Get me all products which has expiry life greater than 2 years", 
"greater than today", 
"> today" etc., 

我用LUIS複合實體?如果是這樣,「大於」和「今天」將成爲名爲「DateComparer」的複合實體的孩子嗎? 是否有我可以參考的任何github示例來了解複合實體如何被解析?

感謝您的幫助和時間提前。

+0

那你在掙扎什麼?你現在使用複合實體嗎?我訓練了一個非常簡單的LUIS,其中包含datetime.V2和包含用於比較的關鍵字(大於,大於)的「列表實體」。這是公認的很好。我可以回答問題,並與你分享一份LUIS json。 – Miskov

+0

非常感謝米什科夫。 我創建了一個採用您的建議的ComparerList。 ' 「複合材料」: { 「名」: 「DateComparer」, 「孩子」: 「ComparerList」, 「datetimeV2」 ] } ]' – VenVig

+0

「closedLists」: { 「名稱」: 「ComparerList」, 「子列表」:[ { 「canonicalForm」: 「GT」, 「列表」:[ 「大於」, 「大於」, 「超過」, 「over」, 「beyond」, 「higher t韓國「, 」>「 ] }, – VenVig

回答

0

我創建了一個採用Miskov建議的ComparerList。

"composites": [ 
    { 
     "name": "DateComparer", 
     "children": [ 
     "ComparerList", 
     "datetimeV2" 
     ] 
    } 
    ], 
    "closedLists": [ 
    { 
     "name": "ComparerList", 
     "subLists": [ 
     { 
      "canonicalForm": "gt", 
      "list": [ 
      "greater than", 
      "larger than", 
      "more than", 
      "over", 
      "exceeding", 
      "higher than", 
      ">" 
      ] 
     }, 
     { 
      "canonicalForm": "lt", 
      "list": [ 
      "<", 
      "less than" 
      ] 
     }, 
     { 
      "canonicalForm": "eq", 
      "list": [ 
      "=", 
      "equal to" 
      ] 
     }, 
     { 
      "canonicalForm": "le", 
      "list": [ 
      "<=", 
      "less than or equal to" 
      ] 
     }, 
     { 
      "canonicalForm": "ge", 
      "list": [ 
      ">=", 
      "greater than or equal to" 
      ] 
     } 
     ] 
    } 
    ], 
    "bing_entities": [ 
    "datetimeV2" 
    ], 

我能培養出路易斯返回基於 話語,如「給我一份有過期比昨天更大的所有項目」下面的JSON。 我在測試時得到以下json。

"entities": [ 
    { 
     "entity": "greater than", 
     "type": "ComparerList", 
     "startIndex": 33, 
     "endIndex": 44, 
     "resolution": { 
     "values": [ 
      "gt" 
     ] 
     } 
    }, 
    { 
     "entity": "greater than yesterday", 
     "type": "DateComparer", 
     "startIndex": 33, 
     "endIndex": 54, 
     "score": 0.6950233 
    }, 
    { 
     "entity": "yesterday", 
     "type": "builtin.datetimeV2.date", 
     "startIndex": 46, 
     "endIndex": 54, 
     "resolution": { 
     "values": [ 
      { 
      "timex": "2017-09-14", 
      "type": "date", 
      "value": "2017-09-14" 
      } 
     ] 
     } 
    } 

從這裏,我檢索「gt」的分辨率,並在我的代碼中使用它。

+0

這應該對你很好,雖然分數低。請記住,列表實體會查找與其項目的完全匹配。(這就是爲什麼你不能用手標記話語並批量測試它)你可以嘗試創建一個簡單的實體而不是列表,並創建一個同名的短語列表。我聽說這是由算法採取的,並且更加認知。由於我們不知道LUIS背後的算法,所以這總是反覆試驗,保持不變;) – Miskov

相關問題