2017-09-14 4 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., 

내가 루이스 복합 엔티티를 사용하십니까? 그렇다면 "보다 큼"과 "오늘"은 말하기라는 이름의 복합 엔티티 인 "DateComparer"의 하위 항목이됩니까? 복합 엔티티가 구문 분석되는 방식을 이해하기 위해 참조 할 수있는 github 샘플이 있습니까?

도움과 시간을 미리 보내 주셔서 감사합니다.

+0

그럼 어떻게 고민하고 있습니까? 지금 복합 엔티티를 사용합니까? 나는 datetime.V2와 comparsion에 사용 된 키워드를 포함하는 "목록 엔티티"(더 큰, 더 큰 것)를 포함하는 복합 엔티티로 매우 간단한 LUIS를 교육했습니다. 꽤 괜찮은 것으로 알려져 있습니다. 나는 대답을하고 당신과 LUIS json을 나눌 수 있습니다. – Miskov

+0

Miskov에게 감사드립니다. 나는 당신의 제안을 받아 ComparerList를 만들었습니다. ' "복합"[ { "이름": "DateComparer" "어린이"[ "ComparerList" "datetimeV2" ] } ]' – VenVig

+0

"closedLists"[ { "이름": "ComparerList" "하위 목록"[ { "표준 형식": "있다" "목록"[ , "초과", "초과" "이상" "이상", "초과", "높은 t han "," ">" " }, – 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