正規表現の入力ガイド
  • PDF

正規表現の入力ガイド

  • PDF

Classic/VPC環境で利用できます。

正規表現は、様々な形で表現された文を圧縮して表記する表記法です。チャットボットビルダーでは「nlu_script」という独自の正規表現を使用します。正規表現文法を有効に活用すれば、自然言語で対応しきれない質問を補うことができます。

nlu_scriptの基本説明

special symbols
独自の正規表現のnlu_scriptで文法として使用される特殊文字は以下のとおりです。

( ) { } [ ] < > \: + * ^ ~ = . | & - / `

正規表現文法の文字そのものの表現
文法に用いられる特殊文字を、正規表現文法ではなく文字そのものとして入力する場合、特殊文字の二重引用符(" ")で囲みます。" "で囲まれた特殊文字は正規表現文法としてではなく、文字として認識されます。間違って単一引用符を入力しないようにご注意ください。

잘지내(니|냐)"?"
-> 잘지내?, 잘지내니?, 잘지내냐?

スペース
トークンの間にスペースがない場合、スペースが含まれたトークンはマッチングされません。そのため、韓国語の用例からしてスペースが入るところはできる限りスペースを入れることをお勧めします。
예를 들어, “안녕하세요”라고 입력하면 챗봇은 “안녕하세요”만 인식하지만, “안녕 하세요”라고 입력하면 “안녕하세요”와 “안녕 하세요”를 모두 인식하게 됩니다.

안녕하세요
-> 안녕하세요 (O) / 안녕 하세요 (X)
안녕 하세요
-> 안녕하세요, 안녕 하세요 (O)

基礎表記法

必須発話表現式 [ ]

[ ]は必須発話を表現する際に用いられます。主に、必ず表示したい品詞表現をくくる形で活用し、重ねて使用できます。
以下の例は必須発話を[ ]で囲み、[ ]の中にORを意味する|を活用して似ている単語を並べたものです。このように作成された正規表現の文で9つの文を処理できます。

[주문|배달|배송] [해줘|해주세요|해줘요]
-> 주문해줘, 배달해줘, 배송해줘, 주문해주세요, 배달해주세요, 배송해주세요, 주문해줘요, 배달해줘요, 배송해줘요

選択発話表現式 ( )

( )は選択的に出現する発話を表現する際に用いられます。この表現は重ねて使用できます。主に長い質問で省略され得る助詞または修飾語をくくって表現する形で活用できます。韓国語では、敬語や語尾の活用型を( )でくくって表現することができます。
예시와 같이, 안녕(하세요|하신가|하냐)로 작성할 경우, ( )는 ‘안녕’에 붙을 수 있는 어미로 선택적으로 출현 가능한 발화이며, ‘|’는 OR의 의미를 나타냅니다.그래서 안녕(하세요|하신가|하냐)로 한 문장으로 안녕, 안녕하세요, 안녕하신가, 안녕하냐를 모두 처리할 수 있습니다.

안녕(하세요|하신가|하냐)
-> 안녕, 안녕하세요, 안녕하신가, 안녕하냐

トークン間のつながり表現式 ::

::はトークン間のつながりを表すために用いられます。主に語幹::語尾変形をつなげるために使用されます。この表現はスペースなしで入力します。

주[라|세요]
-> 주라, 주 라, 주세요, 주 세요
주::[라|세요]
-> 주라, 주세요

[아버지|어머니]가 방에 들어가신다
-> 아버지가 방에 들어가신다(O)/ 아버지 가방에 들어가신다(O)
[아버지|어머니]::가 방에 들어가신다
-> 아버지가 방에 들어가신다(O)/ 아버지 가방에 들어가신다(X)

OR論理記号表現式|

|は、OR論理記号を意味します。主に、必須発話を表現する大括弧[]、または任意発話を表現する括弧()と一緒に使用します。

[칼로리|열량]알려줘
-> 칼로리 알려줘, 열량 알려줘

안녕(하세요|하신가|하냐)
-> 안녕, 안녕하세요, 안녕하신가, 안녕하냐

入力されたトークンを組み合わせる表現式 ~[ ]~

~[]~は、[]の中に入力されたトークンを組み合わせるのに用いられます。~[]~の中に入力されたトークンは,(コンマ)で区切ります。トークンを過度に入力すると候補パターンが増えすぎるおそれがあるので(順列、permutation)、~[]~の中に入力するトークン数を5個以下に制限します。
例のように~[アカウント, 作成]~方法で作成する場合、「アカウント作成方法」と「作成アカウント方法」の両方に対応できます。

~[アカウント, 作成]~方法
-> アカウント作成方法、作成アカウント方法

入力されたトークンの反復組み合わせ表現式 [ ]^

[ ]^は、[]の中に入力されたトークンを繰り返し組み合わせるために使用します。ただし、システム負荷が発生するおそれがあるので、当該パターンが使用される正規表現の質問はドメインごとに100個以下に制限します。

  • `[k]^(a,b):[]の中に入力されたトークンkがa以上b以下の回数で繰り返されます。
  • `[k]^<a:[]の中に入力されたトークンkがa未満の回数で繰り返されます。
  • `[k]^>a:[]の中に入力されたトークンkがa超過の回数で繰り返されます。
[빨리]^(1,3)
-> 빨리, 빨리빨리, 빨리빨리빨리(O) / 빨리빨리빨리빨리(X)
[빨리]^<3
-> 빨리, 빨리빨리(O) / 빨리빨리빨리, 빨리빨리빨리빨리(X)
[빨리]^>2
-> 빨리빨리빨리, 빨리빨리빨리빨리(O) / 빨리, 빨리빨리(X)

任意の単語をマッチングさせる表現式 <?>

<?> は、任意の単語をマッチングさせる際に用いられるワイルドカードです。ただし、副作用が発生するおそれがあるので、必要な場合にのみ使用することを強くお勧めします。

  • <?>:任意の1文字単語をマッチングさせます。
  • <?>*?:任意の単語をマッチングさせます。任意の単語がない場合にもマッチングされます。文字数の制限はありません。
  • <?>+?:任意の単語をマッチングさせます。任意の単語がない場合はマッチングされません。文字数の制限はありません。
<?>一郎
-> 佐藤一郎 (O) / 佐藤佐藤一郎 (X)
[こんにちは] <?>*?
-> こんにちは 太郎 (O) / こんにちは (O)
[こんにちは] <?>+?
-> こんにちは 太郎 (O) / こんにちは (X)

例外トークンを指定する表現式\

\は、マッチングしてはいけない、発話内の例外トークンを指定する際に使用します。例外処理するトークンの前に\を入力すると、ユーザーの発話に対して制限を設けることができます。

  • 除外表現はワイルドカードの前に位置させます。
  • 正規表現のパターンごとに2つ以上の除外表現を使用しないことをお勧めします。
\[김철수|홍길동] <?>*?[슬픈|좋은|즐거운] 노래 틀어줘
-> 아이유 슬픈 노래 틀어줘 (O) / 아이유나 이지은 슬픈 노래 틀어줘 (O) / 지금 아이유 슬픈 노래 틀어줘 (O)
-> 아이유나 홍길동 슬픈 노래 틀어줘 (O) / 홍길동이나 아이유 슬픈 노래 틀어줘 (O)
-> 홍길동 슬픈 노래 틀어줘 (X) / 김철수 슬픈 노래 틀어줘 (X)

 \[<?>*?김철수|<?>*?홍길동] <?>*?[슬픈|좋은|즐거운] 노래 틀어줘
-> 아이유 슬픈 노래 틀어줘 (O) / 아이유나 이지은 슬픈 노래 틀어줘 (O) / 지금 아이유 슬픈 노래 틀어줘 (O)
-> 아이유나 홍길동 슬픈 노래 틀어줘 (X) / 홍길동이나 아이유 슬픈 노래 틀어줘 (X)
-> 홍길동 슬픈 노래 틀어줘 (X) / 김철수 슬픈 노래 틀어줘 (X)

**[잘못된 패턴 예시]**
[\김철수|\홍길동] <?>*?[슬픈|좋은|즐거운] 노래 틀어줘
<?>*?[\김철수|\홍길동] [슬픈|좋은|즐거운] 노래 틀어줘

特定のパターンを指定されたテキストに置換して保存する表現式 :

特定のパターンを指定されたテキストにnormalizeして保存する必要がある場合に使用します。一般的にはnormalizeされた値がエンティティ分析値として保存されますが、タスクに限りユーザーの応答値をそのまま保存できるように値の設定を変更できます。

  • a:bのような形式で入力します。ユーザーがaと入力した場合、bに置換して保存します。
  • Normalizeの対象は、:の前の1つのトークンにのみ適用されます。
1. a1|a2|a3:b
- ユーザーがa1と入力した場合:そのパターンとマッチングされ、a1が保存される。
- ユーザーがa2と入力した場合:そのパターンとマッチングされ、a2が保存される。
- ユーザーがa3と入力した場合:そのパターンとマッチングされる。a3がbに置換され、bが保存される。
- ユーザーがbと入力した場合:そのパターンとマッチングされない

2. [a1|a2|a3]:b
- ユーザーがa1と入力した場合:そのパターンとマッチングされる。a1がbに置換され、bが保存される。
- ユーザーがa2と入力した場合:そのパターンとマッチングされる。a2がbに置換され、bが保存される。
- ユーザーがa3と入力した場合:そのパターンとマッチングされる。a3がbに置換され、bが保存される。
- ユーザーがbと入力した場合:そのパターンとマッチングされない

3. a1|[a2|a3]:b
- ユーザーがa1と入力した場合:そのパターンとマッチングされ、a1が保存される。
- ユーザーがa2と入力した場合:そのパターンとマッチングされる。a2がbに置換され、bが保存される。
- ユーザーがa3と入力した場合:そのパターンとマッチングされる。a3がbに置換され、bが保存される。
- ユーザーがbと入力した場合:そのパターンとマッチングされない
  • bの位置にアルファベットが位置する場合、小文字でのみnormalizeがサポートされます。
1. a:b
- ユーザーがaと入力した場合:そのパターンとマッチングされ、bが保存される

2. a:B
- ユーザーがaと入力した場合:そのパターンマッチングされ、bが保存される。Bは保存されない
参考

この表現式は、パターン型エンティティでのみ活用できます。

ドメインエンティティ、システムエンティティを読み込む表現式 @{ }、`@{ }

@{ }、@{ }は、チャットボットビルダーに登録されたドメインエンティティ、システムエンティティ、正規表現変数、システム変数を入力する際に用いられます。@{ }はドメインエンティティとして登録した単語を読み込む際に、@{ }はシステムエンティティに登録された用語を読み込む際に使用します。

ドメインエンティティの入力方法

@メニュー:チキン、ピザ

@{メニュー}[注文|デリバリー]
-> チキン注文、チキンデリバリー、ピザ注文、ピザデリバリー

システムエンティティの入力方法

`@{TELNUM}

`@{TELNUM}[照会|確認]して
-> 010-0000-0000照会して、010-1234-5678照会して...

正規表現変数の入力方法

@var.숫자: [1|2|3|4|5|6|7|8|9]

@var.{숫자} @var.{숫자} [세|살] (입니다)
-> 11세 입니다, 23살 입니다

フォームを読み込む表現式 #{ }

#{ }はフォームを読み込む際に使用します。会話の作成時に返答に#{フォーム名}形式で入力すると、フォームメニューに登録されている記入型フォームまたは選択肢型フォームを読み込むことができます。

#{ゲームサービス}

アクションメソッドを読み込む表現式 ${ }

使{アクションメソッド}形式で入力すると、登録されたアクションメソッドを読み込むことができます。

「${membership.name}様のポイント残高は${membership.point}ポイントです」

この記事は役に立ちましたか