패턴을 사용하면 NLP 통역가의 정확도를 향상시킬 수 있습니다.

본 문서에서는 다양한 패턴 구문에 대해 자세히 설명하고 이러한 패턴 구문이 의도 감지 및 엔티티 추출에 어떻게 사용될 수 있는지 설명합니다.

기억해야 할 사항:

  • 패턴은 ML 엔진을 사용할 수 없는 경우에만 마지막 수단으로 사용됩니다. 이러한 사례의 예로는 발화와 같은 관용구가 있는 발화, 명령을 식별하도록 학습하는 것입니다.
  • 패턴은 나열된 순서대로 평가됩니다. 일치 항목이 발견되면 나머지 패턴은 평가되지 않습니다. 따라서 패턴을 추가할 때 가장 제한적인 순서에서 가장 덜 제한적인 순서로 추가해야 합니다.
  • 패턴에는 하나의 와일드카드(*)만 허용됩니다.
  • 기능 대부분이 모든 언어를 지원하지만, 일부 예외가 있습니다. 자세한 내용은 여기를 참조하세요.
다음은 의도 패턴을 생성하기 위한 몇 가지 일반적인 지침입니다.
  • 최소 3개의 단어를 사용하세요.
  • 표준적인 형태의 단어를 사용하세요(예: 부정사, 단수 명사).
  • 단어와 동의어에 모두 소문자를 사용합니다.
  • 단어의 미국 철자를 사용합니다(즉, normalise 대신 normalize).
  • 한정사 및 대명사(the, a, my, that)는 사용하지 마세요.
  • 숫자를 사용하지 마세요.
  • 작업 패턴을 정의할 때 엔티티 값을 사용하지 않도록 합니다.
  • 축약(예: what's)을 사용하지 마세요.
  • () & / \ $ [ ] + * 와 같은 특수 문자는 사용하지 마세요.
  • 다음과 같은 구두점은 사용하지 마세요. , ! ? ‘ “.

의도 감지용 패턴

다음은 의도 감지를 위해 설정할 수 있는 패턴 구문 목록으로, 예시가 함께 제시됩니다.

패턴 설명 패턴 예제
word1 word2…wordn 이를 통해 정의된 모든 단어를 동일한 연속 순서대로 사용자 발화에서 사용할 수 있도록 하고, 패턴에서 언급된 두 개의 연속된 단어 사이에 최대 3개의 단어(언어별)를 추가하고, 지정된 단어 세트 앞뒤에 무한한 개수의 단어를 추가로 사용할 수 있도록 합니다.
샘플 패턴 "transfer fund"
발화 일치 – "can you please transfer funds from my account"
– "can you please transfer some funds from my account"
– "transfer funds"
발화 불일치 – "i want to transfer"
– "can i transfer some significant amount of monetary funds"
– "i want to do fund transfer"
word1_word2 word1과 word2 사이에 추가 단어가 허용되지 않는 구문을 적용합니다. 이는 토큰의 시퀀스가 구문으로 읽히도록 하기 위한 것입니다. 사용은 단어로 제한되며 콘셉트는 허용되지 않습니다.
참고 사항: word1, word2 및 _ 사이에 공백이 없어야 합니다. 또한 "_word1"은 사용자 발화의 word1이 플랫폼에서 사용된 것으로 표시되지 않도록 하고 엔티티 추출에 고려되도록 하기 위한 것입니다 이 기능은 엔티티 단어가 의도 패턴에 사용될 때 유용합니다.
샘플 패턴 "transfer_fund"
발화 일치 "can you help me transfer funds"
발화 불일치 "can you please transfer some funds from my account"
word1* word2 지정된 단어/구 사이에 0에서 무한개의 추가 단어 수
샘플 패턴 "transfer * fund"
발화 일치 – "can you please transfer some funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer"
word1 *n word2 지정된 단어/구 사이에 정확히 n 개의 추가 단어를 추가로 사용합니다
샘플 패턴 "transfer *2 fund"
발화 일치 – "can you help me transfer some significant funds from my account"
발화 불일치 – "i want to transfer"
– "can you please transfer some funds from my account"
– "can you help me transfer some significant amount of funds"
word1 *0 word2 두 토큰 사이의 와일드카드를 사용하지 않도록 설정합니다. 두 단어 사이의 밑줄과 비슷하지만 두 콘셉트 간에 또는 [ ], { } 그룹 내에서 사용할 수 있습니다.
(7.1 이상 사용 가능)
샘플 패턴 "transfer *0 fund"
발화 일치 – "can you please transfer funds from my account"
– "can you help me transfer funds"
발화 불일치 "i want to transfer some funds"
word1 < word2 word2의 일치 항목이 문장의 시작 부분부터 시작됨을 나타냅니다. 이 기능은 특히 word2가 발화 중간에 나타나는 경우에 유용합니다.
대괄호 뒤에 공백을 추가합니다
샘플 패턴 "transfer < fund"
발화 일치 – "자금 이체를 원해요"
– "자금 이체를 시작하고 싶습니다"
발화 불일치 "i want to transfer"
word1 > word2 문장의 끝을 나타내며 그다음에는 단어를 사용할 수 없습니다.
대괄호를 닫기 전에 공백을 추가합니다
샘플 패턴 "transfer * fund >"
발화 일치 – "transfer funds"
– "transfer few funds"
발화 불일치 "오늘 자금 이체"
!abc 단어/콘셉트 "abc"는 이 토큰 이후의 사용자 발화 어디에서도 존재하지 않아야 함을 나타냅니다.
!와 단어/콘셉트 사이에 공백은 없습니다
샘플 패턴 – "!status transfer fund"
– "transfer !status fund"
– "transfer fund !status"
발화 일치 "i want to transfer funds"
발화 불일치 – "what is the status of my fund transfer"
– "i want to find my fund transfer status"
!! abc 바로 다음 단어/콘셉트는 "abc"가 되어서는 안 됩니다
.!!와 단어/콘셉트 사이에 공백이 없어야 합니다
샘플 패턴 "transfer fund !!status"
발화 일치 – "i want to transfer funds"
– "what is the status of my fund transfer"
– "i want to find my fund transfer from yesterday's status"
발화 불일치 "i want to find my fund transfer status"
[ … ] 단어/콘셉트 그룹을 정의하는 데 사용되며 [ ] 에서 선언된 그룹 중 하나와 정확히 일치해야 합니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
유지 관리 및 추적의 어려움 때문에 이 패턴 대신 콘셉트를 사용하는 것이 좋습니다. 이 패턴은 봇 성능에도 악영향을 미칩니다.
샘플 패턴 "transfer [ funds amount cash ]"
발화 일치 – "transfer money"
– "can i transfer some cash"
– "i want to transfer funds"
발화 불일치 "transfer dollars"
{ … } 선택적 그룹 또는 단어/콘셉트를 정의하는 데 사용되며, 일치 값은 { }에 선언된 단어/패턴 중 하나 또는 0에 대한 것입니다. 일치하는 항목이 발견되면 그룹의 나머지 부분은 무시되므로 단어를 순서대로 정렬하세요.
참고 사항: 괄호는 단어로 묶지 않아야 합니다. 즉, 괄호와 인접 단어 사이에 공백을 둡니다.
샘플 패턴 "transfer { some few my } fund"
발화 일치 – "how do i transfer funds"
– "can i transfer some funds"
발화 불일치 "i want to transfer"
( … ) 패턴을 포함합니다. 예를 들어, 패턴이나 패턴의 일부가 이 괄호 안에 있으면 [ ] 및 { }와는 다른 패턴으로 이를 취급합니다.
이것은 기본 설정입니다. 즉, 패턴 word1 word2가 있으면 [ ] 또는 { } 안에 하위 패턴을 정의하는 데
일반적으로 명시적으로 사용되는 (word1 word2)로 처리됩니다.
샘플 패턴 "( transfer fund )"
발화 일치 "transfer funds from my account"
발화 불일치 "i would like to initiate fund transfer"
<< … >> 순서로 단어를 찾는 데 사용됩니다.
잘못된 긍정으로 실행될 수 있는 위험으로 인해, 이 패턴을 사용하지 않는 것이 좋습니다.
샘플 패턴 "<< transfer fund >>"
발화 일치 – "transfer funds from my account"
– "i would like to initiate fund transfer"
발화 불일치 "i want to transfer"
word1 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다
샘플 패턴 "'like to transfer fund"
발화 일치 "I would like to ransfer funds from my account"
발화 불일치 "I really liked transfer funds process"
word1~concept2
~concept1~concept2
(ver8.0부터)
단어(word1) 또는 콘셉트(concept1)는 다른 개념(concept2)의 멤버인 경우에만 일치시킬 수 있습니다. 가장 일반적인 용도는 각각의 POS 태그에 동적으로 추가되는 시스템 콘셉트를 통해 하는 것입니다.
샘플 패턴 "schedule~verb"
발화 일치 "schedule a meeting"
발화 불일치 "show my schedule"

패턴 연산자

  • AND: ( X Y ): 순서대로 정렬된 단어 관계입니다. 이것은 기본 설정입니다. 즉, 패턴을 취소 순서로 지정하면 이는 (취소 순서)와 같습니다.
    예를 들어 (주문 취소)전화 주문 취소와 일치하지만 iPhone X에 대한 보류 중인 주문이 있습니다. 취소할 수 있나요와는 일치하지 않습니다. 봇 빌더 도구는 단어 사이에 와일드카드를 많이 사용하는 패턴을 사용합니다(의도에 따라 최대 3개). 따라서 주문 취소 패턴이 일치할 수 있습니다.

    • cancel order
    • cancel my order
    • cancel that last order
    • cancel last weeks big order
  • OR: [X Y Z]: 이 중 어느 것이든 사용자의 발화에서 혼용될 수 있습니다. 예를 들어 ([get make] me [food drink dessert])는 아래의 모든 발화와 일치합니다:
    • Get me food
    • Make me a drink
    • Get me a drink
    • Get me a dessert
    • Make me some quick food
  • NOT: !X: 의도 일치에 대한 사용자 발화에 표시되지 않아야 하는 단어입니다. 예를 들어, (!forecast)는 현재 날씨 가져오기라는 이름의 의도 패턴으로 표시되며 봇은 3일간의 일기 예보라 불리는 또 다른 의도를 지원합니다.
    • 사용자 발화: 캘리포니아 여행을 계획하고 있어 보를 받아줘
      • 현재 날씨 가져오기와 일치하지 않습니다
      • 3일간의 일기 예보와 일치합니다.
        !word는이 시점 이후를 의미하지 않습니다. 따라서 (!forecast the weather) 및 (get the weather !forecast)는 다릅니다. 이 발화는 첫 번째가 아닌 두 번째 날씨와 일치하는 날씨에 대한 예보를 가져오기 합니다.
  • 선택 사항: {X}: 예를 들어, {phone} 사용자 발화가 전화번호 받기 또는 번호 받기일 경우 플랫폼에서 동일하게 처리합니다.
  • 구문 적용: X_Y: 사용자 발화에서 중간에 아무 단어 없이 해당 구문의 발생을 강제합니다. 예: transfer_funds. 발화 transfer funds 또는 I want to transfer funds 는 일치하지만 Can I transfer some funds와는 일치하지 않습니다.
  • 콘셉트: ~: 플랫폼에는 개발자가 패턴을 정의하는 데 사용할 수 있는 많은 기본 제공 콘셉트가 있습니다. 예를 들어 (I [like love] ~world_country)는 다음과 일치합니다
    • I like India
    • I love traveling to Australia
    • I would like to visit an African country
  • 무작위: <<, >>: 임의의 순서로 단어를 찾는 데 사용됩니다. 예를 들어, <<Cancel Order>>는 Cancel my phone order와 일치하며 I have a pending order for an iPhone X, can I cancel와도 일치합니다.
  • 문장 시작/끝: <, >: 예를 들어, (transfer fund >)는 I want to transfer funds과 일치하지만 transfer funds today와는 일치하지 않습니다.
  • 인용: ‘ –: 단어를 인용하거나 정식 형식이 아닌 단어를 사용하는 경우, 시스템은 패턴에서 사용한 것으로 제한됩니다. 예를 들어, (like to transfer funds) 이것은 I would like to transfer funds from my account 와 일치하지만 I really liked transfer funds process와는 일치하지 않습니다.

네거티브 패턴

네거티브 패턴은 구문이 있는 상태에서 탐지된 의도를 제거하는 데 사용할 수 있습니다. 이렇게 하면 잘못된 긍정에 일치하는 의도를 필터링 할 수 있습니다.

사용자 발화: "I was transferring funds when I got network failure error"
의도 감지됨자금 이체
의도된 의도컴플레인 등록

자금 이체
사용자 발화 의도에 대한 부정적인 패턴 (network failure) (error) (technical issue)을 추가합니다: "I was transferring funds when I got network failure error"
또는 "I was transferring funds when I faced a technical issue"
또는 "I got an error during transfer funds process."
의도 거부됨자금 이체
의도 트리거 됨: 컴플레인 등록

엔터티 추출 패턴

패턴을 사용하면 사용자 발화 내 위치 및 발생에 따라 사용자 발화에서의 엔티티의 값을 식별할 수 있습니다.

{…}, […], !, ~콘셉트와 같은 의도 패턴 연산자는 엔티티 추출을 위해 사용될 수 있습니다. 다음은 패턴을 적용할 수 있는 몇 가지 활용 사례입니다.

모든 엔티티 패턴에는 플랫폼에서 엔티티 값을 찾아야 하는 위치를 나타내는 * (일부 형식의)가 포함되어야 합니다.

자금 이체 의도를 포함한 뱅킹 봇 예제를 계속합니다. 이 의도는 ToAccountFromAccount의 두 엔티티가 필요합니다. 이를 달성하는 방법을 살펴보겠습니다.

패턴 1: word1 * word2

이 와일드카드를 엔티티의 예상 위치를 나타내는 위치 와일드카드로 사용할 수 있습니다.
ToAccount 엔티티 패턴: to * from
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티ToAccount = ABC123
사용자 발화를 통해 엔티티 추출되지 않음: "transfer funds for ABC123 from my account"

패턴 2: word1 * n

이것은 지정된 word1 뒤의 단어 수에 따라 엔티티의 예상 위치를 나타내는 위치 와일드카드 * 로 사용할 수 있습니다. 즉, word1 뒤에 있는 n 단어는 엔터티로 간주됩니다. n 단어가 없다면 word1의 다음 발생을 찾습니다.
ToAccount 엔티티 패턴: From *2
사용자 발화Transfer funds to ABC123 from my account.
추출된 엔티티: FromAccount = 내 계좌
사용자 발화: Transfer funds to ABC123 from XYZ321 that is from my account.
추출된 엔티티
: FromAccount = 내 계좌
사용자 발화를 통해 엔티티 추출 되지 않음
: "transfer funds to ABC123 using my account"

패턴 2에 대한 확장자: word1 *~n

위(패턴 2)와 유사하지만 해당 단어 개수를 사용할 수 있다면 최대 n개의 숫자를 추출합니다. 엔티티가 무언가를 추출해야 하므로 *~1이 실제로 * 1과 같습니다.

패턴 3: word1*word2와 word3*n의 조합입니다

이는 사용자 발화에서 엔티티 값을 찾을 수 있는 위치에 대한 패턴과 엔티티에 기여하는 단어 수를 조합하는 것으로 사용될 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *1"
FromAccount 엔티티에 대한 패턴: "From * to" 및 "to From * 2"
사용자 발화Transfer funds to ABC123 from my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 4: [ word1 word2 ] *

이는 말에서 하나 이상의 단어가 있어야 하는 일련의 단어 또는 콘셉트를 사용하는 패턴일 수 있습니다. 그룹 내 순서는 중요합니다(자세한 내용은 위의 의도 감지에서 참조).
ToAccount 엔티티 패턴: "to * [ using from ]""[ using from ] to *1"
FromAccount 엔티티에 대한 패턴: "[ using from ] * to" 및 "to [ using from ] *"
사용자 발화Transfer funds to ABC123 from my account.
또는Transfer funds using my account to ABC123.
추출된 엔티티ToAccount=ABC123FromAccount=my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds for ABC123 using my account"

패턴 5: ~CustomConcept *

이는 개념 사용을 위한 것입니다. 커스텀 콘셉트를 생성하여 패턴을 정의하는 데 사용할 수 있습니다.
ToAccount 엔티티 패턴: "to * from""from to *"
FromAccount 엔티티에 대한 패턴: "~in * to" 및 "to ~in *"
커스텀 콘셉트: ~in(using) (from)
사용자 발화Transfer funds to ABC123 using my account.
또는 Transfer funds from my account to ABC123.
추출된 엔티티ToAccount = ABC123 및 FromAccount = my account
사용자 발화를 통해 엔티티 추출 되지 않음: "transfer funds to ABC123 of my account"

패턴 6: ~intent

엔티티 패턴 및 커스텀 엔티티에 유용합니다
인텐트 식별에 사용되는 단어는 동적으로 ~intent 콘셉트를 사용하여 표시됩니다. 그러면 이 점을 일부 엔티티 패턴의 고정점 또는 참조점으로 사용할 수 있습니다.
샘플 패턴"~intent~meeting~plural"
사용자 발화를 통해 엔티티 추출되지 않음: show my meetings.
사용자 발화가 엔티티를 표시할 수 있습니다. "schedule a presentation called Meeting the Sales Goals"

패턴 7: $currentEntity

엔티티가 실제로 처리될 때까지 패턴 평가를 지연시킬 때 유용합니다. 일반적으로 엔티티 패턴은 대화가 시작될 때 그리고 엔티티가 처리될 때까지 단어를 보호해야 하는지 확인하기 위해 새 입력 시 평가됩니다. 특히 문자열의 경우 항상 바람직한 것은 아닙니다.
패턴"$currentEntity=TaskTitle 'called *"
대화 흐름이 TaskTitle 노드에 도달하면 위의 규칙이 패턴을 평가합니다.

パターンを使用することで、NLPインタプリターの精度を改善できます。

このドキュメントでは、さまざまなパターンの構文と、それらがインテントの検出とエンティティの抽出にどのように使用できるかについて詳述します。

覚えておくべきこと:

  • パターンは、MLエンジンが使用できない場合のみの最終手段として使用されます。例として、慣用句や命令文のような発話を認識できるようにボットをトレーニングする場合などです。
  • パターンは、リストアップされた順に評価されます。一致したものが見つかると、残りのパターンは評価されません。そのため、パターンを追加する際には、制限の多いものから少ないものの順に追加していることを確かめてください。
  • ワイルドカード(*)は1つだけ、パターンに使用できます。
  • ほとんどの機能はすべての言語に対応していますが、一部例外もありますので、詳細はこちらをご覧ください
インテントパターンを作成する際の一般的なガイドラインは以下のとおりです。
  • 3語以上を使用します。
  • 単語を正規形式で使用します(例:不定詞、単数形の名詞)。
  • 単語およびその同義語の両方に小文字を使用します。
  • 単語の綴りを米国式にします(例: normaliseではなく normalize )。
  • 限定詞および代名詞(the、a、my、that)の使用は避けます。
  • 数字の使用は避けます。
  • タスクパターンの定義にエンティティ値を使用することは避けます。
  • 省略語(例:what's)は使用しないでください。
  • () & / ⃝ $ [ ] + * などの特殊文字は使用しないでください。
  • – , などの句読点は使用しないでください。! ? ‘ “。

インテント検出のためのパターン

以下は、インテント検出のために設定可能なパターン構文のリストとその例です。

パターン 説明 パターン例
単語1 単語2 … 単語n このパターンでは、ユーザーの発話で使用できると定義されたすべての単語を、同じ連続した順序で使用することを義務付けています。ただし、パターンに記載されている連続した2つの単語の間には、最大3つの(言語固有の)単語の追加が認められており、また、これらの指定された一連の単語の前後には無限の単語数が認められています。
サンプルパターン "transfer fund"
発話の一致 -「私の口座から資金を振り替えていただけますか
– 「私の口座からいくらかの資金を振り替えていただけますか
-「資金を振り替える
一致しない発話 -「振り替えたいのですが
多額の資金を振り替えていただけますか
– 「資金を振り替えたいのですが
word1_word2 単語1と単語2の間に追加の単語を入れてはいけないという、強制フレーズ。これは、一連のトークンがフレーズとして読まれるようにするためです。使用方法は単語に限定され、概念は認められません。
メモ:単語1、単語2間および_の間には、スペースを入れてはいけません。また、「_ word1」は、ユーザーの発話のword1がプラットフォームによって マークされていないことを確認するためのものであり、エンティティの抽出の対象となることに注意してください。これは、インテントパターンでエンティティ単語が使われている場合に役に立ちます。
サンプルパターン "transfer_fund"
発話の一致 資金を振り替えるのを手伝っていただけませんか
一致しない発話 私の口座からいくらかの資金を振り替えていただけますか
word1 * word2 指定された単語/フレーズの間に追加される単語の数は、0~無限
サンプルパターン "transfer * fund"
発話の一致 -「私の口座からいくらかの資金を振り替えていただけませんか
– 「資金を振り替えるのを手伝っていただけませんか
一致しない発話 振り替えたいのですが
word1 *n word2 指定された単語/フレーズの間にある正確にn個の追加単語
サンプルパターン "transfer *2 fund"
発話の一致 – 「私の口座から多額の資金を振り替えたいのですが、お手伝いいただけますか
一致しない発話 -「振り替えたいのですが
-「私の口座からいくらかの資金を振り替えていただけませんか
– 「私の口座から多額の資金を振り替えたいのですが、お手伝いいただけますか
word1 *0 word2 2つのトークンの間のワイルドカードを無効にするには。2つの単語の間のアンダースコアと同様に、2つの概念の間や[ ], { }のグループ内でも使用できます。
(7.1以降で使用可能)
サンプルパターン "transfer *0 fund"
発話の一致 -「私の口座から資金を振り替えていただけませんか
– 「資金を振り替えるのを手伝っていただけませんか
一致しない発話 いくらかの資金を振り替えたいのですが
word1 < word2 単語2の一致が文章の先頭から始まることを示します。特に、単語2が発話の途中で現れる場合に有効です。
角括弧の後にスペースを追加します。
サンプルパターン "transfer < fund"
発話の一致 -「資金を振り替えたいのですが
-資金振替を開始したいのですが
一致しない発話 振り替えたいのですが
word1 > word2 文章の終わりを示し、それ以降に単語は使用できません。
角括弧を閉じる前にスペースを追加します。
サンプルパターン "transfer * fund >"
発話の一致 -「資金を振り替える
-「小額の資金を振り替える
一致しない発話 今日、資金を振り替える
!abc 単語/概念「abc」が、このトークン以降のユーザーの発話のどこにも存在してはならないことを示します
! と単語/概念の間にスペースを入れてはいけません
サンプルパターン -「!ステータス資金を振り替える
-「資金を!ステータス振り替える
-「資金を振り替える!ステータス
発話の一致 資金を振り替えたいのですが
一致しない発話 -「私の資金振替のステータスはどんなですか
-「私の資金振替のステータスを見つけたいのですが
!!abc 次の単語/概念が「abc」であってはなりません
!!と単語/概念の間にスペースを入れてはいけません
サンプルパターン 資金振替!!ステータス
発話の一致 -「資金を振り替えたいのですが
-「私の資金振替のステータスはどんなですか
-「昨日のステータスから私の資金振替を探したいのですが
一致しない発話 私の資金振替のステータスを探したいのですが
[ …] 単語/概念のグループを定義するために使用され、一致は[ ]で宣言されたグループの正確な1つに対するものでなければなりません。一致する単語が見つかった場合、残りのグループは無視されることに注意して、それに応じて単語を順番に並べてください。
メモ: 括弧は単語と一緒にしてはいけません。つまり、括弧と隣の単語の間にスペースを確保してください。
メンテナンスやトラッキングが困難なため、このパターンの代わりに概念を使用することをお勧めします。このパターンは、ボットのパフォーマンスにも悪影響を及ぼします。
サンプルパターン [資金、金額、キャッシュ]を振り替える
発話の一致 -「お金を振り替える」-「
いくらかのキャッシュを振り替えられますか
-「資金を振り替えたいのですが
一致しない発話 ドルを振り替える
{ …} 任意のグループまたは単語/概念を定義するために使用され、一致は、{ }で宣言された単語/パターンのうちゼロまたは1つに対してなされます。一致する単語が見つかった場合、残りのグループは無視されることに注意して、それに応じて単語を順番に並べてください。
メモ: 括弧は単語と一緒にしてはいけません。つまり、括弧と隣の単語の間にスペースを確保してください。
サンプルパターン 「{いくらかの、小額の、私の}資金を振り替える
発話の一致 -「資金振替を行う方法
-「いくらかの資金を振り替えることができますか」"
一致しない発話 振り替えたいのですが
( …) パターンを含む、つまりパターンやパターンの一部がこれらの括弧で囲まれている場合は、[ ]や{ }とは異なり、パターンとして扱います。
これはデフォルトの設定です。つまり、パターン単語1単語2(単語1単語2 )として扱われます。
[ ]や{ }の中にサブパターンを定義するために明示的に使用されるのが一般的です。
サンプルパターン "( transfer fund )"
発話の一致 私の口座から資金を振り替える
一致しない発話 資金振替を開始したいと思います
<< …>> 任意の順序で単語を見つけるために使用
誤検出のリスクがあるため、このパターンは使用しないことをお勧めします。
サンプルパターン "<< transfer fund >>
発話の一致 -「私の口座から資金を振り替える
-「資金振替を開始したいと思います」"
一致しない発話 振り替えたいのですが
単語1 単語を引用するか、または正規形式ではない単語を使用する場合、システムはパターンで使用したものだけに制限されます
サンプルパターン 資金を振り替えたいです
発話の一致 "私の口座から資金を振り替えたいです
一致しない発話 資金振替プロセスがとても気に入りました
単語1~概念2
~概念1~概念2
(ver8.0より)
単語(単語1)または概念(概念1)は、他の概念(概念2)のメンバーでもある場合にのみ一致します。最も一般的な使用方法は、POSタグごとに動的に追加されるシステムコンセプトによるものです。
サンプルパターン 予約する~動詞
発話の一致 会議を予約する
一致しない発話 私の予約を表示する

パターン演算子

  • AND:( X Y ):順番に並んだ単語の順序関係。これはデフォルトの設定です。つまり、パターンを 注文をキャンセル と指定すると、 (注文をキャンセル)と同じになります。
    例として、(注文をキャンセル) は、私の電話注文をキャンセルには一致しますが、iPhone Xの注文を保留していますが、キャンセルできますかには一致しません。[ボットビルダー]ツールは、単語間のワイルドカードの数を増やしていくパターンを使用します(インテントは最大3個まで)。そのため、注文をキャンセルのパターンが一致することがあります。

    • 注文をキャンセル
    • 私の注文をキャンセル
    • そのラストオーダーをキャンセル
    • 先週のビッグオーダーをキャンセル
  • OR:[X Y Z」:これらのいずれも、ユーザー発話の中で相互に使用できます。例として、([get make] me [food drink dessert])は、以下のいずれかの発話にも一致します。
    • 食べ物をください
    • 飲み物を作ってください
    • 飲み物をください
    • デザートをください
    • 手軽な料理を作ってください
  • NOT:!X: インテント一致のユーザー発話に現れてはならない単語。例として、(!予報)は 現在の天気を取得するというインテントのパターンとしてマークされており、ボットは3日間の天気予報を取得するという別のインテントをサポートしています。
    • ユーザー発話:カリフォルニアへの旅行を計画中なので、天気予報を教えてください
      • 現在の天気と一致しません。
      • 3日間の天気予報に一致します
        なお、!単語このポイント以降ではないという意味であることにご注意ください。つまり、(!天気予報)と(!天気予報を取得する)は違うということです。天気予報を取得する」という発話は、2番目の発話とは一致しますが、1番目の発話とは一致しません。
  • オプションナル:{X}: 例として、{phone}。ユーザーの発話が 「電話番号を教えて 」でも「 番号を教えて でも、プラットフォームは同じように扱います。
  • フレーズを強化:X_Y: ユーザー発話の中で、間に言葉を挟まず、フレーズをありのままに出せるように強化すること。例:transfer_funds。資金を振り替える資金を振り替えたいのですがという発話は一致しますが、いくらかの資金を振り替えていただけますかという発話は一致しません。
  • 概念:~:プラットフォームには、開発者がパターンを定義するために使用できる、大量のビルトインコンセプトがあります。例として、(私は ~world_country[が好きです]) は以下に一致します。
    • 私はインドが好きです
    • 私はオーストラリアへの旅行が好きです
    • 私はアフリカの国に行くのが好きです
  • 順不同:<<, >>: 任意の順序で単語を探すために使用します。例として、<<注文をキャンセル>>は、 電話注文をキャンセル に一致し、また、iPhone Xの注文を保留していますが、キャンセルできますかにも一致します
  • ステートメントの開始/終了<, >: 例として、( 資金を振り替える > )は、私はI資金を振り替えたいt と一致しますが、 今日、資金を振り替えるとは一致しません。
  • 引用:‘ –: 単語を引用するか、または正規形式ではない単語を使用する場合、システムはパターンで使用したものだけに制限されます。例として、(資金を振り替えるのが好きです) これは、私の口座から資金を振り替えるのが好きですと一致しますが、私は本当に資金振替プロセスが好きでしたには一致しません。

ネガティブパターン

ネガティブパターンは、フレーズの存在によって検出されたインテントを排除するために使用できます。これにより、一致したインテントをフィルタリングして、偽陽性を防ぐことができます。

ユーザー発話:「ネットワーク障害のエラーが発生したとき、資金を振り替え中でした
検出されたインテント資金振替
意図されたインテント苦情を登録

インテント資金振替
ユーザー発話ネガティブパターン (ネットワーク障害)(エラー)(技術的イシュー)を追加します。「ネットワーク障害のエラーが発生したとき、資金を振り替え中でした」
または「技術的イシューに直面したとき、資金を振り替え中でした」
または「資金振り替え中にエラーが生じました。」
却下されたインテント資金振替
トリガーされたインテント: 苦情を登録

エンティティ抽出のパターン

パターンは、ユーザー発話におけるエンティティの位置と出現率に基づいて、ユーザー発話におけるエンティティの値を特定するために使用できます。

“{…}”“[…]”“!”“~概念”などのインテントパターン演算子は、エンティティ抽出に使用できます。以下は、このパターンの適用方法に関するいくつかのユースケースです。

すべてのエンティティパターンには、プラットフォームがエンティティの値を探す場所を表示するために、(何らかの形式の)*を含める必要があります。

バンキングボットの例では、資金振替インテントを継続します。このインテントには、ToAccountFromAccountの2つのエンティティが必要です。これを達成する方法を見ていきます。

パターン1:単語1 * 単語2

これは、エンティティの想定される位置を示す位置ワイルドカードとして使用できます。
ToAccountエンティティのパターンto * from
ユーザー発話私の口座からABC123に資金を振り替えてください。
抽出されたエンティティToAccount = ABC123
エンティティ抽出に結びつかないユーザー発話:「私の口座からABC123 宛に資金を振り替えてください。

パターン2:単語1 *n

これは、指定された単語1の後の単語数に基づいて、エンティティの想定される位置 を示す位置指定ワイルドカード*として使用できます。つまり、単語1の後にあるn個の単語がエンティティとして考慮され、n個の単語が存在しない場合は、単語1の次の出現箇所を探すことになります。
ToAccountエンティティのパターンfrom *2
ユーザー発話私の口座からABC123に資金を振り替えてください。
抽出されたエンティティFromAccount = 私の口座
ユーザー発話: 私の出金口座XYZ321からABC123に資金を振り替えてください。
抽出されたエンティティ
:FromAccount = 私の口座
エンティティ抽出に結びつかないユーザー発話
:「私の口座を使用して、ABC123に資金を振り替えてください」

パターン2:単語1 *~n への拡張

上記(パターン2)と同様に、n個の単語が利用できれば、そのn個まで抽出します。エンティティは何かを抽出する必要があるので、*~1は実際には*~1と同じであることに、注意してください。

パターン3:単語1*単語2と単語3 *nの組み合わせ

これは、ユーザー発話の中でエンティティ値が見つかる可能性の高い場所と、エンティティに寄与する単語数を示すパターンの組み合わせとして使用できます。
ToAccountエンティティのパターン「to * from」「from to *1」
 FromAccount エンティティのパターン:「from * to」と「to from *2」
ユーザー発話私の口座からABC123に資金を振り替えてください。
または、 私の口座からABC123に資金を振り替えてください。
抽出されたエンティティToAccount = ABC123FromAccount = 私の口座
エンティティ抽出と結びつかないユーザー発話:「私の口座を使用してABC123 宛に資金を振り替えてください」

パターン4:[ word1 word2 ] *

これは、1つ以上が発話中に表れる必要のある単語や概念のグループを使用したパターンの場合もあります。グループ内の順序が重要です(詳細については、上記のインテントの検出 をご覧ください)。
ToAccountエンティティのパターン「to * [using from]」「[using from] to *1」
 FromAccount エンティティのパターン:[[Using from] * to」と「to [using from] * 」
ユーザー発話私の口座からABC123に資金を振り替えてください。
または、 私の口座を使用してABC123に資金を振り替えてください。
抽出されたエンティティToAccount = ABC123FromAccount = 私の口座
エンティティ抽出と結びつかないユーザー発話:「私の口座を使用してABC123 宛に資金を振り替えてください」

パターン5:~CustomConcept *

これは、コンセプトを使用するためのものです。独自のカスタムコンセプトを作成し、それを使用してパターンを定義できます。
ToAccountエンティティのパターン:“to * from”と“from to *”
 “FromAccount”エンティティのパターン:“~in * to”と“to ~in *”
カスタムコンセプト:“~in” “- (using) (from)
ユーザー発話私の口座を使用して、ABC123に資金を振り替えてください
または、 私の口座からABC123に資金を振り替えてください。
抽出されたエンティティToAccount = ABC123FromAccount = 私の口座
エンティティ抽出と結びつかないユーザー発話:「私の口座ABC123に資金を振り替えてください

パターン6:~インテント

エンティティパターンやカスタムエンティティで役に立ちます
インテントの識別に使用される単語は、“~インテント”概念で動的にマークされます。これは、いくつかのエンティティパターンのアンカーまたは参照ポイントとして使用できます。
サンプルパターン「~intent~meeting~plural
エンティティ抽出に結びつかないユーザー発話私の会議を表示します。
ユーザー発話はエンティティをマークする場合があります:「販売目標を達成というプレゼンテーションを予定しています

パターン7:$currentEntity

エンティティが実際に処理されるまで、パターンの評価を遅らせるのに役立ちます。通常、エンティティパターンは、ダイアログの開始時および新規入力時に評価され、そのエンティティが処理されるまで、いずれかの単語を保護しなければならないかどうかを確認します。これは、特に文字列の場合、必ずしも望ましいことではありません。
パターン「$currentEntity=TaskTitle 'called*」
上記のルールでは、ダイアログフローがタスクタイトルノードに到達したときにパターンを評価する結果となります。

Using patterns can help to improve NLP interpreter accuracy.

In this document, we will elaborate on the various pattern syntax and how they can be used in intent detection and entity extraction.

Things to Remember:

  • Patterns are to be used as a last resort, only for cases where ML engine cannot be used. Examples of such cases would be to train bot in recognising idiomatic utterances, command like utterances.
  • Patterns are evaluated in the order of their listing. Once a match is found the rest of the patterns are not evaluated. So ensure when adding patterns to add in the order of most restrictive to least restrictive.
  • Only one wildcard (*) is allowed in a pattern.
  • While most of the features are supported in all languages, there are some exceptions, see here for more details.
The following are some general guideline for creating intent patterns:
  • Use a minimum of 3 words.
  • Use words in their canonical forms (i.e. infinitive verbs, singular nouns).
  • Use lowercase both for words and their synonyms.
  • Use the US spelling of words (i.e. normalize instead of normalise).
  • Avoid using determiners and pronouns (the, a, my, that).
  • Avoid using digits.
  • Avoid using entity values in defining a task pattern.
  • Don’t use elision (i.e. what’s ).
  • Don’t use special characters such as () & / \ $ [ ] + *.
  • Don’t use punctuation such as – , . ! ? ‘ “.

Patterns for Intent Detection

Following is a list of pattern syntax, along with examples, that can be configured for intent detection.

Note: Pattern matching occurs in the canonical form of a sentence. Therefore, the words in a pattern should be in their canonical form.

 

Pattern Description Pattern Examples
word1
word2 …
wordn
This mandates all the words defined to be available in the user utterance in the same consecutive order with upto 3 (language specific) additional words allowed between any two consecutive words mentioned in the pattern and infinite number of words before and after those specified set of words.

Note: The three wildcard words are configurable as advanced NLP options.

Sample Pattern credit card limit
Utterance Match
– “can you please let me know my credit card limit?
– “What is the credit card limit for Priority customers?
– “I would like to know how to enhance my credit card with a new limit.
Utterance not Matching – “I want to know what the credit limit on my Priority Privilege Card is.
– “Can I enhance the credit limit after one year on my card?
– “Will the credit card I’m using be eligible for a limit increase next month?
word1_word2 Compound words:  A compound word is treated as one word and that impacts how the canonical form is constructed. No additional words allowed in between word1 and word2. This is to ensure that a sequence of tokens are read as a phrase. Usage is restricted to words, concepts not allowed.

Note: There should be no space between the word1, word2 and _.

Sample Pattern credit_card
Utterance Match can you help me with my credit card balance?
Utterance not Matching can you please let me know when I would receive the credit on my card?
_word1 _word1 ensures that the word1 in the user utterance is not marked as Used Up by the platform and is to be considered for entity extraction. This is useful when entity words are used in the intent pattern.

For e.g., the pattern (buy ~number ticket) will match “buy 2 tickets for the show at 7”; each of the three pattern words internally will be tracked as used up, but a ticket number entity will first consider “7” and not “2” because “7” is not used up. If the pattern is changed to (buy _~number ticket), then “2” is still matched for the intent pattern but the word is not marked as used up and the entity would consider it, hence the leading underscore is useful for pattern tokens that constitute important data.

Sample Pattern “buy _~number tickets
Utterance Match Can you help me to buy 2 tickets for the show at 7 P.M.?
Utterance not Matching NA
word1 *n word2 Exactly n number of additional words between the specified words/phrases
Sample Pattern credit *3 card
Utterance Match – “can you tell me what the credit limit on my card will be if I upgrade to Platinum?
Utterance not Matching – “can you tell me what the credit limit on my new card will be if I upgrade to Platinum?
– “can you please tell me how many points I can earn for each transaction on my Credit Card?
– “can my credit card’s limit be enhanced further?
word1 *~n word2 Up to n number of additional words between the specified words/phrases.

Note: FM engine automatically generates variations with this wildcard and unless it is a special scenario, developers do not further perform any action.
An advanced NLP configuration setting allows developers to change the default number of possible wildcards between tokens.
Sample Pattern credit *~3 card
Utterance Match – “can you tell me what the credit limit on my card will be if I upgrade to Platinum?

_“can you tell me what the credit on my card is?”
Utterance not Matching – “can you tell me what the credit limit on my new card will be if I upgrade to Platinum?
word1 *0 word2 To disable wildcards between two tokens. Similar to the underscore between two words but can be used between two concepts or within [  ], {  } groups.
(available 7.1 onwards).
Note: If a phrase needs to be treated as an idiom or  a complete unit, then instead of using an _ or the *0 syntax, the phrase can be used in concept. The advantages of this usage are having a specific sequence of words, correct canonical handling, easy reuse, and better performance.
Sample Pattern credit *0 card
Utterance Match – “can you please check on my credit card usage last week?

– “can you help me with this merchant transaction ID on my credit card?

Utterance not Matching I want to enhance the credit limit on this card next month.
 < word1 word2 Indicates the match for word2 should start from the beginning of a sentence. Add a space after the angular bracket.

Note: <’ indicates the start of the sentence. The next token would match the first word.

Sample Pattern < cancel card”
Utterance Match – “how to cancel my credit card?.
– “please cancel my credit card.
Utterance not Matching I want to check my credit balance before knowing how to cancel the card
word1 word2 > Indicates that the next word or phrase after detecting the exact match is the end of the sentence.

Add a space before closing the angular bracket

Sample Pattern credit card >
Utterance Match – “I can’t see the balance on my credit card.
– “What are the standing instructions on my credit card?
Utterance not Matching The credit limit on the card is not showing.
!abc Indicates the word/concept “abc” should not exist anywhere in the user utterance after this token

No space between ! and word/concept

Sample Pattern – “!block my credit card”
Utterance Match I want to know the balance on my credit card.
Utterance not Matching – “How to block my credit card? 
!!abc The very next word/concept should not be “abc”
No space between !! and word/concept.
Sample Pattern credit card !!balance
Utterance Match – “I want to check my credit card limit.
– “What is the limit on my credit card?”
– “I want to check if there is any amount due on my corporate credit card.
Utterance not Matching What is my credit card balance?
[ … ] Used to define a group of words/concepts and the match should be against exactly one of the group declared in [ ]. Be aware that when a match is found the rest of the group is ignored, so order the words accordingly.

Note: The brackets should not be clubbed with the word, i.e. maintain a space between the parenthesis and the adjacent word.
Sample Pattern credit card [ limit balance expire ]
Utterance Match – “When will my credit card limit be increased?
– “What is my credit card balance as on date?
– “When will my credit card expire?”
Utterance not Matching What is the process for credit card replacement?
{ … } Used to define an optional group or words/concepts and the match would be against zero or one of the words/patterns declared in { }. Be aware that when a match is found, rest of the group is ignored, so order the words accordingly.

Note: The brackets should not be clubbed with the word, i.e. maintain a space between the parenthesis and the adjacent word.
Sample Pattern “what balance { husband wife } credit card
Utterance Match – “What is the balance on my husband’s credit card?
–  “What balance does my credit card show?
Utterance not Matching – “What is the name on my credit card?”
( … ) Contains a sub-pattern i.e. when a pattern or part of a pattern is enclosed in these parentheses, we treat it as a pattern unlike [ ] and { }.
This is the default setting i.e. when a pattern word1 word2 it is treated as ( word1 word2 )
Commonly used explicitly to define sub pattern inside [ ] or { }
Sample Pattern ( credit card )
Utterance Match I don’t have my credit card with me right now.
Utterance not Matching If I am upgraded to a Gold membership, will the credit limit on the new card be increased?”
<< … >> Used to find words in any order anywhere in the sentence.

Due to the risk of running into false positives, you are advised not to use this pattern.

Sample Pattern << credit limit on the card >>
Utterance Match – “can the credit limit on the card be enhanced?
“On Tuesday I got a new card with a raised limit, so I would like to apply some in-store credit to it.
Utterance not Matching Please confirm my outstanding amount.
‘word1 If you quote words or use words that are not in canonical form, the system will restrict itself to what you used in the pattern.
Sample Pattern “cancel ‘the transaction”
Utterance Match I want to cancel the transaction.
Utterance not Matching I would like to cancel a transaction.”
word1~concept2
~concept1~concept2
(from ver8.0)
A word (word1) or concept (concept1) can be matched only if it is also a member of another concept (concept2). The most common usage of this is through the system concepts that are dynamically added for each POS tag.
Sample Pattern credit~verb
Utterance Match Can you credit this amount to my source account please?
Utterance not Matching This is a credit and not a debit transaction.
word1 * word2 0 to infinite number of additional words between the specified words/phrases.
Sample Pattern credit * card
Utterance Match – “can you please confirm if the credit limit on my priority card can be enhanced this month?

– “can you help me understand if the credit limit will get affected if I do not use my card for more than six months?

Utterance not Matching “I want to understand your credit limit enhancement policy.

Pattern Operators

  • AND: ( X Y ): An ordered relationship of words in sequence. This is the default setting. i.e. when you specify a pattern as cancel order it is the same as (cancel order).
    For example, (Cancel Order) matches Cancel my phone order but doesn’t match I have a pending order for an iPhone X, can I cancel. Bot Builder tool uses patterns with increasing numbers of wildcards between words (up to 3 for an intent). So a pattern of Cancel Order can match:

    • cancel order
    • cancel my order
    • cancel that last order
    • cancel last weeks big order
  • OR: [X Y Z]: Any of these can be interchangeably used in the user utterance. For example, ([get make] me [food drink dessert]) will match any of the below utterances:
    • Get me food
    • Make me a drink
    • Get me a drink
    • Get me a dessert
    • Make me some quick food
  • NOT: !X: Words that should not appear in the user utterance for an intent match. For example, (!forecast) is marked as a pattern for intent named Get current weather and the bot supports another intent called Get 3-day weather forecast.
    • User utterance: Planning a trip to California get me the forecast
      • will not match Get current weather
      • will match Get 3-day weather forecast
        Note that the !word means not after this point. So (!forecast the weather) and (get the weather !forecast) are different. The utterance get the forecast for the weather matches the second but not the first.
  • Optional: {X}: For example, {phone} If the user utterance is Get me a phone number or get me a number the platform will treat it equally.
  • Enforce Phrase: X_Y: To enforce occurrence of the phrase as is in the user utterance, without any words in between. For example, transfer_funds. The utterance transfer funds or I want to transfer funds will match but not Can I transfer some funds.
  • Concepts: ~: Platform has a large set of inbuilt concepts that developers can use to define a pattern. For example, (I [like love] ~world_country) will match
    • I like India
    • I love traveling to Australia
    • I would like to visit an African country
  • Unordered: <<, >>: Used to find words in any order. For example, <<Cancel Order>> matches Cancel my phone order and also I have a pending order for an iPhone X, can I cancel
  • Start/End of Statement: <, >: For example, ( transfer fund > ) will match I want to transfer funds but will not match transfer funds today.
  • Quote: ‘ –: If you quote words or use words that are not in canonical form, the system will restrict itself to what you used in the pattern. For example, (like to transfer funds) This matches I would like to transfer funds from my account but not I really liked transfer funds process.

Negative Patterns

Negative Patterns can be used to eliminate intents detected in the presence of a phrase. This will help filter the matched intents for false positives.

User Utterance: “I was transferring funds when I got network failure error”
Intent DetectedTransfer Funds
Intended IntentRegister Complaint

Add a Negative Pattern (network failure) (error) (technical issue) for the intent Transfer Funds
User Utterance: “I was transferring funds when I got network failure error”
or “I was transferring funds when I faced a technical issue”
or “I got an error during transfer funds process.”
Intent RejectedTransfer Funds
Intent Triggered: Register Complaint

Patterns for Entity Extraction

Patterns can be used to identify the values for entities in user utterance based upon their position and occurrence in user utterance.

Intent patterns operators like {…}, […], !, ~concepts can be used for entity extraction. The following are some use cases how the patterns can be applied.

Every entity pattern has to include a * (of some form) to represent where the platform should look for an entity value.

Continuing with the Banking Bot example with Transfer Funds intent. This intent needs two entities – ToAccount and FromAccount. We will see how to achieve this.

Pattern 1: word1 * word2

This can be used as a positional wildcard that indicates the expected position of the entity.
Pattern for ToAccount entityto * from
User UtteranceTransfer funds to ABC123 from my account.
Entity ExtractedToAccount = ABC123
User Utterance not resulting in entity extraction: “transfer funds for ABC123 from my account”

Pattern 2: word1 *n

This can be used as a positional wildcard * that indicates the expected position of the entity based upon the number of words after the specified word1. That is, n words after the word1 are to be considered for the entity, if n words are not present then look for the next occurence of word1.
Pattern for ToAccount entity: from *2
User UtteranceTransfer funds to ABC123 from my account.
Entity Extracted: FromAccount = my account
User Utterance: Transfer funds to ABC123 from XYZ321 that is from my account.
Entity Extracted
: FromAccount = my account
User Utterance not resulting in entity extraction
: “transfer funds to  ABC123 using my account”

Extension to Pattern 2: word1 *~n

Similar to above (pattern 2) but extracts up to n number, if that number of words are available. Note that entities need to extract something so *~1 is really the same as *1.

Pattern 3: a combination of word1 * word2 and word3 *n

This can be used as a combination of patterns for the likely location in the user utterance that the entity value could be found and the number of words contributing to the entity.
Pattern for ToAccount entity“to * from” and “from to *1”
Pattern for FromAccount entity: “from * to” and “to from *2”
User UtteranceTransfer funds to ABC123 from my account.
                       or Transfer funds from my account to ABC123.
Entity ExtractedToAccount = ABC123 and FromAccount = my account
User Utterance not resulting in entity extraction: “transfer funds for ABC123 using my account”

Pattern 4: [ word1 word2 ] *

This can be for patterns using a group of words or concepts of which at least one should be present in the utterance. The order within the group is important (see above in intent detection for details).
Pattern for ToAccount entity“to * [ using from ]” and “[ using from ] to *1”
Pattern for FromAccount entity: “[ using from ] * to” and “to [ using from ] *”
User UtteranceTransfer funds to ABC123 from my account.
                       or Transfer funds using my account to ABC123.
Entity ExtractedToAccount = ABC123 and FromAccount = my account
User Utterance not resulting in entity extraction: “transfer funds for ABC123 using my account”

Pattern 5: ~CustomConcept *

This can be for using concepts. You can create your own custom concepts and use them to define patterns.
Pattern for ToAccount entity“to * from” and “from to *”
Pattern for FromAccount entity: “~in * to” and “to ~in *”
Custom Concept: ~in(using) (from)
User UtteranceTransfer funds to ABC123 using my account.
                       or Transfer funds from my account to ABC123.
Entity ExtractedToAccount = ABC123 and FromAccount = my account
User Utterance not resulting in entity extraction: “transfer funds to ABC123 of my account

Pattern 6: ~intent

Useful in entity patterns and custom entities
Words that are used in the intent identification are dynamically marked with the ~intent concept. This can then be used as an anchor or reference point for some entity patterns.
Sample Pattern“~intent~meeting~plural
User Utterance not resulting in entity extraction: show my meetings.
User Utterance might mark the entity: “schedule a presentation called Meeting the Sales Goals

Pattern 7: $currentEntity

Useful in delaying the evaluation of a pattern until the entity is actually processed. Normally entity patterns are evaluated when a dialog starts and on new input to see if any words need to be protected until that entity is processed. This might not always desirable, especially for strings.
Pattern“$currentEntity=TaskTitle ‘called *
The above rule will result in evaluating the pattern when the dialog flow has reached the TaskTitle node.