You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/my/6-NLP/4-Hotel-Reviews-1/README.md

69 KiB

ဟိုတယ် သုံးသပ်ချက်များဖြင့် စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်း - ဒေတာကို ပြုပြင်ခြင်း

ဤအပိုင်းတွင် သင်သည် ယခင်သင်ခန်းစာများတွင် သင်ယူခဲ့သည့် နည်းပညာများကို အသုံးပြု၍ ကြီးမားသော ဒေတာစုစည်းမှုကို လေ့လာသုံးသပ်မည်ဖြစ်သည်။ ကော်လံအမျိုးမျိုး၏ အသုံးဝင်မှုကို သေချာစွာ နားလည်သည့်အခါ သင်သည် အောက်ဖော်ပြပါအချက်များကို သင်ယူမည်ဖြစ်သည်။

  • မလိုအပ်သော ကော်လံများကို မည်သို့ ဖယ်ရှားရန်
  • ရှိပြီးသား ကော်လံများအပေါ် မူတည်၍ အချက်အလက်အသစ်များကို မည်သို့တွက်ချက်ရန်
  • နောက်ဆုံး စိန်ခေါ်မှုအတွက် အသုံးပြုနိုင်ရန် ရလဒ်အဖြစ်ကာလတစ်ခုကို မည်သို့ သိမ်းဆည်းရန်

အကြိုသင်ခန်းစာ စစ်တမ်း

နိဒါန်း

ယခုအထိ သင်သည် စာသား ဒေတာသည် ကိန်းဂဏန်း ဒေတာအမျိုးအစားများနှင့် မတူကြောင်း သင်ခဲ့ပါပြီ။ မည်သည့် စာသားကို လူသားရေးထား သို့မဟုတ် ပြောဆိုထားလည်း ပုံစံများနှင့် ဖြစ်ပေါ်မှုများ၊ စိတ်ခံစားချက်နှင့် အဓိပ္ပါယ် များကို ခွဲခြမ်းစိတ်ဖြာနိုင်ပါသည်။ ဤသင်ခန်းစာသည် သက်ဝင်နေသော ဒေတာစုစည်းမှုနှင့် စိန်ခေါ်မှုဖြစ်သော 515K ဟိုတယ် သုံးသပ်ချက် ဒေတာများ ဥရောပတွင် ကို ခွဲခြမ်းစိတ်ဖြာပြီး CC0: Public Domain လိုင်စင် ပါဝင်သည်။ ၎င်းသည် Booking.com မှ စုပြီး လူသုံး င်း_နိုင်သော လုပ်ဆောင်ချက်များမှ ရယူထားသည်။ ဒေတာစုစည်းမှုဖန်တီးသူမှာ Jiashen Liu ဖြစ်သည်။

ပြင်ဆင်မှု

သင်လိုအပ်သည်မှာ-

လေ့လာစူးစမ်းအချက်အလက် ခွဲခြမ်းစိတ်ဖြာခြင်း

ယခု စိန်ခေါ်မှုမှာ သင်သည် ဟိုတယ်အကြံပြု ဆော့ဖ်ဝဲ စနစ်တစ်ခုကို စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် ဧည့်သည် သုံးသပ်ချက် အဆင့်များဖြင့် တည်ဆောက်နေောင်းသည်ဟု သတ်မှတ်ထားသည်။ သင်အသုံးပြုမည့် ဒေတာစုစည်းမှုတွင် ၆ မြို့ရှိ ဟိုတယ် ၁၄၉၃ ခု၏ သုံးသပ်ချက်များပါဝင်သည်။

Python သုံး၍ ဟိုတယ် သုံးသပ်ချက်ဒေတာစုစည်းမှုနှင့် NLTK ၏ စိတ်ခံစားချက် ခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြုပြီး မေးခွန်းအချို့ကို ရှာဖွေနိုင်ပါသည်-

  • သုံးသပ်ချက်တွင် အများဆုံး အသုံးပြုသော စကားလုံးနှင့် စကားစုများက ဘာတွေဖြစ်ကြသလဲ?
  • ဟိုတယ်ကို ဖော်ညွှန်သည့် တရားဝင် tags များသည် သုံးသပ်ချက်အဆင့်နှင့် ကိုက်ညီမှုရှိပါသလား (ဥပမာ- ကလေးငယ် မိသားစု အတွက် မကြာခဏ နောက်ဆုတ်သုံးသပ်ချက်များရှိပြီး တစ်ဦးတည်း ခရီးသွား များအတွက်ကောင်းမွန်မှုများ ပိုရှိသည်ဟု သုံးသပ်ကြသည်ဟု မျှောလင့်နိုင်သလား?)
  • NLTK စိတ်ခံစားချက် အဆင့်များသည် ဟိုတယ် သုံးသပ်သူ၏ ကိန်းဂဏန်း အဆင့်နှင့် ကိုက်ညီမှု ရှိပါသလား?

ဒေတာစုစည်းမှု

သင်ဒေါင်းလုပ်ပြီး ပြီးနောက် ဒေတာစုစည်းမှုကို စူးစမ်းကြည့်မည်။ VS Code သို့မဟုတ် Excel ကဲ့သို့သော editor တွင် ဖိုင်ကို ဖွင့်ပါ။

ဒေတာစုစည်းမှုတွင် ခေါင်းစဉ်များမှာ အောက်ပါအတိုင်းဖြစ်ပါသည်။

Hotel_Address, Additional_Number_of_Scoring, Review_Date, Average_Score, Hotel_Name, Reviewer_Nationality, Negative_Review, Review_Total_Negative_Word_Counts, Total_Number_of_Reviews, Positive_Review, Review_Total_Positive_Word_Counts, Total_Number_of_Reviews_Reviewer_Has_Given, Reviewer_Score, Tags, days_since_review, lat, lng

၎င်းတို့ကို စူးစမ်းလေ့လာရ လွယ်ကူစေရန် အုပ်စုခွဲထားသည်။

ဟိုတယ် ဆိုင်ရာ ကော်လံများ
  • Hotel_Name, Hotel_Address, lat (အလျားလိုင်း), lng (အကြာလိုင်း)
    • lat နှင့် lng ကို အသုံးပြုပြီး Python ဖြင့် ဟိုတယ် နေရာများကို မြေပုံပုံဆွဲ၍ ပြသနိုင်သည် (ဥပမာ- မကောင်းသော သုံးသပ်ချက်နှင့် ကောင်းသော သုံးသပ်ချက်များအတွက် အရောင် ဖြင့် ဖော်ပြနိုင်သည်)
    • Hotel_Address သည် ကျွန်ုပ်တို့အတွက် အသုံးဝင်မှု ရှိမရှိ ထင်ရှားမဟုတ်ပေ။ နောက်ဆုံးတွင် မနိုင်ငံခြားပိုင်ဖြစ်လွယ်စေရန် နိုင်ငံတစ်ခု ဖြင့် အစားထိုးနိုင်သည်။

ဟိုတယ် မီတာ သုံးသပ်ချက် ကော်လံများ

  • Average_Score

    • ဒေတာစုစည်းမှုဖန်တီးသူ၏ မှတ်ချက်အရ၊ ဤကော်လံသည် လွန်ခဲ့သောနှစ်တစ်နှစ်တွင် နောက်ဆုံးမှတ်ချက်အပေါ်အခြေခံ၍ ဟိုတယ်၏ ပျမ်းမျှ အမှတ် ဖြစ်သည်။ ၎င်းသည် ထူးခြားသော ထည့်သွင်းပုံဖြစ်သော်လည်း ဒေတာကို တရားဝင် သိမ်းဆည်းထားသဖြင့် ယခုအချိန်တွင် တင်စားနိုင်သည်။

    ဒီဒေတာတွင် ပါသော အခြားကော်လံများအရ မတူညီသော ပျမ်းမျှအမှတ်တွက်ချက်မှုနည်းဖော်ပြနိုင်ပါသလား?

  • Total_Number_of_Reviews

    • ဤဟိုတယ်သို့ သုံးသပ်ချက်စုစုပေါင်း အရေအတွက်ဖြစ်ပြီး ဒေတာစုစည်းမှုရှိ သုံးသပ်ချက်များအား ရည်ညွှန်းသည်ဟုတ်မဟုတ် မသေချာပါ (ကုဒ်ရေးခြင်း မရှိခဲ့လျှင်)
  • Additional_Number_of_Scoring

    • သုံးသပ်ချက် အမှတ်ပေးခဲ့သော်လည်း သုံးသပ်ချက်စာ မရေးသားသော ပြဿနာဖြစ်သည်။

သုံးသပ်ချက် ကော်လံများ

  • Reviewer_Score
    • အနိမ့်ဆုံး 2.5 မှ အမြင့်ဆုံး 10 အထိ ၁ ဒယ်သင်္ကေတဖြင့် ကိန်းဂဏန်းတန်ဖိုးဖြစ်သည်
    • အိပ်မက်မှာ 2.5 သည် အနိမ့်ဆုံးဖြစ်သော ပြဿနာ မရှင်းလင်းပါ
  • Negative_Review
    • သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "No Negative" ပါလိမ့်မည်
    • သတိထားပါ၊ သုံးသပ်သူသည် ဆန့်ကျင်ဘက် သုံးသပ်ချက်ကို [Negative review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် မကောင်းသော အကြောင်းမရှိပါ")
  • Review_Total_Negative_Word_Counts
    • စကားလုံး အရေအတွက်များသည် နိမ့်သော အမှတ်နဲ့ ဆက်စပ်မှုရှိနိုင်သည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
  • Positive_Review
    • သုံးသပ်သူက စာမရေးသားခဲ့ပါက ဒီနေရာတွင် "No Positive" ပါလိမ့်မည်
    • သတိထားပါ၊ သုံးသပ်သူသည် ကောင်းသော သုံးသပ်ချက်ကို [Positive review] ကော်လံတွင် ပေးနိုင်သည် (ဥပမာ- "ဤဟိုတယ်အပေါ် ကောင်းသော အကြောင်းအရာ မရှိပါ")
  • Review_Total_Positive_Word_Counts
    • စကားလုံးများပို များခြင်းသည် အကြောင်းပြချက် အဆင့်မြင့်ကြောင်း ဖော်ပြသည် (စိတ်ခံစားချက်မစစ်ဆေးမီ)
  • Review_Date နှင့် days_since_review
    • သုံးသပ်ချက်သက်တမ်းသစ်သက်ဟောင်းကို တိုင်းတာနိုင်သည် (ဟိုတယ် စီမံခန့်ခွဲမှု ပြောင်းလဲမှု, ပြုပြင်မွမ်းမံမှုများ, ရေကူးကန် အသစ်ထည့်သွင်းမှု စသဖြင့် ကြောင်း)
  • Tags
    • သုံးသပ်သူသည် သူတို့ဖြစ်သော ဧည့်သည် အမျိုးအစား (တစ်ဦးတည်း သို့မဟုတ် မိသားစု), အခန်းအမျိုးအစား, နေ့ရက်ပမာဏနှင့် သုံးသပ်ချက် ပေးပုံတို့ကို ဖော်ပြသော အကျဉ်းချုပ် သက်သေပြချက်များ ဖြစ်သည်။
    • ဤ tag များကို အသုံးပြုခြင်းတွင် ပြဿနာရှိပါသည်၊ အောက်တွင် ထိုအသုံးဝင်မှုအကြောင်း ဆွေးနွေးထားသည်

သုံးသပ်သူ ကော်လံများ

  • Total_Number_of_Reviews_Reviewer_Has_Given
    • ဤသည်သည် အကြံပြုမှုမော်ဒယ်တွင် အရေးပါနိုင်သည်၊ ဥပမာ- သုံးသပ်ချက်များ စုစုပေါင်း ပြုလုပ်သူများသည် ပိုမို ဆန့်ကျင်ဘက် သုံးသပ်မှုများ ပေးနိုင်ကြောင်း တွေ့ရှိရပါက။ သို့သော် တစ်ဦးတည်း သုံးသပ်သူကို တစ်ကိုယ်တည်း အမှတ်တံဆိပ်နဲ့ တွဲဖက်၍ မရရှိနိုင်ပါ၊ အရေးပါသော သုံးသပ်ချက် မဟုတ်ပါ။ သုံးသပ်သူ ၁၀၀ ကျော် သုံးသပ်မှုရှိသူ ၃၀ ယောက်ရှိပြီး သို့သော် ၎င်းသည် အကြံပြုမှုမော်ဒယ်အတွက် အထောက်အကူဖြစ်မရေး။
  • Reviewer_Nationality
    • အချို့သူများသည် နိုင်ငံသားများကို အကောင်း သို့မဟုတ် ဆိုးသော သုံးသပ်ချက် ပေးနိုင်မှု များသည် နိုင်ငံသားအရ တစ်စိတ်တစ်ပိုင်းက ဆုံးဖြတ်ချက်ကြောင်း ရှိနိုင်ကြောင်း ထင်မြင်နိုင်သည်။ ဤစိတ်ကူးများကို မော်ဒယ်တွင် ထည့်သွင်းမှုအသိရှိမှုများ အထောက်ကူမဖြစ်စေရေး ကြိုးစားပါ။ ဤသည်မှာ နိုင်ငံတော်အောက်ခြေ စိတ်ကူးထင်မြင်မှုများဖြစ်ပြီး တစ်ဦးချင်း သုံးသပ်သူသည် သူတို့အတွေ့အကြုံအပေါ် အခြေခံ၍ သုံးသပ်ချက်ရေးသားသူ ဖြစ်ပါသည်။ ပြီးခဲ့သော ဟိုတယ်များ၊ ခရီးသွားခရီးနံပါတ်၊ ကိုယ်ပိုင် ပြစ်ဒဏ်မူရင်းများကဲ့သို့သော အကြောင်းအရာများဖြင့် စစ်ထုတ်ကြည့်နိုင်သည်။ စေရန် ၎င်းတို့၏ နိုင်ငံသားဖြစ်ခြင်းသည် သုံးသပ်ချက် အဆင့်များ အကြောင်းရင်းဖြစ်သည်ဟု ဆိုပါက သက်ဆိုင်မှု မရှိပါ။
နမူနာများ
ပျမ်းမျှ အဆင့် စုစုပေါင်း သုံးသပ်ချက် အရေအတွက် သုံးသပ်သူ အဆင့် နောက်ဆုတ်
သုံးသပ်ချက်
ကောင်းမွန်သော သုံးသပ်ချက် Tag များ
7.8 1945 2.5 ဤနေရာမှာ ယခုအချိန်တွင် ဟိုတယ်မဟုတ်ဘဲ ဆောက်လုပ်ရေးလုပ်ငန်း ဆိုသည်သူ သက်တမ်းတစ်နေ့တာကြာ အဆူပူခံယူခဲ့ရပြီး ခရီးရှည်ပြီးနောက် အနားယူနေစဉ် မလွယ်ကူသော ဆူညံသံကြောင့် ရန်ပုန်းခဲ့ရသည်။ လူများသည် တစ်နေ့လုံးတစ်ခန်းစီ ပြန်လည်တည်ဆောက်နေကြသော ပြေးစက်များတို့ဖြင့် အဆင့်တင်ရောင်းချနေသည်။ အခန်းပြောင်းရန် တောင်းဆိုခဲ့ပေမယ့် ကျောင်းဆဲ အခန်းက အားလုံးလှုပ်မကြတတ်။ နောက်ပိုင်း၌ စျေးနီးနေသလို ထပ်မံလည်း ဈေးချိုင်းခံရသည်။ ညအချိန်တွင် လျော်ကြေးလက်ခံပြီးစေ၊ နောက်နေ့တွင် အကျွမ်းအမွတ်မရှိဘဲ စျေးနှင့်သာမန် ဈေးထက်ပို၍ လက်ခံထားသည်။ ဤနေရာသည် ဆိုးရွားသောနေရာပါ ။ ပစ္စည်းများမှာ အာမခံမရှိပါ။ အရာရာ မကောင်းပါ။ နှောင့်နှေးသောနေရာ။ စီးပွားရေးခရီး၊ စုံတွဲစတန်းဒါဒေါ်ဘယ် အခန်း နှစ်ည ဆင်းခဲ့သည်

သင်မြင်နိုင်သလို ဤဧည့်သည်သည် ဟိုတယ်တွင် ဝမ်းသာမှုမရှိပါ။ ဟိုတယ်သည် ပျမ်းမျှ အဆင့် 7.8 နှင့် သုံးသပ်ချက် 1945 ခုရှိသော်လည်း ဤသုံးသပ်သူက 2.5 အမှတ်ပေးပြီး မကောင်းသော အတွေ့အကြုံများကို 115 စကားလုံးဖြင့် ဖော်ပြထားသည်။ Positive_Review ကော်လံတွင် ဘာမှ မရေးသားခဲ့လျှင် မကောင်းသော အချက်မရှိကြောင်း ထင်မြင်နိုင်သော်လည်း ၎င်းသည် သတိပေးစကား 7 စကားလုံးရေးသားထားသည်။ စကားလုံးများကိုသာ ရေတွက်ခဲ့လျှင် သို့မဟုတ် စာသား၏ အဓိပ္ပါယ် သို့မဟုတ် စိတ်ခံစားချက်ကို မစစ်ဆေးဘဲ ရေတွက်ပါက ဤသုံးသပ်သူ၏ ရည်ရွယ်ချက်ကို မှားပုံဖော်နိုင်သည်။ ထူးဆန်းစရာမှာ ၎င်း၏ 2.5 အမှတ်သည် စိတ်အနှောင့်အယှက် ဖြစ်သည်။ ဟိုတယ်သို့ အလွန်ဆိုးသောအတွေ့အကြုံရှိခဲ့လျှင် ဘာကြောင့် စတင်ပေးသင့်သည့် အမှတ်ရှိသနည်း? ဒေတာကို နီးစပ်စွာ ကြည့်တာကြောင့် အနိမ့်ဆုံးအမှတ်မှာ 2.5 ဖြစ်ပြီး 0 မဟုတ်ပါ။ အမြင့်ဆုံး အမှတ်မှာ 10 ဖြစ်သည်။

Tag များ

အထက်တွင် ဖော်ပြသည့်အတိုင်း၊ Tags ကို သုံးပြီး ဒေတာကို အုပ်စုခွဲရန် စဉ်းစားမှုမှာ သာမန်အကြံဖြစ်သည်။ မဒါပေမယ့် ဤ tag များမှာ စံချိန်မရှိသောကြောင့် အချို့ဟိုတယ်တွင် Single room, Twin room, နှင့် Double room ကျင့်သုံးမည့်နေရာ၌ နောက်ထပ်ဟိုတယ်တစ်ခုတွင် Deluxe Single Room, Classic Queen Room, နှင့် Executive King Room ဖြစ်နိုင်သည်။ ၎င်းတို့သည် တူညီသော အရာများဖြစ်နိုင်သော်လည်း အမျိုးမျိုးရှိခဲ့၍ ရွေးချယ်ရန် အခက်အခဲဖြစ်ရသည်-

၁။ စကားလုံးအားလုံးကို တစ်ခုတည်းသော စံချိန်သို့ ပြောင်းလဲရန် ကြိုးစားရန်၊ ဤအရာမှာ မူလ အခြေအနေများအား ကြည့်၍ (ဥပမာ- Classic single room သည် Single room သို့ ညွှန်ပြသနည်းရှိသော်လည်း Superior Queen Room with Courtyard Garden or City View သည် မလွယ်ကူပါ)

၂။ NLP နည်းလမ်းကို အသုံးပြုပြီး Solo, Business Traveller, သို့မဟုတ် Family with young kids ကဲ့သို့သော စကားလုံးများ ထပ်တိုးရေတွက်ပြီး ဟိုတယ်တစ်ခုချင်းစီကို ညွှန်ပြ၍ အကြံပြုမှုတွင် ပါဝင်စေရန်

Tag များသည် တစ်ခေါက်တည်း ၅ စကားလုံးမှ ၆ စကားလုံးအထိ ကွန်မာနှင့်ခွဲခြားထားသည့် ဘာသာပြန် အမျိုးအစား၊ ဧည့်သည်အမျိုးအစား၊ အခန်းအမျိုးအစား၊ နေ့ရက်ပမာဏ၊ သုံးသပ်ချက်တင်သွင်းခဲ့သော စက်ပစ္စည်း အမျိုးအစားအရ အုပ်စုတစ်ခု ဖြစ်သည်။ သို့သော် သုံးသပ်သူများသည် တစ်ချို့ အကွက်များအား ပြည့်စုံစွာ မဖြည့်ရန် ဖြစ်ပြုသောကြောင့် အနည်းငယ်သီးခြားနေပါသည်။

ဥပမာအားဖြင့် Type of group ကိုပါဝင်ပါစေ။ Tags ကော်လံ၌ ယခုအခါ 1025 ကွဲပြားသည့် ဖြစ်နိုင်မှုရှိပြီး ချို့ယွင်းမှုမှာ အချို့ဟာ မိသားစုကို ရည်ညွှန်းထားသော်လည်း အချို့ဟာ အခန်းအမျိုးအစားဖြစ်သည်။ တစ်ခြားမှာ "family" ဆိုသော စကားလုံးပါသောအောက်တွင် များစွာ Family room အမျိုးအစားရလဒ်ပါဝင်သည်။ "with" ဟုပါဝင်သော စကားလုံးအတွက် (ဥပမာ "Family with young children" သို့ "Family with older children") သည် ၈၀, ကျော်ဖြစ်ပြီး ၅၁၅, ခန့်ရလဒ်၌ ပါဝင်သည်။

ယင်းသည် tags ကော်လံအချို့ အကျိုးရှိကြောင်း ပြသသော်လည်း အသုံးဝင်စေရန် အလုပ်များသည့် ကိစ္စဖြစ်သည်။

ဟိုတယ် ပျမ်းမျှ အမှတ်

ဒေတာစုစည်းမှုပေါ်တွင် ထူးထူးခြားခြား ရှိသည့် အချက်အလက်များ တချို့ ရှိပြီး ဒီမှာ ဖော်ပြထားသည်။ မိမိ၏ မော်ဒယ်များ ဆောက်လုပ်ခြင်းအတွင်း ၎င်းတို့အကြောင်း အချက်အလက်ကို သိရှိရန် အရေးကြီးသည်။ မိတ်ဆွေရှာဖွေတွေ့ရှိပါက ဆွေးနွေးမှုပိုင်း၌ မျှဝေရန် လိုအပ်ပါသည်။

ဒေတာစုစည်းမှုတွင် ပျမ်းမျှ အမှတ် နှင့် သုံးသပ်ချက် အရေအတွက်နှင့် ဆက်စပ်သော ကော်လံများမှာ :

၁။ Hotel_Name ၂။ Additional_Number_of_Scoring ၃။ Average_Score ၄။ Total_Number_of_Reviews ၅။ Reviewer_Score

ဤဒေတာစုစည်းမှုတွင် အများဆုံး သုံးသပ်ချက်ရရှိထားသော ဟိုတယ်တစ်ခုမှာ Britannia International Hotel Canary Wharf ဖြစ်ပြီး 4789 သုံးသပ်ချက် ရှိသည်။ သို့သော် Total_Number_of_Reviews အတွက် တန်ဖိုးသည် 9086 ဖြစ်ပါသည်။ သင်သည် သုံးသပ်ချက်မရှိပေမယ့် အမှတ်များပိုမိုရှိကြောင်း ထင်မြင်နိုင်သည်၊ ထို့ကြောင့် Additional_Number_of_Scoring ကော်လံတန်ဖိုးကို ထည့်သွင်းရန်လိုအပ်သည်။ ဤတန်ဖိုးမှာ 2682 ဖြစ်ပြီး 4789 နှင့် ပေါင်းလျှင် 7,471 ရှိသော်လည်း Total_Number_of_Reviews မှ 1615 ချို့ယွင်းနေသည်။

Average_Score ကော်လံကို ကြည့်ပါက ဒေတာစုစည်းမှုအတွင်း သုံးသပ်ချက်ပေါင်းများ၏ ပျမ်းမျှဟု ထင်မြင်နိုင်သော်လည်း Kaggle မှ ဖေါ်ပြချက်မှာ "လွန်ခဲ့သော နှစ်တစ်နှစ်အတွင်း နောက်ဆုံးမှတ်ချက်အပေါ် အခြေခံသော ဟိုတယ်၏ ပျမ်းမျှ အမှတ်" ဟုဆိုသည်။ ၎င်းသည် အသုံးဝင်မှုနည်းသောဖြစ်နိုင်သော်လည်း၊ သင်အကြံပြု မော်ဒယ်အတွက် သုံးသပ်ချက် အမှတ်အရ ပျမ်းမျှစကားကို မတွက်ဘဲ ကိုယ်တိုင်တွက်ချက်နိုင်ပါသည်။ ဥပမာအနေဖြင့် အဆိုပါ ဟိုတယ်၏ ပျမ်းမျှ အမှတ်မှာ 7.1 ဖြစ်သော်လည်း ဒေတာတွင် ပါသော သုံးသပ်သူတို့၏ ပျမ်းမျှ အမှတ်က 6.8 ဖြစ်သည်။ ၎င်းသည် နီးကပ်သောတန်ဖိုးဖြစ်သော်လည်း မတူကြောင်း ဖြစ်ပြီး Additional_Number_of_Scoring အမှတ်များကြောင့် 7.1 အထိ တိုးတက်နိုင်သည့် အဆင့်ဖြစ်သည်ဟု ခန့်မှန်းနိုင်ပါသည်။ ဒါပေမယ့် စစ်ဆေးမရနိုင်သဖြင့် Average_Score, Additional_Number_of_Scoring နှင့် Total_Number_of_Reviews ကို 믿거나 사용하기 어렵다

တောင့်တင်းမှုတစ်ခု ဖြစ်စေသည်မှာ၊ အမှတ် ပိုများသော ဒုတိယဟိုတယ်သည် 8.12 တန်ဖိုးအရွယ်ရှိပြီး Kaggle ၏ Average_Score သည် 8.1 ဖြစ်သည်။ ဤမှန်ကန်ခြင်းမှာ သန့်ရှင်းမှု မဟုတ်မည်သို့ သို့မဟုတ် ပထမ ဟိုတယ်၏ ခြားနားမှုဖြစ်ပါသလား?

ဤဟိုတယ်များသည် အထူးသဖြင့် ထူးခြားချက်ပါတဲ့ဟိုတယ်များ ဖြစ်နိုင်ချေရှိပြီး အများအားဖြင့် တန်ဖိုးများသည် မလွဲမှားဘဲ တွက်ချက်ချက်မှုများ ဖြစ်သည်ဟု ယူဆရသည် (သို့သော် အချို့အကြောင်းကြောင့် မမှန်ကန်သလို ဖြစ်နေပေ) ဒေတာစုစည်းမှုရှိသည့် တန်ဖိုးများကို စူးစမ်းလေ့လာရန် နောက်တစ်ခုအနေဖြင့် ကိရိယာ အသေးစားရေးသားသွားမည်ဖြစ်သည်။

🚨 သတိပေးချက်တစ်ခု

ဤဒေတာစုစည်းမှုနှင့် လုပ်ငန်းဆောင်တာများကို လုပ်ဆောင်ရာတွင် မိမိကိုယ်တိုင်သောစာသားများကို ဖတ်ရန် သို့မဟုတ် သဒ္ဒါနက်ရှိုင်းစွာခြေရာခံရန် မလိုပါ၊ ဒီလုပ်ငန်းသည် NLP ၏ အဓိကအချက်ဖြစ်ပြီး လူ့အသက်မလိုဘဲ အဓိပ္ပါယ်သို့မဟုတ် စိတ်ခံစားမှုကို ဦးမြှောက်ဖော်ပြခြင်းဖြစ်သည်။ သို့ရာတွင် အနုတ်လက္ခဏာရှိသည့် သုံးသပ်ချက်များအား ဖတ်ရှုရသဖြင့် မဖတ်ရန် အကြံပြုပါသည်။ အချို့မှာ မလိုလားအပ်သော၊ သက်ဆိုင်မည့် အနုတ်လက္ခဏာမဟုတ်သော ဟိုတယ်ဆိုင်ရာ သုံးသပ်ချက်များဖြစ်ပြီး၊ ဥပမာ "ရာသီဥတုမကောင်းပါ" ဟု ဆိုသည့်အတိုင်း ဟိုတယ် ထိန်းချုပ်မှုအပြင် လူတိုင်းအတွက် ပြဿနာဖြစ်သည်။ သို့သော် တချို့သုံးသပ်ချက်များတွင် အနုတ်လက္ခဏာများဟာ အမျိုးသားဝါဒီ၊ လိင်လိုက်ဖက်မှု၊ သက်တမ်း၀ါဒီကဲ့သို့ ဆိုးရွားမှုရှိနိုင်သည်၊ ယင်းသည် အင်တာနက်မှ စုဆောင်းသည့် ဒေတာတွင် မျှော်လင့်ရသော ဆိုးရွားချက်တစ်ရပ် ဖြစ်သည်။ သုံးသပ်သူတချို့သည် သင် မနှစ်သက်မဖြစ်စရာ၊ မနည်းလြှံစရာ၊ စိတ်မကောင်းစေမည့် သုံးသပ်ချက်များမှာ တင်ပေးနိုင်သည်။ ထိုသို့ဖြစ်သော်လည်း ကိုက်ညီမှုကို ကုဒ်က စစ်ဆေးပေးခြင်းဖြစ်သည့်အတွက် ကိုယ်တိုင်ဖတ်ပြီး စိတ်ပျက်ဖွယ်ရာမဖြစ်စေပါနှင့်။ ဒါပေမယ့် အဲဒီလို အနုတ်လက္ခဏာ သုံးသပ်သူများက ညှစ်ညမ်းသောအခါ အနည်းငယ်ဘဲ ဖြစ်ပြီး ရှိနေပေမယ့် ရှိနေသည်။

လေ့ကျင့်ခန်း - ဒေတာစူးစမ်းခြင်း

ဒီတစ်ကြိမ်မှာ ဒေတာထည့်သွင်းခြင်း

ဒေတာကို မျက်နှာပြင်ပေါ်တွင် ကြည့်ရှုဖို့လုံလောက်ပြီ၊ ယခု မှာ ကိုယ်တိုင် ကုဒ်ရေးပြီး အဖြေတစ်ချို့ရယူကြပါစို့! ဤတန်းတူက pandas စာကြည့်တိုက်ကို အသုံးပြုသည်။ သင့်၏ ပထမဆုံးတာဝန်မှာ CSV ဒေတာကို ထည့်သွင်းပြီး ဖတ်ရှုနိုင်ခြင်းဖြစ်သည်။ pandas သည် အမြန်ဆုံး CSV loader ရှိပြီး၊ ရလဒ်ကို တန်းကြပ်တည်းစီထားသော dataframe အဖြစ် ထည့်သွင်းပေးသည်၊ ယခင်သင်ခန်းစာများနှင့် ဆင်တူသည်။ သည့် CSV တွင် တန်းချက်စီ ၅သိန်းကျော်ရှိသော်လည်း ကော်လံ ၁၇ သာရှိသည်။ pandas သည် dataframe အသစ်နှင့် အလုပ်လုပ်ရန် အကြံပြုမှုအများကြီး ပံ့ပိုးပေးသည်၊ ပြီးတဲ့နောက် စဉ်ကြောင့် ထည့်သွင်းထားသော စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်နိုင်သည်။

ယခု သင်ခန်းစာတွင် ကုဒ်ပိုင်းများနှင့် ကုဒ်ရဲ့ ရည်ညွှန်းချက်၊ ရလဒ်များ၏ အဓိပ္ပါယ်တို့ အကြောင်းအရာရှိတယ်။ သင်၏ကုဒ်အတွက် ထည့်သွင်းထားသည့် notebook.ipynb ကို အသုံးပြုပါ။

သင့် အသုံးပြုမည့် ဒေတာဖိုင်ကို load လုပ်ခြင်းဖြင့် စတင်ကြပါစို့။

# ဟိုတယ်မှ သုံးသပ်ချက်များကို CSV ဖိုင်မှ ထည့်သွင်းသည်
import pandas as pd
import time
# စတင်ချိန်နှင့် အဆုံးချိန်ကို ဖိုင်ဒေါင်းလုပ်ချိန်တွက်ရန်အတွက် time ကို သွင်းယူခြင်း
print("Loading data file now, this could take a while depending on file size")
start = time.time()
# df ဆိုသည်မှာ 'DataFrame' ဖြစ်ပြီး ဖိုင်ကို data ဖိုလ်ဒါအတွင်းဒေါင်းလုပ်လုပ်ထားသည်မှာ မှန်ကန်သေချာပါစေ
df = pd.read_csv('../../data/Hotel_Reviews.csv')
end = time.time()
print("Loading took " + str(round(end - start, 2)) + " seconds")

ဒေတာအား ဖတ်ခြင်းပြီးလျှင် အလုပ်ထုတ်မှု အချို့လုပ်ဆောင်နိုင်ပါတယ်။ သင်၏ အစီအစဉ်၏ အတွင်းက မိမိရေးထားသည့် ကုဒ်အစ ထိန်းထားပါ။

ဒေတာကို စူးစမ်းရှာဖွေခြင်း

ဤနည်းဖြင့် တင်ပြသည့် ဒေတာသည် သန့်ရှင်းပြီး ဖြစ်သည်၊ ဤသည်မှာ ပြန်လည်အသုံးပြုရန်အဆင်ပြေပြီး အခြားဘာသာစကားလက္ခဏာများနှင့် မရောမချုပ်ထားပါက Algorithm များကို တားဆီးမှုမဖြစ်စေပါ။

သင်တစ်ခါတရံ အစ ပိုင်းတွင် လိုအပ်၍ ဒေတာကို စနစ်တကျ ပြင်ဆင်ရန် လိုအပ်နိုင်သည်၊ ဒါပေမယ့် ယခုအခါတော့ မလိုပါဘူး။ လုံလောက်ခဲ့လျှင် မသင်ယူနိုင်သော ဘာသာစကား လက္ခဏာများကို မည်သို့処理 မည်နည်း။

ဒေတာကို ထည့်သွင်းပြီးနောက် စူးစမ်းရှာဖွေရန် ကိုယ်တိုင် အချိန်ယူပါ။ သင်၏ NLP algorithm များအတွက်သော Negative_Review နှင့် Positive_Review ကော်လံများတွင် စိတ်ဝင်စားမှုရှိသည်။ သို့သော် NLP နှင့် စိတ်ခံစားမှုကို စတင်ရန်မပြုမီ pandas နှင့် တွက်ချက်ထားသော တန်ဖိုးများနှင့် Dataset တွင် တန်ဖိုးများကို ကိုက်ညီကြောင်း သေချာစေရန် အောက်ပါ ကုဒ်ကို လုပ်ဆောင်ပါ။

Dataframe လုပ်ဆောင်ချက်များ

ဤသင်ခန်းစာ၏ ပထမဆုံးတာဝန်မှာ ဒေတာဖရိမ့်ကို သုံးသပ်ရန် စစ်ဆေးခြင်းဖြစ်ပြီး (ပြောင်းလဲမှု မလုပ်ဘဲ) စာသားများကို အောက်ပါအတိုင်း ဖြေဆိုရန် ဖြစ်သည်။

အများသော programming လုပ်ငန်းများကဲ့သို့ ဖြေရှင်းနည်းအများကြီးရှိပြီး၊ အနာဂတ်တွင်ပြန်လည်ကြည့်ရှုလွယ်ကူရန် ကျယ်ပြန့်ပြီး လွယ်ကူသော နည်းလမ်းဖြင့် ဆောင်ရွက်ခြင်းသည် အကြံပြုချက်ကောင်းဖြစ်သည်။ dataframes တွင် လုပ်နိုင်သည့် ပရိုဂရမ်များကို အလွယ်တကူကျွမ်းကျင်စွာ အသုံးပြုနိုင်သည်။

အောက်ပါမေးခွန်းများကို ကုဒ်ရေးခြင်း အလုပ်အဖြစ် သတ်မှတ်ပြီး ဖြေဆိုရန် ကြိုးစားကြပါ။

  1. Load လုပ်ထားသော data frame ၏ shape ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)
  2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -
    1. Reviewer_Nationality ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
    2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
    3. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။
  3. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။
  4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။
  5. အဆိုပါ Average_Score ကော်လံသည် ဟိုတယ်တစ်ခုစီအတွက် ရှိသော်လည်း pandas ကိုအသုံးပြုပြီး ဟိုတယ်တစ်ခုစီ၏ စုပေါင်း reviewer ရမှတ်အပေါ်မှ လက်တွေ့တွက်ချက်သော Calc_Average_Score လို့ နောက်ထပ်အကွာအဝေးကော်လံတစ်ခု ထည့်ပါ။
  6. တချို့ဟိုတယ်များသည် (၁ ဒသမချိုးမြှောက်မှုအတိုင်း) Average_Score နှင့် Calc_Average_Score တန်ဖိုးနှစ်ခုတူညီသလား။
    1. Series နှင့် ဆက်နွယ်သော function တစ်ခုကိုရေး၍ တန်ဖိုးမညီဘဲမူအခါပါ ပြောကြားပါ။ .apply() နည်းလမ်းဖြင့် လုပ်ဆောင်ပါ။
  7. Negative_Review ကော်လံတွင် "No Negative" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
  8. Positive_Review ကော်လံတွင် "No Positive" တန်ဖိုးရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။
  9. Positive_Review ကော်လံတွင် "No Positive" နှင့် Negative_Review ကော်လံတွင် "No Negative" တန်ဖိုးများပါရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။

ကုတ်ဖြေဆိုချက်များ

  1. Load လုပ်ထားသော data frame ၏ shape ကိုပုံနှိပ်ပါ (shape သည် စားတန်းနှင့် ကော်လံ အရေအတွက်)

    print("The shape of the data (rows, cols) is " + str(df.shape))
    > The shape of the data (rows, cols) is (515738, 17)
    
  2. Reviewer များ၏ နိုင်ငံလက္ခဏာများရေအတွက် တွက်ချက်ပါ -

    1. Reviewer_Nationality ကော်လမ်တွင် မတူညီသောတန်ဖိုးများ ဘယ်နှစ်ခုရှိပြီး ဘာလဲ။
    2. ဒေတာများတွင် အများဆုံး တွေ့ရှိရသော မည်သည့်နိုင်ငံသား မြို့တော်လဲ (နိုင်ငံနာမည်နှင့် မှတ်ချက်အရေအတွက် ကို ပုံနှိပ်ပါ)။
    # value_counts() သည် Series object တစ်ခုကို ဖန်တီးပြီး၊ ဤအမှုအတွင်းမှာ index နှင့် values များရှိသည်၊ အဲဒါကတော့ နိုင်ငံနှင့် သူတို့၏ ရှိံ့ပြောသည့် frequency ဖြစ်သည်
    nationality_freq = df["Reviewer_Nationality"].value_counts()
    print("There are " + str(nationality_freq.size) + " different nationalities")
    # Series ၏ ပထမနှင့် နောက်ဆုံး စာသားများကို ပုံနှိပ်ပါ။ ဒေတာအားလုံးကို ပုံနှိပ်ရန် nationality_freq.to_string() ထဲသို့ ပြောင်းပါ။
    print(nationality_freq) 
    
    There are 227 different nationalities
     United Kingdom               245246
     United States of America      35437
     Australia                     21686
     Ireland                       14827
     United Arab Emirates          10235
                                   ...  
     Comoros                           1
     Palau                             1
     Northern Mariana Islands          1
     Cape Verde                        1
     Guinea                            1
    Name: Reviewer_Nationality, Length: 227, dtype: int64
    
    1. နောက်တစ်ဆင့် အများဆုံး တွေ့ရှိရသော နိုင်ငံသား ၁၀ ခုနဲ့ တစ်ပါတည်းသော တွက်ချက်မှုရေအရေအတွက်။

      print("The highest frequency reviewer nationality is " + str(nationality_freq.index[0]).strip() + " with " + str(nationality_freq[0]) + " reviews.")
      # တန်ဖိုးများအပေါ်တွင် ဦးစီးအထောင့်နေရာရှိပြီး strip() သည် ပုံနှိပ်ရန် အလင်းသတင်းများအား ဖယ်ရှားသည်
      # ထိပ်ဆုံး ၁၀ ခုသော နိုင်ငံသားမှုများနှင့် ၎င်းတို့၏ ဖြစ်နိုင်ခြေအမြင့်များ ဘာတွေလဲ?
      print("The next 10 highest frequency reviewer nationalities are:")
      print(nationality_freq[1:11].to_string())
      
      The highest frequency reviewer nationality is United Kingdom with 245246 reviews.
      The next 10 highest frequency reviewer nationalities are:
       United States of America     35437
       Australia                    21686
       Ireland                      14827
       United Arab Emirates         10235
       Saudi Arabia                  8951
       Netherlands                   8772
       Switzerland                   8678
       Germany                       7941
       Canada                        7894
       France                        7296
      
  3. အများဆုံး ပြန်လည်သုံးသပ်ခဲ့သော ဟိုတယ်များသည် ထို ၁၀ နိုင်ငံသားအဖြစ် ကွဲပြားမှုရှိသည်။

    # ထိပ်ဆုံး ၁၀ အမျိုးအစားနှင့်အတူ အကြိမ်ရေများဆုံး ပြန်လည်သုံးသပ်ထားသော ဟိုတယ်သည် ဘယ်ဟိုတယ်လဲ
    # သာမာန်အားဖြင့် pandas ဖြင့် ပတ်လည်ခြင်းကို ရှောင်ရှားပါမည်၊ သို့သော် ဖေါ်ပြထားသော ဒေတာအခြေအနေဖြင့် DataFrame အသစ် တည်ဆောက်ခြင်းကို ပြသလိုသည် ( ဒေတာအရေအတွက်ကြီးလျှင် မလုပ်သင့်ပါ၊ အလွန်ဆွဲချိတ်နိုင်ပါသည်)
    for nat in nationality_freq[:10].index:
       # ပထမဦးစွာ၊ စံညွှန်းနှင့် ကိုက်ညီသော အတိုင်း အသစ် DataFrame ထဲသို့ အတန်းများအားလုံး ယူပါ
       nat_df = df[df["Reviewer_Nationality"] == nat]   
       # ယခု ဟိုတယ် စံดิต်ကိန်းကို ယူပါ
       freq = nat_df["Hotel_Name"].value_counts()
       print("The most reviewed hotel for " + str(nat).strip() + " was " + str(freq.index[0]) + " with " + str(freq[0]) + " reviews.") 
    
    The most reviewed hotel for United Kingdom was Britannia International Hotel Canary Wharf with 3833 reviews.
    The most reviewed hotel for United States of America was Hotel Esther a with 423 reviews.
    The most reviewed hotel for Australia was Park Plaza Westminster Bridge London with 167 reviews.
    The most reviewed hotel for Ireland was Copthorne Tara Hotel London Kensington with 239 reviews.
    The most reviewed hotel for United Arab Emirates was Millennium Hotel London Knightsbridge with 129 reviews.
    The most reviewed hotel for Saudi Arabia was The Cumberland A Guoman Hotel with 142 reviews.
    The most reviewed hotel for Netherlands was Jaz Amsterdam with 97 reviews.
    The most reviewed hotel for Switzerland was Hotel Da Vinci with 97 reviews.
    The most reviewed hotel for Germany was Hotel Da Vinci with 86 reviews.
    The most reviewed hotel for Canada was St James Court A Taj Hotel London with 61 reviews.
    
  4. ဒေတာအရ ဟိုတယ်တစ်ခုစီတွင် Review များရေအတွက် ဘယ်လောက်ရှိသနည်း။

    # ပထမဦးဆုံး အဟောင်း dataframe ကို အခြေခံပြီး အသစ်တစ်ခုကို ဖန်တီးပါ၊ မလိုအပ်သော ကော်လံများကို ဖယ်ရှားပါ
    hotel_freq_df = df.drop(["Hotel_Address", "Additional_Number_of_Scoring", "Review_Date", "Average_Score", "Reviewer_Nationality", "Negative_Review", "Review_Total_Negative_Word_Counts", "Positive_Review", "Review_Total_Positive_Word_Counts", "Total_Number_of_Reviews_Reviewer_Has_Given", "Reviewer_Score", "Tags", "days_since_review", "lat", "lng"], axis = 1)
    
    # သိုလှောင်ရာတွင် Hotel_Name အလ်က ပြန်လည်စုစည်းပြီး အရေအတွက်ကိုတွက်ပါ၊ နောက်ထပ် ကော်လံအသစ် Total_Reviews_Found တွင် ရလဒ်ကို ထည့်ပါ
    hotel_freq_df['Total_Reviews_Found'] = hotel_freq_df.groupby('Hotel_Name').transform('count')
    
    # ထပ်တူနေသောအတန်းများအားလုံးကို ဖယ်ရှားပါ
    hotel_freq_df = hotel_freq_df.drop_duplicates(subset = ["Hotel_Name"])
    display(hotel_freq_df) 
    
    Hotel_Name Total_Number_of_Reviews Total_Reviews_Found
    Britannia International Hotel Canary Wharf 9086 4789
    Park Plaza Westminster Bridge London 12158 4169
    Copthorne Tara Hotel London Kensington 7105 3578
    ... ... ...
    Mercure Paris Porte d Orleans 110 10
    Hotel Wagner 135 10
    Hotel Gallitzinberg 173 8

    သင်တွေ့မည်မှာ ဒေတာစုစည်းမှုအရ ရေတွက်ထားသော အကြောင်းအရာ သည် Total_Number_of_Reviews မှာပါတဲ့ တန်ဖိုးနှင့် ကိုက်ညီမှု မရှိ။ ဒေတာတွင် ဤတန်ဖိုးသည် ဟိုတယ်၏ စုစုပေါင်း समीक्षा အရေအတွက်ကို ကိုယ်စားပြုနိုင်သော်လည်း အားလုံး မဆွဲယူထားကြောင်း သို့မဟုတ် အခြား ကိန်းဂဏန်းနည်းလမ်းဖြင့်တွက်ချက်ထားသည့် အရာ ဖြစ်နိုင်သည်။ Total_Number_of_Reviews ကို မော်ဒယ်တွင် အသုံးမပြုခြင်းမှာ ဒီအကြောင်းမှာဖြစ်ပါတယ်။

  5. ဒေတာအတွက် Average_Score column ရှိသော်လည်း pandas ရဲ့ မှတ်ချက်အားလုံးရမှတ်၏ အပျမ်းမျှကို ကိုယ်တိုင်တွက်ချက်ပြီး အသစ် Calc_Average_Score column ကို ထည့်သွင်းပါ။ Hotel_Name, Average_Score, Calc_Average_Score ကော်လံများကို ပုံနှိပ်ပေးပါ။

    # တစ်စောင်ကိုယူပြီး အဲ့ဒီဆိုဒ်နဲ့ တွက်ချက်မှုတစ်ခုခုလုပ်တဲ့ function ကို သတ်မှတ်ပါ
    def get_difference_review_avg(row):
      return row["Average_Score"] - row["Calc_Average_Score"]
    
    # 'mean' က သင်္ချာအတွက် 'ပျမ်းမျှ' ဆိုတဲ့စကားလုံးပါ
    df['Calc_Average_Score'] = round(df.groupby('Hotel_Name').Reviewer_Score.transform('mean'), 1)
    
    # နှစ်ခုဆင့်ပျမ်းမျှအချက်အလက်ကြားက လွဲပြောင်းချက်ကို သတ္တုအသစ်ကော်လံတစ်ခုထည့်ပါ
    df["Average_Score_Difference"] = df.apply(get_difference_review_avg, axis = 1)
    
    # Hotel_Name ရဲ့တူညီချက်အားလုံးမပါသော df တစ်ခုဖန်တီးပါ (အဲဒါထဲမှာ ဟိုတယ်တစ်ခုလျှင် တစ်စောင်သာ)
    review_scores_df = df.drop_duplicates(subset = ["Hotel_Name"])
    
    # ပျမ်းမျှအချက်အလက်အနိမ့်ဆုံးနဲ့အမြင့်ဆုံး လွဲပြောင်းချက်ရှာဖွေအောင် dataframe ကို အစီအစဉ်ရေးပါ
    review_scores_df = review_scores_df.sort_values(by=["Average_Score_Difference"])
    
    display(review_scores_df[["Average_Score_Difference", "Average_Score", "Calc_Average_Score", "Hotel_Name"]])
    

    Average_Score နှင့် Calc_Average_Score တန်ဖိုးများ ပြောင်းလဲခြင်းများ ရှိသည့် အကြောင်းကို စူးစမ်းမေးမြန်းမှု ရှိနိုင်သည်။ ဘာကြောင့် တစ်ချို့ တန်ဖိုးများကိုက်ညီသော်လည်း တချို့ မတူညီကြောင်း သိရှိနိုင်ခြင်း မရှိပါ။ အကောင်းဆုံးလမ်းမှာ ကိုယ်တိုင်တွက်ချက်ထားသော review score ကိုအသုံးပြုခြင်းဖြစ်သည်။ แตกต่างกันနည်းလမ်းများသည် မကြီးမှူဖေါ်ပြထားသော်လည်း နောက်ဆုံးဟိုတယ်များ၏ လွန်လွန်ကဲကဲ ပြောင်းလဲမှုများအား စိစစ်ထားသည့် အနုမြူစာရင်းများမှာ အောက်ပါအတိုင်းဖြစ်သည်။

    Average_Score_Difference Average_Score Calc_Average_Score Hotel_Name
    -0.8 7.7 8.5 Best Western Hotel Astoria
    -0.7 8.8 9.5 Hotel Stendhal Place Vend me Paris MGallery
    -0.7 7.5 8.2 Mercure Paris Porte d Orleans
    -0.7 7.9 8.6 Renaissance Paris Vendome Hotel
    -0.5 7.0 7.5 Hotel Royal Elys es
    ... ... ... ...
    0.7 7.5 6.8 Mercure Paris Op ra Faubourg Montmartre
    0.8 7.1 6.3 Holiday Inn Paris Montparnasse Pasteur
    0.9 6.8 5.9 Villa Eugenie
    0.9 8.6 7.7 MARQUIS Faubourg St Honor Relais Ch teaux
    1.3 7.2 5.9 Kube Hotel Ice Bar

    ၁နာရီကျော်ကွာခြားမှုရှိသော ဟိုတယ်တစ်ခုသာရှိသောကြောင့် ကွာခြားမှုကို လက်မခံခြင်းနှင့် ကိုယ်တိုင်တွက်ချက်ထားသော အပျမ်းမျှမှတ်ချက်ကို အသုံးပြုနိုင်ပါသည်။

  6. Negative_Review ကော်လံတွင် "No Negative" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။

  7. Positive_Review ကော်လံတွင် "No Positive" အကြောင်းအရာရှိသည့် စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပေးပါ။

  8. Positive_Review ကော်လံတွင် "No Positive" နှင့် Negative_Review ကော်လံတွင် "No Negative" တန်ဖိုးရှိသော စားတန်းရေအတွက်တွက်ချက်ပြီး ပုံနှိပ်ပါ။

    # lambda များဖြင့်:
    start = time.time()
    no_negative_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" else False , axis=1)
    print("Number of No Negative reviews: " + str(len(no_negative_reviews[no_negative_reviews == True].index)))
    
    no_positive_reviews = df.apply(lambda x: True if x['Positive_Review'] == "No Positive" else False , axis=1)
    print("Number of No Positive reviews: " + str(len(no_positive_reviews[no_positive_reviews == True].index)))
    
    both_no_reviews = df.apply(lambda x: True if x['Negative_Review'] == "No Negative" and x['Positive_Review'] == "No Positive" else False , axis=1)
    print("Number of both No Negative and No Positive reviews: " + str(len(both_no_reviews[both_no_reviews == True].index)))
    end = time.time()
    print("Lambdas took " + str(round(end - start, 2)) + " seconds")
    
    Number of No Negative reviews: 127890
    Number of No Positive reviews: 35946
    Number of both No Negative and No Positive reviews: 127
    Lambdas took 9.64 seconds
    

နည်းလမ်းအခြား

Lambda မသုံးပဲ အရာဝတ္ထုရေတွက်ခြင်းဖြင့် တခြားနည်းလမ်းဖြင့် row ရေတွက်မှုကို sum ဖြင့် ရှာပါ။

# လမ်ဘ်ဒါများမသုံးဘဲ (နှစ်မျိုးစလုံးသုံးနိုင်ကြောင်း ပြသရန် အသုံးပြုသော လက္ခဏာများရောစပ်မှုဖြင့်)
start = time.time()
no_negative_reviews = sum(df.Negative_Review == "No Negative")
print("Number of No Negative reviews: " + str(no_negative_reviews))

no_positive_reviews = sum(df["Positive_Review"] == "No Positive")
print("Number of No Positive reviews: " + str(no_positive_reviews))

both_no_reviews = sum((df.Negative_Review == "No Negative") & (df.Positive_Review == "No Positive"))
print("Number of both No Negative and No Positive reviews: " + str(both_no_reviews))

end = time.time()
print("Sum took " + str(round(end - start, 2)) + " seconds")

Number of No Negative reviews: 127890
Number of No Positive reviews: 35946
Number of both No Negative and No Positive reviews: 127
Sum took 0.19 seconds

အကယ်၍ 127 စားတန်းတွင် Negative_Review နှင့် Positive_Review ကော်လံများတွင် "No Negative" နှင့် "No Positive" တန်ဖိုးရှိသည်ဟု တွေ့ရှိပါက ဤသည်မှာ ဝန်တော်သုံးသပ်သူသည် ဟိုတယ်ကို ဂဏန်းရမှတ် ပေးခဲ့သော်လည်း အနုတ်/အပါ အခြားသုံးသပ်ချက် မရေးချင်ခဲ့ခြင်း ဖြစ်သည်။ အံ့အားသင့်စရာကောင်းစွာ ဤသည်မှာ စားတန်း ၅၁၅၊၇၃၈ ထဲမှ ၁၂၇ များသာဖြစ်သဖြင့် (0.02%) မော်ဒယ် သို့မဟုတ် ရလဒ်အပေါ် မထိခိုက်မပျက်အကျိုးသက်ရောက်မှုမရှိသလောက် ဖြစ်ပါသည်၊ ဒါပေမယ့် မည်သည့် သုံးသပ်ချက်များတွင် သုံးသပ်ချက် မရှိသော စားတန်းများ ရှိနိုင်ခြင်းကို သိရှိရန် ဒေတာကို စူးစမ်းဖော်ထုတ်ရန် တန်ဖိုးရှိသည်။

သင်သည် ဒေတာစုစည်းမှုကို စူးစမ်းပြီးနောက်၊ နောက်တစ်ခုအတွဲတွင် ဒေတာကို စစ်ထုတ်ပြီး စိတ်ခံစားချက်သုံးသပ်မှုပေါင်းထည့်မည်။


🚀စိန်ခေါ်မှု

ယခင်သင်ခန်းစာများတွင် ကြည့်ရှုသည့်အတိုင်း၊ သင့်ဒေတာနှင့် ၎င်း၏အထူးပြကုန်များကို နားလည်ခြင်းသည် လုပ်ဆောင်မှုများကို လုပ်မည်မတိုင်မီ အရေးကြီးမှုရှိသည်ကို ဖော်ပြသည်။ စာသားအခြေပြုဒေတာများကို စူးစမ်းလိုက်ပြီး မော်ဒယ်အတွက် မှတ်ချက် အနုတ်လက္ခဏာ သို့မဟုတ် အတော်လေး ထိုလောက်မဟုတ်သော စိတ်ခံစားမှု ဖြစ်ပေါ်စေနိုင်သော နေရာများ ရှာဖွေပါ။

သင်ခန်းစာပြီးစီးမှု စစ်ဆေးမှု

ပြန်လည်ဆန်းစစ်ခြင်း နှင့် ကိုယ်တိုင်သင်ယူခြင်း

NLP ကို သင်ယူရန် Learning Path အကြောင်း မှာ မဆို မော်ဒယ်ဖန်တီးရာတွင် အသုံးပြုနိုင်သည့် ကိရိယာများ ရှာဖွေပါ။

အလုပ်အပ်ဒါ

NLTK


ပြောကြားချက် ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းနေသော်လည်း၊ စက်ကိရိယာဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် လိုအပ်ပါသည်။ မူလစာတမ်းကို မူရင်းဘာသာဖြင့်သာ ယုံကြည်စိတ်ချရသော အချက်အလက်အဖြစ် သတ်မှတ်သင့်သည်။ အရေးကြီးသည့် သတင်းအချက်အလက်များအတွက် ပရော်ဖက်ရှင်နယ် လူသားဘာသာပြန်သူဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုကွာခြားမှုများ သို့မဟုတ် မမှန်ကန်သော အသုံးပြုမှုများအတွက် ကျွန်ုပ်တို့ တာဝန်မခံပါ။