Thursday, July 18, 2019

Cycle 3: Looking at two words of sentence endings


Having removed Pali sentences from my raw Myanmar Wikimedia corpus “x100_itN_Sen.5” I am going to analyze the sentence-ending words I got from my naive segmentation posted earlier. As in my last post, I am removing the Pali sentences from the tokenized sentences “x100_itNS5.w”.

Removing Pali sentences from tokenized sentences

As shown in my last post, I already had my raw corpus segmented into “words” as x100_itNS5.w with “quatenda”. Now I am removing the Pali sentences from them.
library(quanteda)
x100_itNS5.w_paliN <- x100_itNS5.w[-which(stCon.pc > 8)]
length(x100_itNS5.w_paliN)
[1] 306290
cat(paste0(x100_itN_Sen5_paliN[c(1, 100000, 200000, 306290)]))
 ဤနေရာသည် အက်ဒမင်များ (စီမံခန့်ခွဲသူများ)အား မေးခွန်းများ မေးမြန်းရန် နေရာ မဟုတ်သလို Wikipedia:Requests for adminshipအက်ဒမင်အဖြစ် လျောက်ထားရန် နေရာ လည်း မဟုတ်ပါ။ သား သုဝဏ္ဏသာမသည် မိဘတို့်ပြန်ချိန်၌ မပြန်လာသဖြင့် လိုက်ပါသွားရာ မိဘတို့မျက်စိကွယ်ကြောင်းသိရ၍ မိမိက လုပ်ကြွေးပြုစုပါမည့် အကြောင်း ပြောပြကာ ခေါ်ဆောင်လာခဲ့သည်။ ၁ဝ ပေ စတုရန်းရှိသော စိုက်ခင်းအတွက် ဟင်းနုနယ်စေ့ လေးအောင်စခန့်ကို ပျိုးရသည်။ စတန်းဖို့ရှိ နေအိမ်၌ ၂၀၁၁ ခု၊ အောက်တိုဘာလ ၂၄ ရက်တွင် ကွယ်လွန်သည်။
cat(paste0(x100_itNS5.w_paliN[c(1, 100000, 200000, 306290)]))
ဤ နေရာ သည် အက် ဒ မင် များ ( စီမံ ခန့်ခွဲ သူများ ) အား မေးခွန်း များ မေးမြန်း ရန် နေရာ မဟုတ် သလို Wikipedia:Requests for adminshipအက် ဒ မင် အဖြစ် လျောက် ထား ရန် နေရာ လည်း မဟုတ် ပါ ။ သား သု ဝဏ္ဏ သာ မသည် မိ ဘ တို့် ပြန် ချိန် ၌ မ ပြန်လာ သဖြင့် လိုက်ပါ သွား ရာ မိဘ တို့ မျက်စိ ကွယ် ကြောင်း သိ ရ ၍ မိမိ က လုပ် ကြွေး ပြုစု ပါ မည့် အကြောင်း ပြော ပြ ကာ ခေါ် ဆောင် လာ ခဲ့ သည် ။ ၁ဝ ပေ စတုရန်း ရှိ သော စိုက်ခင်း အတွက် ဟင်းနုနယ် စေ့ လေး အောင်စ ခန့် ကို ပျိုး ရ သည် ။ စ တန်း ဖို့ ရှိ နေအိမ် ၌ ၂၀၁၁ ခု ၊ အောက်တိုဘာလ ၂၄ ရက် တွင် ကွယ်လွန်သည် ။

Extracting two-word sentence endings

First I extracted the sentence ending mark and two “words” preceding it from every sentence. Note that the the “words” were produced by “qunateda” package. A “word” is sometimes a single syllable and sometimes a group of two or more syllables.
library(stringr)
system.time(
  x100_iwpN.3 <- sapply(x100_itNS5.w_paliN, paste0, collapse=" ") %>%
    word(.,-3,-1)
)
   user  system elapsed 
  23.43    0.50   24.45 
str(x100_iwpN.3)
 chr [1:306290] "<U+1019><U+101F><U+102F><U+1010><U+103A> <U+1015><U+102B> <U+104B>" ...
cat(x100_iwpN.3[c(1, 100000, 200000, 306290)])
မဟုတ် ပါ ။ ခဲ့ သည် ။ ရ သည် ။ တွင် ကွယ်လွန်သည် ။
To get more information on the sentence endings we create a dfm (document feature matrix) from the tokenized sentence endings.
system.time(
  x100_iwpN3.dfm <- tokens(x100_iwpN.3,ngrams=3,concatenator = "-") %>%
    dfm(.)
)
   user  system elapsed 
  13.27    0.23   13.38 
x100_iwpN3.dfm
Document-feature matrix of: 306,290 documents, 20,383 features (>99.99% sparse).
We see that there were 306,290 documents (lines of sentence-endings) with 20,383 distinct features (sentence-ending text). By default, textstat_frequency() function gives the frequency of sentence-endings sorted by frequency. Sorting this result further by the alphabetical order may give better insights into them.

Result

Sentence-endings are just a special case of what is known as N-grams in natural language processing. It is obvious that a longer N-gram would give a better insight to the content of the source-sentences, but they will become more sparse and therefore less useful for looking at the typicality of the sentence endings.
First I looked at the 100 most frequent sentence endings. There were no surprises.
x100SE3_tf <- textstat_frequency(x100_iwpN3.dfm)[,1:2]  %>%
   .[order(-.$frequency,.$feature),]
utf8::utf8_print(do.call("paste", c(sep= " = ", x100SE3_tf[1:100,])))
  [1] "ခဲ့-သည်-။ = 41523"         "လေ-သည်-။ = 26303"       
  [3] "ကြ-သည်-။ = 24917"        "ရ-သည်-။ = 16157"        
  [5] "ရှိ-သည်-။ = 11552"         "ပေ-သည်-။ = 6436"        
  [7] "ပါ-တယ်-။ = 5707"         "ခြင်း-ဖြစ်သည်-။ = 4071"   
  [9] "ဖြစ်-၏-။ = 3445"         "လာ-သည်-။ = 2645"        
 [11] "ခဲ့-၏-။ = 2642"           "ကြ-၏-။ = 2594"         
 [13] "ဖြစ်-ပါသည်-။ = 2254"      "ခဲ့-ပါသည်-။ = 2159"       
 [15] "ပင်-ဖြစ်သည်-။ = 2038"      "သေး-သည်-။ = 2021"       
 [17] "ပါဝင်-သည်-။ = 1966"       "ရ-၏-။ = 1949"          
 [19] "ရ-မည်-။ = 1840"          "လိုက်-သည်-။ = 1562"        
 [21] "ရှိ-၏-။ = 1472"           "သွား-သည်-။ = 1445"       
 [23] "ဟု-ဆိုသည်-။ = 1400"         "တို့-ဖြစ်သည်-။ = 1373"      
 [25] "များ-ဖြစ်သည်-။ = 1359"    "ဟု-ခေါ်သည်-။ = 1333"      
 [27] "ဖြစ်လာ-သည်-။ = 1298"      "ခု-ဖြစ်သည်-။ = 1273"      
 [29] "မည်-ဖြစ်သည်-။ = 1250"      "လည်း-ဖြစ်သည်-။ = 1245"    
 [31] "သူ-ဖြစ်သည်-။ = 1188"       "မူ-သည်-။ = 1136"         
 [33] "ရ-ပါသည်-။ = 1095"        "နိုင်-ပါသည်-။ = 1042"      
 [35] "ပေ-မည်-။ = 972"          "တွင်-တည်ရှိသည်-။ = 941"      
 [37] "ကြ-ပါသည်-။ = 922"        "ခဲ့-ပေ-။ = 906"          
 [39] "မျိုး-ဖြစ်သည်-။ = 837"      "လေ-၏-။ = 797"          
 [41] "ရှိ-ပါသည်-။ = 792"         "ထား-ပါသည်-။ = 746"      
 [43] "ဦး-ဖြစ်သည်-။ = 740"       "ပြီ-ဖြစ်သည်-။ = 670"      
 [45] "ဆောင်ခဲ့-သည်-။ = 663"       "မူ-၏-။ = 635"           
 [47] "ရှိ-ပေ-။ = 588"           "နိုင်-၏-။ = 571"          
 [49] "ပါရှိ-သည်-။ = 559"         "သာ-ဖြစ်သည်-။ = 552"      
 [51] "ပြီး-ဖြစ်သည်-။ = 540"      "ရရှိ-သည်-။ = 536"         
 [53] "ဖော်ပြ-ထားသည်-။ = 527"    "ဖြစ်-သည်-။ = 521"        
 [55] "အသုံးပြု-သည်-။ = 503"       "ရ-ပြန်သည်-။ = 485"       
 [57] "ဆုံး-ဖြစ်သည်-။ = 484"       "ဆို-၏-။ = 467"           
 [59] "ဖွားမြင်-သည်-။ = 466"      "ယူခဲ့-သည်-။ = 466"         
 [61] "ကြ-ချေ-။ = 455"         "လှ-သည်-။ = 446"          
 [63] "ထင်ရှား-သည်-။ = 444"       "သင့်-သည်-။ = 442"         
 [65] "ကြောင့်-ဖြစ်သည်-။ = 439"    "မြို့-ဖြစ်သည်-။ = 433"      
 [67] "တော့-ပေ-။ = 420"         "လေ-တော့သည်-။ = 420"      
 [69] "ပျောက်-၏-။ = 411"        "ကြ-ပေ-။ = 409"         
 [71] "ထား-၏-။ = 407"          "မဟုတ်-ပေ-။ = 404"        
 [73] "ခဲ့-တယ်-။ = 403"           "ထားခဲ့-သည်-။ = 398"       
 [75] "ပါ-ဘူး-။ = 396"          "ဆောင်ရွက်-သည်-။ = 395"     
 [77] "ရှိ-ချေ-။ = 395"          "သောကြောင့်-ဖြစ်သည်-။ = 393"
 [79] ")-ဖြစ်သည်-။ = 392"        "ပေ-လိမ့်မည်-။ = 383"       
 [81] "ခဲ့-ချေ-။ = 382"          "တော့-ချေ-။ = 363"       
 [83] "စေ-နိုင်သည်-။ = 362"        "နိုင်-ပေ-။ = 358"         
 [85] "စေ-၏-။ = 357"           "နိုင်-ချေ-။ = 340"        
 [87] "သေး-၏-။ = 337"          "မဟုတ်-ပါ-။ = 333"        
 [89] "ဆို-နိုင်သည်-။ = 328"         "လေ-ပြီ-။ = 325"         
 [91] "ခဲ့-ပြန်သည်-။ = 324"        "ကြ-ပြန်သည်-။ = 320"      
 [93] "တော့-၏-။ = 318"          "ကြီး-ဖြစ်သည်-။ = 315"     
 [95] "ရ-ပေ-။ = 314"           "တွေ့-နိုင်သည်-။ = 313"       
 [97] "မဟုတ်-ချေ-။ = 311"        "လာ-၏-။ = 307"          
 [99] "သေး-ပေ-။ = 305"         "ခဲ့-ဖူးသည်-။ = 297"        
The percentage of sentence-endings with the lowest frequency of 1 is 63:
nrow(x100SE3_tf[which(x100SE3_tf$frequency==1)])*100/nrow(x100SE3_tf)
[1] 63.24388
I looked at the last 300 sentence endings. Since our corpus is taken from an encyclopedia, English and other languages as part of our sentence-endings has to be expected. However, there seems to be some typographical errors (items: 11,120,127,229), errors in tokenization (155,275,299), and one that I couldn’t make sense out of it (163).
utf8::utf8_print(do.call("paste", c(sep= " = ", x100SE3_tf[20084:20383,])))
  [1] "၌-ပါသည်-။ = 1"              "၌-ပူသည်-။ = 1"              
  [3] "၌-ပွင့်သည်-။ = 1"              "၌-ဖြစ်ပေါ်သည်-။ = 1"         
  [5] "၌-ဖွင့်လှစ်သည်-။ = 1"            "၌-ဖွင့်သည်-။ = 1"             
  [7] "၌-မျိုးစေ့ချသည်-။ = 1"         "၌-မြှုပ်နှံသည်-။ = 1"           
  [9] "၌-လေး-။ = 1"               "၌-သွားရောက်နေထိုင်သည်-။ = 1"    
 [11] "၌ု-ဖြစ်သည်-။ = 1"             "၍-ကပ်-။ = 1"               
 [13] "၍-ကူးသည်-။ = 1"              "၍-ကျက်စားသည်-။ = 1"         
 [15] "၍-ကျသည်-။ = 1"              "၍-ကျိုသည်-။ = 1"             
 [17] "၍-ကျဲသည်-။ = 1"              "၍-ကြဉ်-။ = 1"              
 [19] "၍-ကြည့်သည်-။ = 1"             "၍-ကြန့်ကြာသည်-။ = 1"         
 [21] "၍-ကြီးထွားသည်-။ = 1"          "၍-ကြေညာသည်-။ = 1"          
 [23] "၍-ကွယ်-။ = 1"                "၍-ကွယ်လွန်သည်-။ = 1"           
 [25] "၍-ကွာခြားသည်-။ = 1"          "၍-ခတ်သည်-။ = 1"             
 [27] "၍-ခပ်-။ = 1"                "၍-ခိုက်ရန်ဖြစ်သည်-။ = 1"        
 [29] "၍-ခေါင်းဆောင်သည်-။ = 1"       "၍-ချင့်စား-။ = 1"           
 [31] "၍-ချင့်တွက်သည်-။ = 1"           "၍-ချစ်သည်-။ = 1"            
 [33] "၍-ချဉ်သည်-။ = 1"             "၍-ချန်-။ = 1"              
 [35] "၍-ချီတက်သည်-။ = 1"            "၍-ချီသည်-။ = 1"             
 [37] "၍-ခြားနားသည်-။ = 1"         "၍-ခွင့်တောင်းသည်-။ = 1"        
 [39] "၍-ငုပ်သည်-။ = 1"              "၍-ငွေစုသည်-။ = 1"            
 [41] "၍-စခန်းချသည်-။ = 1"          "၍-စစ်မှုထမ်းသည်-။ = 1"         
 [43] "၍-စည်ကားသည်-။ = 1"           "၍-စည်းရုံးသည်-။ = 1"          
 [45] "၍-စပ်သည်-။ = 1"              "၍-စိတ်နာ-။ = 1"             
 [47] "၍-စိုက်သည်-။ = 1"              "၍-စောင့်ရှောက်သည်-။ = 1"       
 [49] "၍-စွပ်စွဲသည်-။ = 1"             "၍-စွဲချက်တင်သည်-။ = 1"         
 [51] "၍-ဆင်းရဲသည်-။ = 1"            "၍-ဆန်သည်-။ = 1"             
 [53] "၍-ဆန်းကြယ်သည်-။ = 1"          "၍-ဆိုးသည်-။ = 1"             
 [55] "၍-ဆီလျော်သည်-။ = 1"           "၍-ဆွဲဆောင်သည်-။ = 1"          
 [57] "၍-ဈေးကြီးသည်-။ = 1"          "၍-ညင်သာသည်-။ = 1"           
 [59] "၍-တက်ရောက်သည်-။ = 1"          "၍-တင်ပို့သည်-။ = 1"            
 [61] "၍-တင်မြှောက်သည်-။ = 1"         "၍-တည်ထောင်သည်-။ = 1"         
 [63] "၍-တပ်ဆင်သည်-။ = 1"            "၍-တရားစွဲသည်-။ = 1"          
 [65] "၍-တရားဟောသည်-။ = 1"         "၍-တိတ်သည်-။ = 1"             
 [67] "၍-တိုက်ဖျက်သည်-။ = 1"           "၍-တိုက်ကျွေးနိုင်သည်-။ = 1"       
 [69] "၍-တီးခတ်သည်-။ = 1"            "၍-တူးသည်-။ = 1"             
 [71] "၍-တောင်းသည်-။ = 1"           "၍-တွင်ကျယ်သည်-။ = 1"          
 [73] "၍-တွေ့ရှိသည်-။ = 1"             "၍-ထင်ရှားစေသည်-။ = 1"        
 [75] "၍-ထင်သည်-။ = 1"              "၍-ထိုးပေးသည်-။ = 1"          
 [77] "၍-ထုတ်ပေးသည်-။ = 1"           "၍-ထုတ်သည်-။ = 1"             
 [79] "၍-နင်းသည်-။ = 1"             "၍-နိမ့်သည်-။ = 1"             
 [81] "၍-နှိပ်စက်သည်-။ = 1"            "၍-ပစ်သည်-။ = 1"             
 [83] "၍-ပို့ချသည်-။ = 1"             "၍-ပေါက်ကွဲသည်-။ = 1"          
 [85] "၍-ပေါက်ဖွားသည်-။ = 1"         "၍-ပျောက်ကင်းသည်-။ = 1"       
 [87] "၍-ပျံသည်-။ = 1"              "၍-ပျံသန်းသည်-။ = 1"          
 [89] "၍-ပြင်းသည်-။ = 1"            "၍-ပြေးသည်-။ = 1"           
 [91] "၍-ပွသည်-။ = 1"               "၍-ဖောက်လုပ်သည်-။ = 1"         
 [93] "၍-ဖြစ်ထွန်းသည်-။ = 1"          "၍-ဖြာသည်-။ = 1"            
 [95] "၍-ဖြေသည်-။ = 1"             "၍-ဖွဲ့စည်းသည်-။ = 1"           
 [97] "၍-ဘဝပြောင်းသည်-။ = 1"        "၍-မက်မောသည်-။ = 1"          
 [99] "၍-မဟုတ်-။ = 1"               "၍-မေးမြန်းသည်-။ = 1"        
[101] "၍-မျော်-။ = 1"              "၍-မျှတသည်-။ = 1"            
[103] "၍-မျှောလိုက်သည်-။ = 1"          "၍-မြင်သည်-။ = 1"            
[105] "၍-မှတ်တမ်းတင်သည်-။ = 1"         "၍-မှန်သည်-။ = 1"             
[107] "၍-မှီ-။ = 1"                 "၍-မှုတ်သည်-။ = 1"             
[109] "၍-လည်နေသည်-။ = 1"            "၍-လား-။ = 1"              
[111] "၍-လှုံ-။ = 1"                 "၍-လှူ-။ = 1"                
[113] "၍-သင်ကြားပေးသည်-။ = 1"       "၍-သည်-။ = 1"               
[115] "၍-သာ-။ = 1"                "၍-သာလျှင်-။ = 1"            
[117] "၍-ဟောသည်-။ = 1"             "၍-အာရုံ-။ = 1"              
[119] "၍-အရောင်ဖျော့သည်-။ = 1"       "၍့-ဖူးသည်-။ = 1"             
[121] "၍-ကောက်သည်-။ = 1"            "၎-င်းခေါ်သည်-။ = 1"          
[123] "၏-ကုန်ကျစရိတ်-။ = 1"           "၏-ကျွန်-။ = 1"              
[125] "၏-ခင်ပွန်း-။ = 1"             "၏-စတင်-။ = 1"              
[127] "၏-စ်ာ-။ = 1"                "၏-ဆိုသည်-။ = 1"              
[129] "၏-ဆောင်းပါး-။ = 1"          "၏-တကား-။ = 1"             
[131] "၏-တည်း-။ = 1"               "၏-ဒုတ်-။ = 1"               
[133] "၏-နိုင်ငံတော်သီချင်း-။ = 1"       "၏-ပ-။ = 1"                
[135] "၏-ပထဝီဝင်-။ = 1"             "၏-ပုံ-။ = 1"                
[137] "၏-ဗိမာန်-။ = 1"              "၏-မိတ်ဆွေဖြစ်သည်-။ = 1"        
[139] "၏-မျက်နှာ-။ = 1"             "၏-မြတ်စွာဘုရား-။ = 1"        
[141] "၏-ရထား-။ = 1"              "၏-လုပ်ငန်းစဉ်-။ = 1"          
[143] "၏-လေ့ကျင့်ခန်း-။ = 1"          "၏-ဝယ်ယူ-။ = 1"              
[145] "၏-သက်တော်စောင့်-။ = 1"         "၏-သည်-။ = 1"               
[147] "၏-သေတမ်းစာ-။ = 1"           "၏-ဟူလို-။ = 1"               
[149] "၏-ဟူသည်-။ = 1"               "၏-အခြေအနေ-။ = 1"          
[151] "၏-အတိုင်းအတာ-။ = 1"           "၏-အုပ်ထိန်းသူ-။ = 1"           
[153] "၏-ဧရိယာ-။ = 1"              "၏-၏-။ = 1"                
[155] "႔ကရ-ပြန်သည်-။ = 1"           "♍​-ဖြစ်သည်-။ = 1"           
[157] "媪-၊-။ = 1"                "=-စာရေးဆရာ-။ = 1"         
[159] "=-မြို့-။ = 1"                "=-၂၄ဥဒါဟရုဏ်-။ = 1"         
[161] "°-ခြားနားသည်-။ = 1"         "…-ဘုရင်-။ = 1"              
[163] "•-အူး-။ = 1"                "1-ဖြစ်သည်-။ = 1"            
[165] "1006-ဖြစ်သည်-။ = 1"          "100e-ဖြစ်သည်-။ = 1"         
[167] "135cs-ဖြစ်သည်-။ = 1"         "17-ဖြစ်သည်-။ = 1"           
[169] "2005nc-ဖြစ်သည်-။ = 1"        "20j-ဖြစ်သည်-။ = 1"          
[171] "239pu-ဖြစ်သည်-။ = 1"         "25-ဖြစ်သည်-။ = 1"           
[173] "3-ဖြစ်သည်-။ = 1"             "365.2425-ဖြစ်သည်-။ = 1"     
[175] "45-ဖြစ်သည်-။ = 1"            "acid-ဖြစ်သည်-။ = 1"         
[177] "acrylic-ဖြစ်သည်-။ = 1"       "adams-ဖြစ်သည်-။ = 1"        
[179] "ali-အကိုင်းအခက်-။ = 1"         "amoudi-ဖြစ်သည်-။ = 1"       
[181] "atwood-ထောက်ပြသည်-။ = 1"     "ausf.e-ဖြစ်သည်-။ = 1"       
[183] "b-ဖြစ်သည်-။ = 1"             "backend-သည်-။ = 1"         
[185] "ball-ကို-။ = 1"              "bangles-ဖြစ်သည်-။ = 1"      
[187] "banking-ဖြစ်သည်-။ = 1"       "belarusian-ဖြစ်သည်-။ = 1"   
[189] "bilal-တားဆီး-။ = 1"         "bob-တုံ့ပြန်သည်-။ = 1"         
[191] "bob-ထင်သည်-။ = 1"            "bodybuilding-ဖြစ်သည်-။ = 1" 
[193] "c.d.pain-ဖြစ်သည်-။ = 1"      "cဲ့-သည်-။ = 1"               
[195] "caf2-ဖြစ်သည်-။ = 1"          "california-မှာ-။ = 1"      
[197] "cbox-ဖြစ်သည်-။ = 1"          "ce-ဖြစ်သည်-။ = 1"           
[199] "ch5-ဖြစ်သည်-။ = 1"           "chain-ဖြစ်သည်-။ = 1"        
[201] "chromebook-ဖြစ်သည်-။ = 1"    "cm-ဖြစ်သည်-။ = 1"           
[203] "coast-ဖြစ်သည်-။ = 1"         "colbun-ဖြစ်သည်-။ = 1"       
[205] "contribution-ဖြစ်သည်-။ = 1"  "convert-ဖြစ်သည်-။ = 1"      
[207] "coroner-ဖြစ်သည်-။ = 1"       "dance-ဖြစ်သည်-။ = 1"        
[209] "datura-ဖြစ်သည်-။ = 1"        "department-ဖြစ်သည်-။ = 1"   
[211] "dio-ပါ-။ = 1"              "diving-ဖြစ်သည်-။ = 1"       
[213] "e-ဖြစ်သည်-။ = 1"             "eksekutif-ဖြစ်သည်-။ = 1"    
[215] "er-ဖြစ်သည်-။ = 1"            "erikson-ဖြစ်သည်-။ = 1"      
[217] "euphorbiaceae-ဖြစ်သည်-။ = 1" "firewall-ဖြစ်သည်-။ = 1"     
[219] "forbes-ဖြစ်သည်-။ = 1"        "g2-ဖြစ်သည်-။ = 1"           
[221] "gb-ဖြစ်သည်-။ = 1"            "ground-ဖြစ်သည်-။ = 1"       
[223] "grunge-ဖြစ်သည်-။ = 1"        "harlem-မြစ်-။ = 1"         
[225] "hasan-ထင်းရူး-။ = 1"         "ho-ဖြစ်သည်-။ = 1"           
[227] "holeတို့-ဖြစ်သည်-။ = 1"         "isp-ဖြစ်သည်-။ = 1"          
[229] "jafar-ဆ-န္ေ-။ = 1"          "kamodoensis-ဖြစ်သည်-။ = 1"  
[231] "koothrappali-နှင့်-။ = 1"     "laime-ဖြစ်သည်-။ = 1"        
[233] "lamy-ဖြစ်သည်-။ = 1"          "law-ဖြစ်သည်-။ = 1"          
[235] "m0.5iab-ဖြစ်သည်-။ = 1"       "makaurau-ဖြစ်သည်-။ = 1"     
[237] "manima-ဖြစ်သည်-။ = 1"        "metrocard-၊-။ = 1"        
[239] "mineral_water-ဖြစ်သည်-။ = 1" "musume-ဖြစ်သည်-။ = 1"       
[241] "naalsi2o6-ဖြစ်သည်-။ = 1"     "newton-ဖြစ်သည်-။ = 1"       
[243] "nightwish-ဖြစ်သည်-။ = 1"     "nihilistic-ဖြစ်သည်-။ = 1"   
[245] "nishizawa-ဖြစ်သည်-။ = 1"     "nntp-ဖြစ်သည်-။ = 1"         
[247] "ns-ဖြစ်သည်-။ = 1"            "nsx-ဖြစ်သည်-။ = 1"          
[249] "paganin-ဖြစ်သည်-။ = 1"       "pareto-ဖြစ်သည်-။ = 1"       
[251] "pinault-ဖြစ်သည်-။ = 1"       "pitsuwan-ဖြစ်သည်-။ = 1"     
[253] "player-ဖြစ်သည်-။ = 1"        "powerဟု-ခေါ်သည်-။ = 1"       
[255] "programming-ပေါ့-။ = 1"     "queen-ဖြစ်သည်-။ = 1"        
[257] "rap-ဖြစ်သည်-။ = 1"           "rctp-ဖြစ်သည်-။ = 1"         
[259] "reaction-ဖြစ်သည်-။ = 1"      "real-time-ပေါင်းစပ်-။ = 1"  
[261] "revised-ဖော်ပြသည်-။ = 1"     "rocker-ဖြစ်သည်-။ = 1"       
[263] "s-ဖြစ်သည်-။ = 1"             "schmidt-ဖြစ်သည်-။ = 1"      
[265] "seattleမှ-ဖြစ်သည်-။ = 1"      "show-မှာ-။ = 1"            
[267] "singh-ဖြစ်သည်-။ = 1"         "skeletonဟု-ခေါ်သည်-။ = 1"    
[269] "skyclad-ဖြစ်သည်-။ = 1"       "smartfilter-ဖြစ်သည်-။ = 1"  
[271] "smeaton-ဖြစ်သည်-။ = 1"       "sn-ဖြစ်သည်-။ = 1"           
[273] "software-ဖြစ်သည်-။ = 1"      "soprano-ဖြစ်သည်-။ = 1"      
[275] "sourceလည်း-ဖြစ်သည်-။ = 1"     "sourceide-ဖြစ်သည်-။ = 1"    
[277] "statistics-ဖြစ်သည်-။ = 1"    "street-ဖြစ်သည်-။ = 1"       
[279] "switchedတို့-ဖြစ်သည်-။ = 1"     "syria-ဖြစ်သည်-။ = 1"        
[281] "taichin-ဖြစ်သည်-။ = 1"       "tang-gia-da-ဖြစ်သည်-။ = 1"  
[283] "taqwa-ဖြစ်သည်-။ = 1"         "tattoo-ရာဇဝင်-။ = 1"       
[285] "telescopii-ဖြစ်သည်-။ = 1"    "television-ဖြစ်သည်-။ = 1"   
[287] "thrash-ဖြစ်သည်-။ = 1"        "times-ပါ-။ = 1"           
[289] "tree-ဖြစ်သည်-။ = 1"          "tube-ဖြစ်သည်-။ = 1"         
[291] "udfj-39546284-ဖြစ်သည်-။ = 1" "union-ဖြစ်သည်-။ = 1"        
[293] "university-ဖြစ်သည်-။ = 1"    "violawww-ဖြစ်သည်-။ = 1"     
[295] "vocal-များ-။ = 1"          "widget-ဖြစ်သည်-။ = 1"       
[297] "wolf-ပေါ့-။ = 1"            "www-ဖြစ်သည်-။ = 1"          
[299] "xeroxed-artဖြစ်သည်-။ = 1"    "zn-ဖြစ်သည်-။ = 1"           
I looked at 100 sentence-endings somewhere in the middle of the list. Here, except for item-44 and 81, all look normal.
utf8::utf8_print(do.call("paste", c(sep= " = ", x100SE3_tf[1001:1100,])))
  [1] "သတ္တိရှိ-သည်-။ = 17"         "သုံးစွဲ-နိုင်သည်-။ = 17"       
  [3] "သေဆုံး-သည်-။ = 17"         "ဟုတ်-ချေ-။ = 17"         
  [5] "အပ်နှင်း-သည်-။ = 17"        "အုပ်-ဖြစ်သည်-။ = 17"       
  [7] "အောင်-ဖြစ်သည်-။ = 17"      "က-ကြေညာသည်-။ = 16"      
  [9] "ကို-တင်ပြသည်-။ = 16"        "ကို-နှစ်သက်သည်-။ = 16"       
 [11] "ကို-ပြုစုသည်-။ = 16"         "ကြီးကျယ်-သည်-။ = 16"      
 [13] "ခက်-သည်-။ = 16"           "ခေါ်-နိုင်သည်-။ = 16"       
 [15] "ခံ-ပေ-။ = 16"            "ခွဲ-ဖြစ်သည်-။ = 16"        
 [17] "စား-နိုင်သည်-။ = 16"        "စေ-မည်-။ = 16"          
 [19] "ဆို-ပြန်သည်-။ = 16"         "ဆောင်ရွက်-ပါသည်-။ = 16"    
 [21] "တက်-စေသည်-။ = 16"         "တည်-နေသည်-။ = 16"        
 [23] "တည်-၏-။ = 16"            "တို-သည်-။ = 16"           
 [25] "တိုင်းတာ-သည်-။ = 16"        "တိုင်းပြည်-ဖြစ်သည်-။ = 16"   
 [27] "တို့-တည်း-။ = 16"           "တော်-စဉ်-။ = 16"         
 [29] "တွင်-၏-။ = 16"            "ထား-ချေ-။ = 16"        
 [31] "ပါရှိ-ချေ-။ = 16"         "ပေါက်-တတ်သည်-။ = 16"      
 [33] "ပေး-ပြန်သည်-။ = 16"       "ပြု-စေသည်-။ = 16"        
 [35] "ပြော-တယ်-။ = 16"         "ပြောင်းရွှေ့-နေထိုင်သည်-။ = 16"
 [37] "ဖေါ်-ပြသည်-။ = 16"        "ဖော်ပြ-နေသည်-။ = 16"     
 [39] "ဖြင့်-ပြုလုပ်သည်-။ = 16"      "မန္တလေး-မြို့-။ = 16"      
 [41] "ရ-ပြီ-။ = 16"            "ရတတ်-ပါသည်-။ = 16"       
 [43] "လည်-စေသည်-။ = 16"         "လီ-သည်-။ = 16"           
 [45] "လုပ်ကိုင်-စေသည်-။ = 16"       "လွှတ်ပေး-သည်-။ = 16"       
 [47] "လွှတ်လိုက်-သည်-။ = 16"         "သကဲ့သို့-ဖြစ်သည်-။ = 16"      
 [49] "သာ-ချေ-။ = 16"          "သာ-များသည်-။ = 16"      
 [51] "သိ-သည်-။ = 16"            "သို့-စီးဆင်းသည်-။ = 16"      
 [53] "သွင်း-နိုင်သည်-။ = 16"        "သွားရောက်-သည်-။ = 16"     
 [55] "ဟူ-သတည်း-။ = 16"          "အခြေစိုက်-သည်-။ = 16"      
 [57] "အဆင့်-ဖြစ်သည်-။ = 16"       "အသုံးပြု-ပါ-။ = 16"       
 [59] "အုပ်ချုပ်-၏-။ = 16"         "အော်-တတ်သည်-။ = 16"       
 [61] "ဦး-မယ်-။ = 16"           "ကို-တိုက်သည်-။ = 15"         
 [63] "ကို-ထမ်းဆောင်သည်-။ = 15"     "ကူညီ-ပေးသည်-။ = 15"       
 [65] "ကြ-ဘူး-။ = 15"           "ကြ-လော့-။ = 15"         
 [67] "ကြီး-ပါ-။ = 15"          "ကြောင်း-ပြောသည်-။ = 15"  
 [69] "ခိုက်-ဖြစ်သည်-။ = 15"        "ခေါ်တွင်-စေသည်-။ = 15"     
 [71] "ချင်-သည်-။ = 15"          "ချိတ်ဆက်-ထားသည်-။ = 15"    
 [73] "ငှက်-ဖြစ်သည်-။ = 15"        "စား-တတ်သည်-။ = 15"       
 [75] "စေ-နှင့်-။ = 15"           "စွာ-တည်ရှိသည်-။ = 15"       
 [77] "ဆင်-သည်-။ = 15"           "ဆင်း-၏-။ = 15"          
 [79] "ဆုတောင်း-၏-။ = 15"        "ဆောင်သွား-သည်-။ = 15"     
 [81] "ဏီ-ယာ-။ = 15"            "တည်း-ဖြစ်သည်-။ = 15"      
 [83] "ထ-သော-။ = 15"           "ထင်ရှား-ပါသည်-။ = 15"     
 [85] "ထမ်း-ဆောင်-။ = 15"        "ထိုက်-သည်-။ = 15"          
 [87] "နေ-ခြင်း-။ = 15"         "နေထိုင်-စေသည်-။ = 15"      
 [89] "ပြည့်စုံ-၏-။ = 15"          "ပြော-နိုင်သည်-။ = 15"      
 [91] "ဖြစ်-မယ်-။ = 15"          "ဘာသာ-ဖြစ်သည်-။ = 15"     
 [93] "မူ-ပြီ-။ = 15"            "များ-သည်-။ = 15"        
 [95] "ယူခဲ့-ပါသည်-။ = 15"         "ရ-စေ-။ = 15"           
 [97] "ရောက်-တိုက်ခိုက်သည်-။ = 15"     "ရေး-နိုင်သည်-။ = 15"       
 [99] "ရှင်-ဖြစ်သည်-။ = 15"        "ရှိ-ပြီ-။ = 15"           
Next, I checked for the two suspect endings mentioned above. To my surprise I found both to be legitimate. The first one seems to be the Rakhine version of “လေသည်။” and the second one belongs to Pali sentences. Well, my method of detecting Pali sentences I used earlier is obviously imperfect.
cat(grep("လီသည်။|ဏီယာ။",x100_itN_Sen5_paliN, value=TRUE))
ယင်းသို့ စုပေါင်းညီညွတ်သော တစ်ခုတည်းသောနယ်ချဲ့အရင်းသျှင်စနစ်တိုက်ဖျက်ရေး အင်အားစုဖြစ်တေ ရခိုင်တိုင်းလုံးဆိုင်ရာ တိုင်းရင်းသားအစည်းအရုံးကြီး၏ ညီလာခံကို ၁၃၀၁ ခု ကဆုန်လတွင် ပေါက်တောမြို့၌ကျင်းပခပြီး တောင်သူလယ်သမား လူတန်းစားတိုက်ပွဲ လမ်းစဉ်ကို ပြတ်ပြတ်သားသား ဖော်ထုတ်ချမှတ်ခလီသည်။ ညီလာခံအပြီး နံယုန်လတွင် နာယကဆရာတော်များဖြစ်သော ဦးစိန္တာနှင့် ဦးပညာသီဟရို့အား နယ်ချဲ့အစိုးရရို့က ဖမ်းဆီးပြီး ဆရာတော်အား အလုပ်ကြမ်းနန့် ၁၈ လထောင်ဒဏ် အပြစ်ပီးခံခရလီသည်။ ဆရာတော်၏ တပ်များသည် မြေပုံမြို့ကိုလည်းကောင်း၊ ကျောက်ဖြူမြို့ကိုလည်းကောင်း၊ နယ်ချဲ့လက်က သိမ်းယူထိန်းသိမ်းထားနိုင်ခလီသည်။ ထိုစဉ်အခါက ရခိုင်မျိုးချစ်တပ်များသည် နယ်ချဲ့အား တော်လှန်ခရရုံသာမက တစ်ဖက် ၌လည်း တောင်သူလယ်သမားဆင်းရဲသားရို့အား ခေတ်အပျက်တွင် ညှဉ်းပမ်းနှိပ်စက်လာသော တောကြောင်များကိုလည်း နှိမ်နင်းခကတ်ရလီသည်။ ၁၃၀၅ ခုနှစ်စတွင် ဆရာတော်သည် ရခိုင်တိုင်းလုံးဆိုင်ရာ တိုင်းရင်းသားအစည်းအရုံး ကိုယ်စားလှယ်အဖြစ် ရန်ကုန်သို့ဆင်းကာ ဗိုလ်ချုပ်အောင်ဆန်းနှင့် ဆက်ပြီး ဖက်ဆစ်တော်လှန်ရေးအတွက် စတင်စီစဉ်လီသည်။ ထိုနှစ်တန်းခူးလဆုတ် ၁၀ ရက်နိန့်တွင် မြေပုံမြို့ပိုင်နှင့် ကျောက်ဖြူခရိုင်ဝန်ရို့၏ သစ္စာဖောက်သတင်းပီးမှုကြောင့် ဆရာတော်ဦးစိန္တာသည် ဖက်ဆစ်ဂျပန်ရို့၏ ဖမ်းဆီးခြင်းကို ခံရပြန်လီသည်။ သို့သော် ဆရာတော်သည် ဖက်ဆစ်တိုက်ဖျက်ရေးတွင် နောက်မဆုတ်ဘဲ အင်တိုက်အားတိုက် ဆက်လက်ဂေါင်းဆောင်မှုပီးခရာ ဂန့်ဂေါတိုက်ပွဲသည် ကမ္ဘာကျော်ခရလီသည်။ ၁၃၀၆ ခုနှစ် ဂျပန်တော်လှန်ရေးအပြီးတွင် နယ်ချဲ့အင်္ဂလိပ်များပြန်ဝင်လာပြန်ရာ ဆရာတော်ဦးစိန္တာသည် ဖက်ကိုလည်း တော်လှန်မည်၊ အမျိုးသားလွတ်မြောက်ရေးအတွက် လက်နက်မအပ်ဘဲ နယ်ချဲ့ကိုလည်း ဆက်လက်တော်လှန်မည်ဟူသော တော်လှန်ရေးတပ်ဦးသစ္စာကို မဖောက်လို၍ နယ်ချဲ့အင်္ဂလိပ်အား ၂ နှစ်တိုင်တိုင် ဆက်လက်တော်လှန်ခလီသည်။ ၁၃၀၈ ခု၊ တန်းဆောင်မုန့်လ၌ ဆရာတော်ဦပညာသီဟ၊ ဝန်ကြီး ဦးအောင်ဇံဝေ၊ ဝန်ကြီးသခင်မြနှင့် တိုင်းရင်းသား အစည်းအရုံးဂေါင်းဆောင်များရို့သည် ကြာအင်းတောင် ဆရာတော်ကျောင်းသို့ ရောက်လာကတ်ပြီးလျှင် ဦးစိန္တာနှင့်တွိ့ဆုံဆွေးနွေးပြီးနောက် ထိုနှစ် နတ်တော်လ စတုတ္ထအပတ်တွင် ဆရာတော်အား လွတ်ငြိမ်းချမ်းသားခွင့် ကြေညာလိုက်သဖြင့် ဆရာတော်ဦးစိန္တာသည် တော်ခိုရာမှထွက်လာ၍ ကျယ်ပြန့်သောစည်းရုံးရေးကို ဆက်လက်ဆောင်ရွက်ခလီသည်။ ၁၃၀၉ ခု၊ ကဆုန်လဆန်း ၇ ရက်နိန့်တွင် မြေပုံမြို့မှ စစ်တွေမြို့သို့အလား ဦးစိန္တာသည် ဘင်္ဘောထက်၌ အဖမ်းခံရပြီးလျှင် ယင်းကဆုန်လကွယ်နိန့်ပင် စစ်တွေမှ လီယာဉ်ဖြင့် ရန်ကုန်မင်္ဂလာဒုံလီဆိပ်သို့ ယူဆောင်လျှက် သာယာဝတီထောင်သို့ အပို့ခံခရပြီးနောက် ၁၃၁၀ ခု၊ နှောင်းတန်းခူးလဆန်း ၆ ရက်နိန့်တွင် သာယာဝတီထောင်ကို သူပုန်းတပ်ပေါင်းစုများ ဖွင့်သောအခါမှ ဆရာတော်သည် ထောင်မှရွတ်ခရလီသည်။ ဆရာတော်ဦးစိန္တာအား အရင်းသျှင်နယ်ချဲ့ဖက်ဆစ်ရို့၏ ညှဉ်းပန်းနှိပ်စက်မှုဒဏ်သည် ဖိစီးလာခြင်းကြောင့် သက်တော် ၆၂၊ ဝါတော် ၄၂ ဝါမြောက်တွင် ၁၃၂၆ ခု၊ နတ်တော်ဆန်း ၁၀ ရက်၊ တနင်္လာနိန့် နိန့်ခြင်းဖက် ၂ နာရီအချိန်တွင်၊ ရန်ကုန်မြို့၊ ငါးထပ်ကြီးဘုရားလမ်း၊ အမှတ် ၁၅၂ ၊ သိမ်ကုန်းကျောင်းတိုက်၊ ရွှေဘုံသာကျောင်းဆရာတော် ဦးရဝိန္ဒထံ၌ တည်းခိုဆီးဝါးကုသနီစဉ်မှာပင် ဘုရားရဟန္တာအသျှင်မြတ်ရို့သော်မှ မလွန်ဆန်နိုင်သော သီဘေးတရားအရ ပျံလွန်တော်မူလီသည်။ ၎င်းဝါသုဒေဝညီနောင် တကျိပ်ရို့သည် ဒွါရာဝတီ(အာကာပျံဝဲမြို့သံတွဲ)ကို စောင့်ယှောက်သော မြို့စောင့်ဘီလူးမကြီးရန်အား နှိမ်နှင်းပြီးသော် သိမ်းပိုက်စိုးစံတော်မူကြလီသည်။ ထိုအချိန်ကာလတွင် ဟိမဝန္တာတောကြီး တောင်ကြီးများထဲမှာ အလွန်ကျော်ဇောထင်ရှားသော (ကုဏ္ဍရ)အိုင် (သက္ကဋဂူ)တွင်းကြီးတွင် ခိုအောင်းနီသော ပုဇွန်ကြီးတကောင်သည် များစွာကြီးထွားသန်မာလျှက် လွန်စွာကြောက်မက်ဖွယ် ကောင်း ကာ သူ၏လက်မ (ခြီမ) နှစ်ခုဖြင့် လာသမျှသော ရီသတ္တဝါ၊ ကုန်သတ္တဝါအပေါင်းရို့အား ညှပ်သတ်ဖြတ်လျှက် သီစီရလီသည်။ ထိုကာလမကြာမြင့်မီ ဟိမဝန္တာတောကြီးအတွင်း၌ အင်မတန်ခွန်အားဗလနှင့်ပြည့်စုံသော ကြောက်မက်ဖွယ်ကောင်းသော (ဆင်ဟတ္ထိ)ကြီးတကောင်သည် ထင်ရှားပေါ်ပေါက်လာ လီသည်။ ၎င်းဆင်ကြီးသည် အဆိုပါ (သက္ကဋဂူ)တွင် မင်းမူနီသော ပုဇွန်ကောင်ကြီးအား နင်းသတ်လျှက် လက်မ(ခြီမ)ကြီးနှစ်ချောင်းကို နှာမောင်းဖြင့် ချိုးဖဲ့ကာ မြစ်ထဲသို့ပစ်ချ လိုက်လီသည်။ ထိုပုဇွန်လက်မ(ခြီမ) တက္ကဋကို စည်တော်ကြက်လျှက် နန်းတော်တွင်တီးခတ်ကြလီရာ အင်မတန်ထူးခြားအံ့ဩဖွယ်သော သံစုံတီးလျှက် ပေါ်ထွန်းလာပြီးသော် သာယာငြိမ့် ညောင်းဖွယ်သော အသံစုံလင်စွာဖြင့် ပေါ်ထွန်းလာလီသဖြင့် အသံစည်တော်နှင့် ကိုက်ညီအောင် သာခြင်း အခြင်းများဖော်လျှက် သုခုမပညာပြောင်မြောက်စွာဖြင့် စပ်ဆိုကာ သီဆိုက,ကွက်ထွင်ပြီး (စည်တော်ကြီးကို စတင်တီးခတ်ကြလီသည်။ န ထူပကတော ဩမဒ္ဒိတွာ ပိဏ္ဍပါတံ ဘုဉ္ဇိဿာမီတိ သိက္ခာ ကရဏီယာ။ န သူပံ ဝါ ဗျဉ္ဇနံ ဝါ ဩဒနေန ပဋိစ္ဆာဒေဿာမိ ဘိယျောကမျှတံ ဥပါဒါယတိ သိက္ခာ ကရဏီယာ။ န သူပံ ဝါ ဩဒနံ ဝါ အဂိလာနော အတ္တနော အတ္တာယ ဝညာပေတွာ ဘုဉ္ဇိဿာမီတိ သိက္ခာ ကရဏီယာ။ န သာမိသေန ဟတ္ထေန ပါနီယထာလကံ ပဋိဂ္ဂ ဟေဿာမီတိ သိက္ခာ ကရဏီယာ။ န သသိတ္ထကံ ပတ္တဓောဝနံ အန္တရဃရေ ဆဋေဿာမီတိ သိက္ခာ ကရဏီယာ။ န အာဝုပေါနိဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ပါဒုကာရုဠဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဥပါဟနာရုဠဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဩဂုဏ္ဌိတသီသဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဆမာယံ နိသီဒိတွာ အာသနေ နိသိန္နဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န နီစေ အာသနေ နိသီဒိတွာ ဥစ္စေ အာသနေနိသိန္နဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဌိတော နိသိန္နဿ အဂိလာနဿ ဓမ္မံ ဒေသေဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဌိတော အဂိလာနော ဥစ္စာရံ ဝါ ပဿာဝံ ဝါ ကရိဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဟရိတေ အဂိလာနော ဥစ္စာရံ ဝါ ပဿာဝံ ဝါ ခေဠံ ဝါ ကရိဿာမီတိ သိက္ခာ ကရဏီယာ။ န ဥဒကေ အဂိလာနော ဥစ္စာရံ ဝါ ပဿာဝံ ဝါ ခေဠံ ဝါ ကရဿာမီတိ သိက္ခာ ကရဏီယာ။
As of now, I am leaving them as is.

Friday, July 12, 2019

Cycle 3: Identifying and removing Pali sentences


From my last post you’ve seen that there will be some Pali sentences in the raw Myanmar Wikipedia corpus. We know that Pali sentences in Myanmar script are written with a lot of stacked-consonants. This post explore how we could identify Pali sentences using the relative frequency of stacked-consonants for the purpose of removing the Pali sentences from the raw corpus.

Finding the relative frequencies of stacked-consonants in 306,405 sentences

We found that almost 31 percent of sentences contain at least one stacked-consonant. We note that in Myanmar language we have a lot of terms borrowed from Pali. In written Myanmar language, many Pali terms were written with stacked-consonants. In addition we know that on the palm-leaf and Parabeik mediums, old Myanmars used to write a considerable number of our own terms in short-form using stacked consonants. Now-a-days we don’t normally find them in formal writing.
The quartile distribution for percentages of stacked-consonants in each sentence shows that half of the number of sentences contains less than .99 percent of stacked consonants and the other half contains more. The maximum is about 15 percent, which means that even a Pali sentence in our Wikipedia corpus contains at most 15 percent of stacked-consonants.
library(stringr)
# find the percentage of number of stacked-consonants in the number of characters per sentence.
stCon.pc <- str_count(x100_itN_Sen.5,"[\u1000-\u1021]\u1039[\u1000-\u1021]")/nchar(x100_itN_Sen.5)*100
# percentage of sentences with at least one stacked-consonant
length(stCon.pc[stCon.pc>0])*100/length(stCon.pc)
[1] 30.60557
summary(stCon.pc[stCon.pc > 0])
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.04122  0.66667  0.99010  1.19536  1.45985 14.54546 

My working rule for identifying Pali sentences

From experimenting, I found a sentence containing 8% or higher of stacked-consonants is likely to be a Pali sentence.
length(x100_itN_Sen.5[which(stCon.pc > 8)])
[1] 115
cat(x100_itN_Sen.5[which(stCon.pc > 8)][111:115])
 ယတ္ထ ယတ္ထ အပါဒကာ၊ ယတ္ထ ယတ္ထ ဒွေပါဒါ၊ ယတ္ထ ယတ္ထ စတုပ္ပါဒါ၊ ယတ္ထ ယတ္ထ ဗဟုပ္ပါဒါ၊ ပါဒအန္ဓံ ဦရုအန္ဓံ စက္ခုအန္ဓံ မုခအန္ဓံ ဇီဝှါ အန္ဓံ။  သဗ္ဗဒေဝတာယ ဣမဿ ပရိမိတ္တဇာလဿ တေဇေန ဣမသ္မိံ အပ္ပါကဋံ သရိရေ ယေ ကေစိ ဥပဒ္ဒဝါ၊ အာနုဘာဝေန တေဇေန ဣမသ္မိံ လောကေ ဣမသ္မိံ ဇမ္ဗုဒီပေ ဣမသ္မိံ ပဗ္ဗတေ ဣမသ္မိံ နဂရေ ဣမသ္မိံ ဂေယေ သဗ္ဗသတြူ ဝိနဿန္တု၊ သဗ္ဗေ ဥပဒ္ဒဝါ ဝိနဿန္တူတိ။ ဣမေဟိ တီဟိ ဓမ္မေဟိ သမန္ဒာဂတဿ ဗုဒ္ဓဿ ဘဂဝတော သဗ္ဗံ ကာယကမ္မံ ဉာဏပုဗ္ဗင်္ဂမံ ဉာဏာနုပရိဝတ္တံ၊ သဗ္ဗံ ထကမ္မိ ဉာဏပုဗ္ဗင်္ဂမံ ဉာဏာနုပရိဝတ္တံ၊ သဗ္ဗံ မနောကမ္မံ ဉာဏပုဗ္ဗင်္ဂပံ ဉာဏာနုပရိဝတ္တံ။ ဣမေဟိ  ဒွါဒသဟိ ဓမ္မေဟိ သမန္နာဂတဿ ဗုဒ္ဓဿ ဘဂဝတော နတ္ထိ ဒဝါ၊ နတ္ထိ ရဝါ၊ နတ္ထိ အဖုဋံ၊ နတ္ထိ ဝေဂါယိတတ္တံ၊ နတ္ထိ အဗျာဝဋမနော၊ နတ္ထိ အပ္ပဋိသင်္ခါနုပေက္ခာ။ ဣမေဟိ အဋ္ဌာရသဟိ ဓမ္မေဟိ သမန္နာဂတဿ ဗုဒ္ဓဿ ဘဂဝတော၊ နမော သတ္တနံ သမ္မာသမ္ဗုဒ္ဓါနံ။

Exploring another approach

Perhaps finding a stacked consonant at sentence ending could identify a Pali sentence. So I took 10 characters at the end of each sentence and tested this idea. I found that it doesn’t work.
library(quanteda)
# locate postion of sentence ending mark
ssE_sub.p10 <- str_locate(x100_itN_Sen.5, ".{6}\u104b") %>%
  str_sub(x100_itN_Sen.5, .)
length(x100_itN_Sen.5[which(grepl("[\u1000-\u1021]\u1039[\u1000-\u1021]",ssE_sub.p10))])
[1] 359
cat(x100_itN_Sen.5[which(grepl("[\u1000-\u1021]\u1039[\u1000-\u1021]",ssE_sub.p10))][c(1:5, 355:359)])
မထင်ရှားသောအရာကို မြင်တော်မူသော သင်၏အဘသည် အကျိုးကို ထင်ရှားစွာပေးတော်မူလတ္တံ့။ ထိုအခါ ကောက်ပဲသီးနှံတို့ ပျက်ဆီး၍ လူတို့၌ အစာရေစာ ရှားပါး ငတ်မွတ်ခြင်း ဖြစ်လတ္တံ့။ ထိုအခါ အခွင့်အရေးမသိ၊ မတော် မမှန်ဖြစ်၍ အမှု မပြီး၊ အကျိုးမပြီး ရှိသောအခါ လူငယ်တို့သည် မိမိတို့၏ ရာထူး စည်းစိမ်ကို စွန့်ကြလတ္တံ့။ လူကြီးတို့သည်လည်း ငါတို့မှာ ပြင်ပကသာ ဖြစ်၏ဟု လျစ်လျှူပြု၍ နေကြလကုန်လတ္တံ့။ သို့ဖြစ်၍ တရားမစောင့် အမှုမပြီးကြသည်နှင့် မင်းနှင့်တကွ တိုင်းပြည်ပါ ဆုတ်ယုတ် ပျက်ဆီးကြလတ္တံ့။ အများအပြားအင်းနှစ်ဇာတ်လမ်းတစ်ပုဒ်၊ခန့်ထား၍၊ထိုသူအပေါင်းတို့သည်ရှိသည်ဟိုအိမ္ဝင္း။ တစ်နည်းနည်းနဲ့၊အခြားအဝေါဟာရအဖြစ်ပူနွေးနှင့်စိုထိုင်းသောဒေသများကိုနိုင်ငံ၏တောင်ဘက်အသုံးပြုသည်၊နှင့်အကြားခြားနားချက်ကိုအဓိကအကြောင်း بادگیرهای ဒေသများတွင်ပူနွေးခြောက်သွေ့သည်ဝေါဟာရအတွက်စိုစွတ်သောဒေသ၊စနစ်မှတဆင့်အစဥ္တြင္လေ၏။ ငယ်စဉ်အခါတွင် ကျော်အောင်စံထားဆရာတော်၏ တပည့်ဖြစ်သူ ချောင်းကောက်ဆရာတော် ရှင်သဒ္ဓမ္မနန္ဒီ။ ဒါဟာ Dawat 23 ဒိုင်-Al-Mutlaq, မိုဟာမက် Ezzuddin ပေါ်တွင် nass (အခွင့်အာဏာများလွှဲပြောင်း) ဖျော်ဖြေကြောင်း, ယီမင်ကနေအိန္ဒိယကိုလွှဲပြောင်းသောအခါဤအချိန်ကာလအတွင်းခဲ့ Yusuf Najmuddin ibn Sulaiman Sidhpur, Gujrat, အိန္ဒိယ၏။  တစ်ဦးကစက္ကန့်ကျောင်းဝင်း၏မြောက်ပိုင်းတောင်ခြေတွင်တည်ရှိပြီး 1983 ခုနှစ်ကတည်ထောင်ခဲ့ ကရာချိမြို့ရာချိ , ပါကစ္စတန်နိုင်ငံပါကစ္စတန်။

Removing Pali sentences.

This resulted in removing 115 sentences from 306,405.
x100_itN_Sen5_paliN <- x100_itN_Sen.5[-which(stCon.pc > 8)]
length(x100_itN_Sen5_paliN)
[1] 306290

Monday, July 8, 2019

Cycle 3: Naive word segmentation (that works)


This was a complete surprise!
Earlier, I had managed to devise code for syllable segmentation of Myanmar text using tokenization with the “quanteda” R-package plus R implementation of regex. Then another implementation of regex on the the resulting syllables by using a Myanmar wordlist for word-segmentation. I think the set of codes for syllable segmentation is quite dependable. However, the quality of word segementation could be improved when more complete wordlists become accessible.

The tortoise code

For this post, I started out by trying to figure out some way to generate sentence ending syllables faster than I have been doing. That method consisted of (i) the syllabification of the sentences using the approach mentioned in the previous paragraph and then, (ii) creating bigrams, and (iii) collecting the last two syllables. Now, you can see that for analyzing sentence endings I don’t need to syllabify the whole sentences; syllabifying a few characters at the end of sentences would do!
To test this idea out, I extracted 15 characters from the sentence ends for the whole set of 306,405 sentences. The test syllabification of just 100 of them took over 20 seconds. That means handling the entire set of sentences would take more that 17 hours! How could I improve that? I had already made the excution of code faster by using parallel processing, so I was completely lost.

Not my brainwave

Out of my despair I experimented with my code. Before, I built my syllables using characters tokenized “as characters” as the base. Last time I erroneously typed “word” instead of “character”. Like everyone, I knew that a word is delimited by space and Myanmar text doesn’t have words defined like that. So, using standard NLP software to tokenize Myanmar language text into “word” would be just idiotic, I always thought.
Now, look at the result when I did the unthinkable.
I tokenized the whole of 306,405 sentences.
library(quanteda)
system.time(
  x100_itNS5.w <- tokens(x100_itN_Sen.5,"word")
)
   user  system elapsed 
  41.23    0.90   42.14 
It took just 42 seconds! Below I’m showing you a sample of ten original sentences.
length(x100_itNS5.w)
[1] 306405
set.seed(6719)
s10 <- sample(1:306405, 10)
cat(x100_itN_Sen.5[s10])
ဂစ္ဆတိ ဟုသောပုဒ်သည် အရင်းခံအားဖြင့် ဂမုဓာတ်၊ တိဝိဘတ်တို့ဖြင့် ဆက်သွယ်ပေါင်းစပ်ထားသောပုဒ်ဖြစ်သည်။ နိုင်ငံရေး စည်းရုံးမှုကြီးတစ်ရပ် အနေနှင့်သော် ခရစ် ၁၉၄၄ ခုနှစ် ဩဂုတ်လတွင် ဗိုလ်ချုပ်အောင်ဆန်းနှင့် အပေါင်းပါ တစ်စုတို့က ခေါင်းဆောင်လျက် ဖက်ဆစ် တိုက်ဖျက်ရေး ပြည်သူ့လွတ်လပ်ရေး အဖွဲ့ချုပ်ကို ဖွဲ့စည်းလိုက်ကြသည်။ ၎င်းတို့မှာ-# အိန္ဒိယပြည်၊ ဘုံဘိုင်မြောက်ပိုင်း၊ နမ္မဒါမြစ်ထဲ၌ ခြေတော်ရာတစ်ဆူ။ သိပ္ပံပညာရှင်တို့သည် အရာဝတ္ထုတို့ကို အလွန်နိမ့်သော အပူချိန်အထိ အအေးခံရာတွင် လေဆာ ကို အသုံးပြု၍ အက်တမ် တို့ကို အရှိန်လျော့ချကြသည်။ ဗားရှင်းများကို မြှင့်တင်ရင်း များစွာသောကလပ်စ်နှင့် များသည် အခြေခံ အသုံးချ ကလပ်စ် အစုအဝေး ထဲကို ပါဝင်လာခဲ့ကြ၏။ ကိုယ်ပိုင် သံစဉ် အပုဒ်ရေပေါင်း ၂၀ဝ ကျော် ရေးဖွဲ့ခဲ့သည်။ ဝက်သားအဆီများ ကောက်ညှင်းအတွင်း စိမ့်ဝင်ပြီး အသားများနူးလာချိန်တွင် ကောက်ညှင်းထုပ်ကို ကျက်သောအနေအထားနှင့် တွေ့ပြီး အရသာရှိလှသော ဝက်သားကောက်ညှင်းစားစရာ အမယ်တစ်မျိုးကို ရရှိပေလိမ့်မည်။ ထိုတော်လှန်ရေး၏ ထိရောက်စွာ ဆောင်ရွက်မှုကြောင့် မဟာမိတ်တို့သည် မြန်မာပြည်ကို ပြန်လည်တိုက်ခိုက် သိမ်းပိုက်ရာ၌ လွယ်ကူလျင်မြန်ခဲ့လေသည်။ ဗမာပြည်နယ်စပ်သို့ တရုတ်ဖြူများဝင်ရောက် လှုပ်ရှားမှုကို အကဲဖြတ်ရာတွင် အမေရိကန်ကသွယ်ဝိုက် သောနည်းအားဖြင့် ငါတို့အားအကူအညီပေးလာပြီဟု အစပိုင်းတွင် ငါတို့ထင်မှတ်ခဲ့ပေသည်။ မြန်မာတို့၏ ဓလေ့ထုံးစံနှင့် ရိုးရာ အစဉ်အလာများကိုလည်း မပျောက်ကွယ်စေရန် ရည်ရွယ်၍ …ဗုဒ္ဓဝေယျာဝစ္စအသင်းများဖွဲ့လျက် သီတင်းနေ့များ၌ ဥပုသ်ဆောက်တည်ခြင်း၊ ဆွမ်းလောင်းခြင်းတို့ကိုပြုလုပ်နိုင်သည်။
And then the ten sentences segmented into “words”.
Here, you see that “ဂစ္ဆတိ is broken up into its component syllables “ဂ စ္ ဆ တိ”. But that is not true with every stacked syllables. We see that “အိန္ဒိယ” remains unchanged! As for others, every syllables in our language carry a meaning and in that sense word or syllable produced by “word” segmentation, I think, is fine.
With this setting, you can easily collect one syllable/or a syllable-group (word) to analyze sentence endings. Here if I would like to uniformly use syllables only for sentence ending analysis, I can use my syllabification code to do that for a combination of just a few syllables. Unless the sentence in question is a Pali sentence written in Myanmar script, I guess you won’t get the kind of stacked consonant problem noted earlier with sentence endings.
cat(paste0(x100_itNS5.w[s10]))
ဂ စ္ ဆ တိ ဟု သော ပုဒ် သည် အရင်း ခံ အားဖြင့် ဂ မု ဓာတ် ၊ တိ ဝိဘတ် တို့ ဖြင့် ဆက် သွယ် ပေါင်းစပ် ထား သော ပုဒ် ဖြစ်သည် ။ နိုင်ငံရေး စည်းရုံး မှု ကြီး တစ်ရပ် အနေ နှင့် သော် ခရစ် ၁၉၄၄ ခု နှစ် ဩဂုတ်လ တွင် ဗိုလ်ချုပ် အောင် ဆန်း နှင့် အပေါင်းပါ တစ်စု တို့ က ခေါင်းဆောင် လျက် ဖက် ဆစ် တိုက် ဖျက် ရေး ပြည် သူ့ လွတ်လပ်ရေး အဖွဲ့ ချုပ် ကို ဖွဲ့စည်း လိုက် ကြ သည် ။ ၎ င်း တို့ မှာ - # အိန္ဒိယ ပြည် ၊ ဘုံ ဘိုင် မြောက် ပိုင်း ၊ န မ္ မ ဒါ မြစ် ထဲ ၌ ခြေတော်ရာ တစ် ဆူ ။ သိပ္ပံပညာ ရှင် တို့သည် အရာ ဝတ္ထု တို့ ကို အလွန် နိမ့် သော အပူချိန် အထိ အအေးခံ ရာတွင် လေ ဆာ ကို အသုံးပြု ၍ အက်တမ် တို့ ကို အရှိန် လျော့ ချ ကြ သည် ။ ဗား ရှင်း များ ကို မြှင့် တင် ရင်း များ စွာ သောက လ ပ် စ် နှင့် များသည် အခြေခံ အသုံးချ က လ ပ် စ် အစုအဝေး ထဲ ကို ပါဝင် လာ ခဲ့ ကြ ၏ ။ ကိုယ်ပိုင် သံစဉ် အပုဒ် ရေ ပေါင်း ၂၀ဝ ကျော် ရေး ဖွဲ့ ခဲ့ သည် ။ ဝက်သား အဆီ များ ကောက်ညှင်း အတွင်း စိမ့် ဝင် ပြီး အသား များ နူး လာ ချိန် တွင် ကောက်ညှင်း ထုပ် ကို ကျက် သော အနေအထား နှင့် တွေ့ ပြီး အရသာ ရှိ လှ သော ဝက်သား ကောက်ညှင်း စားစရာ အမယ် တစ် မျိုး ကို ရရှိ ပေ လိမ့်မည် ။ ထို တော်လှန်ရေး ၏ ထိ ရောက် စွာ ဆောင်ရွက် မှု ကြောင့် မဟာမိတ် တို့သည် မြန်မာ ပြည် ကို ပြန်လည် တိုက်ခိုက် သိမ်းပိုက် ရာ ၌ လွယ်ကူ လျင်မြန် ခဲ့ လေ သည် ။ ဗမာ ပြည်နယ် စပ် သို့ တရုတ် ဖြူ များ ဝင် ရောက် လှုပ်ရှားမှု ကို အကဲဖြတ် ရာတွင် အ မေ ရိ ကန် က သွယ်ဝိုက် သော နည်း အားဖြင့် ငါ တို့ အား အကူအညီ ပေး လာ ပြီ ဟု အစ ပိုင်း တွင် ငါ တို့ ထင်မှတ် ခဲ့ ပေ သည် ။ မြန်မာ တို့ ၏ ဓလေ့ထုံးစံ နှင့် ရိုးရာ အစဉ်အလာ များ ကို လည်း မ ပျောက် ကွယ် စေ ရန် ရည်ရွယ် ၍ … ဗုဒ္ဓ ဝေယျာဝစ္စ အသင်း များ ဖွဲ့ လျက် သီတင်းနေ့ များ ၌ ဥပုသ် ဆောက်တည် ခြင်း ၊ ဆွမ်း လောင်း ခြင်း တို့ ကို ပြုလုပ် နိုင်သည် ။
Next, I looked at a sample of five sentences containing at least one stacked-consonants, before and after “word” segmentation using the quanteda default method.
stackedCon <- grepl("([\u1000-\u1021]\u1039[\u1000-\u1021]){1}",x100_itN_Sen.5)
cat(x100_itN_Sen.5[stackedCon][10000:10005])
သုဏာတု မေ ဘန္တေ(အာဝုသော) သံဃော စဏ္ဍာရုဒ္ဓါ ရဘသာ အဒယာလုကာ ဝိဟေသကာ မဟာစောရ ယောဓ န.အ.ဖ ရာဇာနော ပခုက္ကူ သံဃံ အမူလကေန မဟာရ ဒါနဉ္စ ဒဏ္ဍဒါနဉ္စ အဒါသိ၊ ဇီဝိတိန္ဒြိယဉ္စ ကရောတိ။ သံဃော စဏ္ဍာရုဒ္ဓါ ရဘသာ အဒယာလုကာ ဝိဟေသကာ မဟာစောရ ယောဓ န.အ.ဖ ရာဇူနံ ပတ္တံ နိက္ကုဇ္ဖတိ အသမ္ဘောဂံ သံဃေန ကရောတိ။ ယဿာ .သ္ခတော ခမတိ စဏ္ဍာ ရုဒ္ဒါ ရဘသာ အဒယာလုကာ ဝိဟေသကာ မဟာစောရ ယောဓ န.အ.ဖ ရာဇူနံ ပတ္တဿ နိက္ကုဇ္ဖနာ အသမ္ဘောဂံ သံဃေန ကရဏံ သောတုဏှဿ ယဿ နက္ခမတိသော ဘာသေယျ။ ပထမတွင် “ နမောတဿ” သုံးကြိမ်ရွတ်ပြီး “ သုဏာတုမေ ” မှ “ ဇသာ ဉ တ္တိ ” အထိ၊ အချို့ တစ်ကြိမ် တချို့ သုံးကြိမ်ရွတ်ဖတ်ကြသည်။ “ သုဏာတု မေ” မှ “သောဘာသေယျ ” အထိ အလယ်ပိုဒ်နှင့် “ နိက္ကုဇ္ဇိတော ” မှ “ ဓါရယာမိ ” အထိ အဆုံးပိုဒ်ကို သုံးကြိမ်စီ အသီးသီး ရွတ်ဖတ်ရ ဖြစ်သည်။ အခြား ကမ္မဝါများကဲ့သို့ပင် အသံ အနိမ့်အမြင့်၊ အပြင်း အပျော့၊ သိထိလ ဓနိတ ဌာန်ကရိုဏ်း “တုန်း” သဘောတရားဆန်သည့် သံစဉ်များနှင့် ရွတ်ရမည်ဖြစ်သည်။
cat(sapply(x100_itNS5.w[stackedCon][10000:10005],paste0, collapse=" "))
သု ဏာ တု မေ ဘ န္ တေ ( အာဝုသော ) သံ ဃော စ ဏ္ ဍာ ရု ဒ္ ဓါ ရ ဘ သာ အ ဒ ယာ လု ကာ ဝိ ဟေ သကာ မဟာ စောရ ယော ဓ န.အ.ဖ ရာဇာ နော ပ ခု က္ ကူ သံဃံ အမူ လ ကေ န မဟာ ရ ဒါ န ဉ္ စ ဒ ဏ္ ဍ ဒါ န ဉ္ စ အ ဒါ သိ ၊ ဇီ ဝိ တိ န္ ဒြိ ယ ဉ္ စ က ရော တိ ။ သံ ဃော စ ဏ္ ဍာ ရု ဒ္ ဓါ ရ ဘ သာ အ ဒ ယာ လု ကာ ဝိ ဟေ သကာ မဟာ စောရ ယော ဓ န.အ.ဖ ရာဇူ နံ ပ တ္ တံ နိ က္ ကု ဇ္ ဖ တိ အ သ မ္ ဘော ဂံ သံ ဃေ န က ရော တိ ။ ယဿာ . သ္ ခ တော ခ မ တိ စ ဏ္ ဍာ ရု ဒ္ ဒါ ရ ဘ သာ အ ဒ ယာ လု ကာ ဝိ ဟေ သကာ မဟာ စောရ ယော ဓ န.အ.ဖ ရာဇူ နံ ပ တ္ တဿ နိ က္ ကု ဇ္ ဖ နာ အ သ မ္ ဘော ဂံ သံ ဃေ န က ရ ဏံ သော တု ဏှဿ ယဿ န က္ ခ မ တိ သော ဘာ သေ ယျ ။ ပထမ တွင် " နမောတဿ " သုံး ကြိမ် ရွတ် ပြီး " သု ဏာ တု မေ " မှ " ဇ သာ ဉ တ္ တိ " အထိ ၊ အချို့ တစ် ကြိမ် တချို့ သုံး ကြိမ် ရွတ်ဖတ် ကြ သည် ။ " သု ဏာ တု မေ " မှ " သော ဘာ သေ ယျ " အထိ အလယ် ပိုဒ် နှင့် " နိ က္ ကု ဇ္ ဇိ တော " မှ " ဓါ ရ ယာ မိ " အထိ အဆုံး ပိုဒ် ကို သုံး ကြိမ် စီ အသီးသီး ရွတ်ဖတ် ရ ဖြစ်သည် ။ အခြား ကမ္မဝါ များ ကဲ့သို့ ပင် အသံ အနိမ့် အမြင့် ၊ အပြင်း အပျော့ ၊ သိ ထိ လ ဓနိ တ ဌာန် ကရိုဏ်း " တုန်း " သဘောတရား ဆန် သည့် သံစဉ် များ နှင့် ရွတ် ရ မည် ဖြစ်သည် ။

Conclusion

I am very much excited because the quanteda default word segmentation works contrary to the expectations for a language without word delimitation by space. Having being developed for the English language, I don’t think it would consciously include some special facilities to segment Myanmar language text into syllables/words. Much of that capability must arise from the Unicode representation of our script, I guess. But don’t believe me. Look into it yourselves, and if you are smarter explain to us how that happens!