Intents
User message တွေကို Category အမျိုးအစားခွဲခြားသတ်မှတ်ပြီးပြီဆိုရင်တော့ ဒီ Intents ဆိုတဲ့ training data tab လေးထဲမှာ လာထည့်ပေးရမှာဖြစ်ပါတယ်။
Intent ဆိုတာဘာလဲ?
Intent ဆိုတာကတော့ ရည်ရွယ်ချက်တူတဲ့ user message example တွေကို Sub-category အနေနဲ့ တစ်စုတစ်စည်းတည်း ပေါင်းထည့်ပေးရတာမျိုးပါ။
ဥပမာ- အောက်က ပုံမှာကြည့်ရင် greet (နှုတ်ဆက်တဲ့ intention) ရှိတဲ့ message တွေ (ဟိုင်း၊ မင်္ဂလာပါ၊ ဟယ်လို) စတာ တွေသည် chitchat ဆိုတဲ့ Category ခေါင်းစဥ်အကြီးအောက်ထဲ ပါဝင်ထားတာကြောင့် Sub-category လို့သတ်မှတ်နိုင်ပါတယ်။ ဒါကြောင့် intent တွေကို တစ်နည်းအားဖြင့် Sub-category ဟူ၍ ခေါ်ဝေါ်နိုင်ပါတယ်။
ပုံထဲမှာပါတဲ့ Greet, Ask bot or human, Thank, Call for admin စတဲ့ intent တွေသည် chitchat ဆိုတဲ့ Category ခေါင်းစဥ်အကြီး အောက်က Sub-category တွေပဲဖြစ်ပါတယ်။
Intent ဘယ်လိုထည့်မလဲ?
Intent တစ်ခု စ create လုပ်ဖို့အတွက် ပုံမှာပြထားတဲ့အတိုင်း “Add New Intent” ကို နှိပ်ပေးပါ။
ပြီးရင်တော့ Category ရွေးမယ်, logical name ရေးပေးမယ်, title ခေါင်းစဥ်ပေးမယ်, description ရေးမယ်, စ၍ အဆင့်ဆင့် ထည့်ပေးဖို့လိုပါမယ်။
Intent ရဲ့ Category အမျိုးအစား ကို အရင်ဆုံး ရွေးပေးဖို့လိုပါမယ်။
ပြီးတဲ့အခါ logical_name နာမည်ပေးရပါမယ်။
logical_name ရေးတဲ့အခါ အင်္ဂလိပ်အက္ခရာအသေးကိုပဲ အသုံးပြုပေးပါ။ space ခြားရမယ့် နေရာတွေမှာ တစ်ဆက်တည်း underscore ‘_’ အစားထိုးထည့်ပေးရပါမယ်။
ဥပမာ - greet, ask_price, ask_promotion.logical_name သည် intent create လုပ်ပြီးပါက Non editable ပြန်ပြင်လို့မရတော့မှာဖြစ်တာကြောင့် create မလုပ်ခင် သေချာစစ်ဆေးပေးစေလိုပါတယ်။ (Entities နဲ့ Actions tab ဘက်မှာလည်း Logical name ပေးတဲ့အခါ အခုလိုပဲသတ်မှတ်ရမှာဖြစ်ပါတယ်။)
Message ရဲ့ အမျိုးအစားနာမည် Intent Title ကို ထည့်ရပါမယ်။ Intent Description ကိုလည်း ထည့်ပေးဖို့လိုပါမယ်။
အားလုံး ပြီးရင်တော့ “Create intent” ကိုနှိပ်ပေးပါ။
Intent Title “TT”, Category, intent description တွေ ပြန်ပြင်ချင်တယ်ဆိုရင် မိမိပြင်လိုတဲ့ Intent ကိုနှိပ်၍ အလွယ်တကူ ဝင်ပြင်လို့ရမှာပါ။ အောက်ပုံမှာဆို Greet intent ကို နှိပ်ပြထားတာပဲဖြစ်ပါတယ်။
Training example data ဆိုတာဘာလဲ?
User ဘက်က ပေးပို့တဲ့ message တွေမှာ intention တူတဲ့ စကားပြော စာကြောင်းတစ်ကြောင်းချင်းစီတိုင်း ကို Training example data လို့ ခေါ်ပါတယ်။ ဥပမာ : Greet (intent) နဲ့ သက်ဆိုင်တဲ့ training example data တွေကတော့ - hello, မင်္ဂလာပါ, nay kg lr စသဖြင့် ရည်ရွယ်ချက်က Greet (intent) တစ်ခုတည်းကို ရည်ညွှန်းနေတဲ့ Training example data တွေပဲဖြစ်ပါတယ်။
Training example data ဘယ်လိုထည့်မလဲ?
ဒီ ရည်ရွယ်ချက် intention တူတဲ့ Training Example data တွေကို သူတို့နဲ့ သက်ဆိုင်မယ့် Intent ခေါင်းစဥ်တစ်ခု အောက်မှာ တစ်ကြောင်းချင်းစီ “+” plus sign ခလုတ် နှိပ်၍ ထည့်ပေးနိုင်ပါတယ်။
Training example data တွေကို အထက်ပါပုံမှာပြထားသလို Burmese & English Language ရွေးပြီး နှစ်ဖက်လုံးမှာ ထည့်ပေးရမှာပါ။ ဟယ်လို (burmese) နဲ့ Hello! (english) ထည့်ထားတာ တစ်တန်းတည်း အတိအကျမဖြစ်လဲ ရပါတယ်။
Training example data တွေထည့်တဲ့အခါ စာကြောင်းအရေအတွက် တစ်ဖက်နဲ့တစ်ဖက် လုံးဝကြီး ညီမျှမနေရင်တောင် အရမ်းမကွာနေပဲ balance ဖြစ်နေရင်တော့ အကောင်းဆုံးပါ။ မြန်မာဘက်မှာ စာကြောင်း 80% လောက်ရှိနေပြီး english ဘက်မှာ 20% လောက်ပဲ ရှိနေတာမျိုး မဖြစ်စေဖို့ သတိပြုရပါမယ်။
Burmese မှာ Training example data ဘယ်လိုထည့်မလဲ?
Burmese မှာ training example data ထည့်တဲ့အခါ မြန်မာ text သီးသန့် သို့မဟုတ် မြန်မာ၊ English အရော အနေနဲ့ ၂မျိုးထည့်ထားလို့ရပါမယ်။
ဥပမာ - (ဟယ်လို, ဆက်သွယ်ရမယ့်ph.noနံပါတ်ပေးပါလား, Morningပါ)
ထို့နောက် ‘+’ Plus ခလုတ်ကိုနှိပ်ပေးပါ။ ပြီးတဲ့အခါ “Save Update” ကိုနှိပ်ပြီး သိမ်းဖို့လိုပါတယ်။ “Save Update” မနှိပ်မိပါက ထည့်ပြီးသမျှ data တွေ ပျောက်သွားနိုင်တာမို့ တခြား tab တွေမကူးခင်မှာ နှိပ်ထားပေးတာ ပိုသေချာစေပါတယ်။
English မှာ Training example data ဘယ်လိုထည့်မလဲ?
English ဘက်ကို training example ထည့်မယ်ဆိုရင်တော့ English text သီးသန့် သို့မဟုတ် Myanglish text သီးသန့်ပဲ ကိုပဲ ထည့်ပေးဖို့လိုပါမယ်။
ဥပမာ - (Hello!, contact number plz, Mingalarpar)
ထို့နောက် ‘+’ Plus ခလုတ်ကိုနှိပ်ပေးပါ။ ပြီးတဲ့အခါ “Save Update” ကိုနှိပ်ပြီး သိမ်းဖို့လိုပါတယ်။ “Save Update” မနှိပ်မိပါက ထည့်ပြီးသမျှ data တွေ ပျောက်သွားနိုင်တာမို့ တခြား tab တွေမကူးခင်မှာ နှိပ်ထားပေးတာ ပိုသေချာစေပါတယ်။
Training example data ထည့်တဲ့အခါ Intent တစ်ခု နဲ့ အခြား မတူတဲ့ intent တစ်ခု မှာ ပါဝင်တဲ့ data အရေအတွက်ဟာ balance ဖြစ်နေဖို့ အရေးကြီးပါတယ်။
ဥပမာ : Greet (intent) နဲ့ Thank you (intent) ကို နှိုင်းယှဥ်ပြပေးပါမယ်။
Greet (intent) အောက်မှာ ထည့်ထားတဲ့ training example data တွေ နဲ့ thank you (intent) အောက်မှာ ထည့်ထားတဲ့ data တွေ အရေအတွက် % percentage အရမ်းမကွာနေဖို့လိုပါမယ်။ အောက်ပါပုံမှာဆို တစ်ဖက်ကို training example data ၄ ကြောင်းစီ ထည့်ထားတာတွေ့ရမှာပါ။
တစ်ဖက် intent မှာ data 10 ကြောင်း ရှိပြီး အခြား intent တစ်ဖက်မှာ 8ကြောင်း 9ကြောင်းလောက်ဆို ရပါသေးတယ်။ 20% လောက်ပဲ အလွန်ဆုံး ကွာမယ်ဆို အဆင်ပြေပါတယ်။
တစ်ဖက် intent မှာ 10 ကြောင်း ရှိပြီး အခြား intent တစ်ဖက်မှာ 2 ကြောင်း 3 ကြောင်း လောက်ပဲရှိနေမယ်ဆိုရင်တော့ bot detection ရှုပ်ထွေးသွားစေနိုင်ပြီး reply ပြန်တဲ့အခါ အဖြေအမှားတွေ ဖြေမိနိုင်ပါတယ်။
အခုလို Training example data တွေ အညီအမျှ ထည့်ထားခြင်းအားဖြင့် NLU bot က reply ပြန်တဲ့အခါ data ပိုပြီး များများထည့်ထားတဲ့ intent ဘက်ကို အလေးသာနေမှာမျိုး မကြုံရတော့မှာဖြစ်ပါတယ်။
နောက်ထပ် သတိပြုရမယ့်အချက်ကတော့ Intent တစ်ခုထဲမှာပါတဲ့ Training example data စာကြောင်းပုံစံတွေ ဆင်တူတာမျိုး မဖြစ်ဖို့ပါ။
ဥပမာ - အောက်ပါပုံအရဆို ရည်ရွယ်ချက်ကတော့ Ask_hotline တစ်မျိုးတည်းကို မေးတာဖြစ်ပေမယ့် မေးတဲ့စာကြောင်းပုံစံအမျိုးမျိုးရှိနိုင်ပါတယ်။
(ဖုန်းနံပါတ်သိလို့ရမလား, ဘယ်လိုဆက်သွယ်ရမလဲ, ဖုန်းပေးပါ)Training example data အတွင်းမှာပါတဲ့ စာကြောင်းတွေဟာ “၁”လုံးပဲလွဲနေမယ်ဆို example data ထပ်ထည့်ဖို့မလိုအပ်ပါဖူး။
ဥပမာ - (ဘယ်လိုဆက်သွယ်ရမလဲ, ဘယ်လိုဆက်သွယ်လို့ရလဲ)Training example data စာကြောင်း ပုံစံတစ်မျိုးသာ ရှိရင် လုံလောက်ပါတယ်။ အကယ်၍ စာကြောင်း ထဲက စကားလုံး “၂” လုံး/ “၃” လုံး သို့မဟုတ် အဲ့ထပ် ပိုပြီး မတူရင်တော့ data ထပ်ထည့်ဖို့လိုပါမယ်။
ဥပမာ - (ဘယ်လိုဆက်သွယ်ရမလဲ, ဖုန်းဆက်သွယ်ချင်လို့ပါ)
Training example data စာကြောင်းတွေမှာ Entities ထည့် Train မယ်
Entities ထည့်မ train ခင် အောက်က Entites tab မှာ အရင်ဆုံး entities တွေ ကြိုတင်၍ create သွားလုပ်ပေးဖို့လိုပါတယ်။
Entities ကတော့ user ပို့တဲ့ message (intent) စာကြောင်းမှာပါမယ့် Noun စကားလုံးတွေပဲဖြစ်ပါတယ်။ Entities ထည့်ထားခြင်းအားဖြင့် userရဲ့ အမေးစာကြောင်းထဲက အဓိက သူသိချင်တဲ့ အချက်တွေ ကိုက်ညီအောင် အလိုအလျောက်ပြန်ဖြေပေးမှာပဲဖြစ်ပါတယ်။
ဥပမာ - “ရန်ကုန် ဖုန်းနံပါတ်သိချင်လို့ပါ” ၊ “မန္တလေး ဖုန်းနံပါတ်သိချင်လို့ပါ” ဆိုရင် ရန်ကုန် နဲ့ မန္တလေးဟာ အဓိက entities တွေဖြစ်ပါတယ်။
ဖုန်းနံပါတ်သိချင်လို့ပါ ပါနေတာကြောင့် Ask_hotline intent နဲ့ ပတ်သက်တာဖြစ်ပြီး ရန်ကုန် လည်းပါနေတာဖြစ်လို့ entities synonym လည်းပါနေပါတယ်။
Hotline ဖုန်းနံပါတ်ကိုမှ မြို့နယ်ပါထည့်ပြီး user ဘက်က မေးလာခဲ့ရင် hotline အတွက်ထည့်ထားတဲ့ အဖြေတစ်မျိုးထဲ ဖြေပေးတာမျိုးမဟုတ်ပဲ.. “ရန်ကုန်ဖုန်း” ဆို Yangon hotline အဖြေ၊ “မန္တလေးဖုန်း” ဆိုလည်း Mandalay hotline အဖြေ စသဖြင့် hotline အတွက်အဖြေတစ်ခုတည်းဖြေမယ့်အစား မြို့နယ်ပေါ်မူတည်ပြီး မတူတဲ့အဖြေတွေ ပြန်ဖြေပေးနိုင်အောင် Entities က လုပ်ဆောင်ပေးတာပဲဖြစ်ပါတယ်။
ဥပမာ ပုံမှာဆိုရင် နေပြည်တော်၊ မန္တလေး၊ မကွေး စသဖြင့် entities တွေ သတ်မှတ်ထားတာကို တွေ့ရမှာပဲဖြစ်ပါတယ်။
အခုလို Entities သတ်မှတ်ထားခြင်းအားဖြင့် customer ဘက်က entities ပါတဲ့ intent တစ်ခုခုမေးတဲ့အခါ သူ့မေးခွန်း အတွက် တိကျတဲ့ Specific answer တစ်ခုပြန်ဖြေပေးနိုင်မှာဖြစ်ပါတယ်။
ဒါကြောင့် ဘယ် Entities ပါခဲ့ရင် ဘယ် Actionအဖြေ reply ပြန်ရမလဲဆိုတာ Action ရဲ့ > conditional answer မှာ ထပ်ထည့်လို့ရမှာဖြစ်ပါတယ်။
Intent တစ်ခုအတွက် training example data တွေ ထည့်တဲ့အခါ အနည်းဆုံး Entities 2ခု ကွင်းခတ်သတ်မှတ်ထားတာရှိရမှာပါ။ ဒါကတော့ entities ပါတဲ့ intents စာကြောင်း တွေအတွက်ပဲဖြစ်ပါတယ်။
Entities ကွင်းတွေက ဘာလဲ Entities ဖြစ်မှန်း ဘယ်လိုသတ်မှတ်လဲ?
Intent ရဲ့ Training example data ထဲ Entities ပါပါက Mouse Pointer နဲ့ အတိအကျ Scroll ဆွဲပြီး select မှတ်ပေးပါ။ ပြီးရင် အခု select မှတ်ထားတဲ့ စကားလုံးဟာ ဘယ် entities ဖြစ်ကြောင်း သတ်မှတ်ဖို့လိုပါမယ်။ ပေါ်လာတဲ့ Annotate entity pop up လေးမှာ သက်ဆိုင်ရာ entity name ကို ရွေးချယ်ပေးဖို့လိုပါတယ်။ ဒါမှ NLU က ဒီ example စာကြောင်းထဲ ဒီ entities တွဲရက်ပါနိုင်မယ်ဆိုတာ သိမှာဖြစ်ပါတယ်။
Annotate entity ရွေးပြီးတဲ့အခါ ပုံပါအတိုင်း ထောင့်ကွင်းတွေနဲ့ Entities ဖြစ်ကြောင်း သတ်မှတ်ပြီးသား ဖြစ်သွားပါလိမ့်မယ်။ အကယ်၍ ကိုယ်က မှားရွေးမိလို့ ပြန်ပြင်မယ်ဆိုပါက backspace နဲ့ ပြန်ဖျက်နိုင်ပြီး အပေါ်က နည်းအတိုင်း Mouse Pointer နဲ့ အတိအကျ Scroll ဆွဲပြီး select မှတ်ပေးနိုင်မှာပါ။
Entities ကွင်းခတ်သတ်မှတ်တဲ့အခါမှာလည်း entities tab အောက်က synonyms တွေ ထည့်ထားတဲ့အတိုင်း အတိအကျဖြစ်ဖို့လိုပါမယ်။
Message နမူနာတွေကိုဖျက်တဲ့အခါ “Delete” button ကို နှိပ်ဖို့အပြင် “Save Update” ကိုလည်း ထပ်နှိပ်ပေးဖို့လိုပါတယ်။ (Entities, Actions နဲ့ Stories မှာလည်း ဒီအတိုင်းပဲဖျက်လို့ ရပါတယ်။)
Intent တစ်ခုလုံးကိုဖျက်ဖို့အတွက် intent title ရဲ့ ညာဘက်မှာရှိတဲ့ “Delete” button ကိုနှိပ်ရပါမယ်။ ပုံမှာပြထားတဲ့အတိုင်းဆိုရင် “greet” ဆိုတဲ့ Intent တစ်ခုလုံးပျက်သွားမှာဖြစ်ပါတယ်။ (Entities, Actions နဲ့ Stories မှာလည်း ဒီအတိုင်းပဲဖျက်လို့ ရပါတယ်။)