For me the easiest way To play with my QD Myanmar Wikipedia corpus will be to create a wordcloud from syllable segmentation data produced from it. Since I have no idea of how much time it will take to extract syllables from this huge collection of 87,405 sentences/paragraphs of Myanmar language text, I choosed to work with a random sample of 10,000 sentences/paragraphs. For this exercise, I am using the textMyNbl.s1 vector which is the R-format text data of the myWiki-QDcorpus.txt file as the source data.
For syllabe segmentation I am using the same code as in my earlier post “Citizen coding for syllable segmentation of Myanmar text”. First, a sample of 10,000 elements is randomly selected.
Creating a sample of 10,000 sentences/paragraphs
set.seed(10000)
n <- length(textMyNbl.s1)
xs <- textMyNbl.s1[sample(1:n, 10000)]
View the 9999th element of the sample:
cat(xs[9999])
ထို့နောက်အိုဟီရာသည်ယိုကိုဟားမားအကောက်ခွန်ရုံးအုပ်အဖြစ်၎င်း၊ဆင်ဒိုင်အကောက်ခွန်ကြီးကြပ်ရေးဗျူရိုနှင့်တိုကျိုဘဏ္ဍာရေးဗျူရိုညွှန်ကြားရေးမှူးအဖြစ်၎င်း၊ဂျပန်စီးပွားရေးတည်ငြိမ်မှုဘုတ်အဖွဲ့၏ပြည်သူ့လုပ်ငန်းဌာနခွဲညွှန်ကြားရေးမှူးအဖြစ်၎င်း၊ဂျပန်ဘဏ္ဍာရေးဝန်ကြီး၏အတွင်းရေးအတွင်းဝန်အဖြစ်၎င်းဆောင်ရွက်ခဲ့လေသည်။
Syllable segmentation is done on the text in the sample.
library(quanteda)
xit <- tokens(xs, what = "character")
View the tokenized characters of 9999th text:
cat(xit[[9999]]) # or cat(xit$text9999)
ထို့ နေ ာ က် အို ဟီ ရ ာ သ ည် ယို ကို ဟ ာ း မ ာ း အ ကေ ာ က် ခွ န် ရုံ း အု ပ် အ ဖြ စ် ၎ င် း ၊ ဆ င် ဒို င် အ ကေ ာ က် ခွ န် ကြီ း ကြ ပ် ရေ း ဗျူ ရို နှ င့် တို ကျို ဘ ဏ္ ဍ ာ ရေ း ဗျူ ရို ညွှ န် ကြ ာ း ရေ း မှူ း အ ဖြ စ် ၎ င် း ၊ ဂျ ပ န် စီ း ပွ ာ း ရေ း တ ည် ငြိ မ် မှု ဘု တ် အ ဖွဲ့ ၏ ပြ ည် သူ့ လု ပ် င န် း ဌ ာ န ခွဲ ညွှ န် ကြ ာ း ရေ း မှူ း အ ဖြ စ် ၎ င် း ၊ ဂျ ပ န် ဘ ဏ္ ဍ ာ ရေ း ဝ န် ကြီ း ၏ အ တွ င် း ရေ း အ တွ င် း ဝ န် အ ဖြ စ် ၎ င် း ဆေ ာ င် ရွ က် ခဲ့ လေ သ ည် ။
Syllable segmentation script
The segmentation of syllables from the sample of 10,000 sentences/paragraphs, each of which has been tokenized as above, took 1 hour and 38 minutes. I was running the following R-script on my Windows-7 laptop with Intel Core i5 CPU at 2.67GHz, and 8GB RAM.
syll <- list()
for (k in 1:10000) {
syll.k <- list()
TEMP <- xit[[k]][1]
j <- 1
L <- length(xit[[k]])
for(i in 2:L) {
y <- grepl("[\u102b-\u102c\u1038-\u1039\u103a]",xit[[k]][i])
if (y == TRUE){
TEMP <- paste0(TEMP,xit[[k]][i])
} else {
my.1 <- grepl("[\u1040-\u1049]", xit[[k]][i])
my.0 <- grepl("[\u1040-\u1049]", xit[[k]][i-1])
if (my.1 == TRUE){
if (my.0 == TRUE){
TEMP <- paste0(TEMP,xit[[k]][i])
} else {
syll.k[[j]] <- TEMP
j <- j+1
TEMP <- xit[[k]][i]
}
} else {
if (my.0 == TRUE){
syll.k[[j]] <- TEMP
j <- j+1
TEMP <- xit[[k]][i]
} else {
# for stacked consonant
if (grepl("[\u1039]",xit[[k]][i-1])==TRUE){
TEMP <- paste0(TEMP,xit[[k]][i])
} else {
syll.k[[j]] <- TEMP
j <- j+1
TEMP <- xit[[k]][i]
}
}
}
}
}
if (i == L){
syll.k[[j]] <- TEMP
}
syll[[k]] <- paste(unlist(syll.k))
}
})
The output
View the output of 93 syllables produced from 9999th tokenized text:
length(syll[[9999]])
[1] 93
utf8::utf8_print(syll[[9999]])
[1] "ထို့" "နောက်" "အို" "ဟီ" "ရာ" "သည်" "ယို" "ကို" "ဟား" "မား" "အ" "ကောက်"
[13] "ခွန်" "ရုံး" "အုပ်" "အ" "ဖြစ်" "၎င်း" "၊" "ဆင်" "ဒိုင်" "အ" "ကောက်" "ခွန်"
[25] "ကြီး" "ကြပ်" "ရေး" "ဗျူ" "ရို" "နှင့်" "တို" "ကျို" "ဘဏ္ဍာ" "ရေး" "ဗျူ" "ရို"
[37] "ညွှန်" "ကြား" "ရေး" "မှူး" "အ" "ဖြစ်" "၎င်း" "၊" "ဂျ" "ပန်" "စီး" "ပွား"
[49] "ရေး" "တည်" "ငြိမ်" "မှု" "ဘုတ်" "အ" "ဖွဲ့" "၏" "ပြည်" "သူ့" "လုပ်" "ငန်း"
[61] "ဌာ" "န" "ခွဲ" "ညွှန်" "ကြား" "ရေး" "မှူး" "အ" "ဖြစ်" "၎င်း" "၊" "ဂျ"
[73] "ပန်" "ဘဏ္ဍာ" "ရေး" "ဝန်" "ကြီး" "၏" "အ" "တွင်း" "ရေး" "အ" "တွင်း" "ဝန်"
[85] "အ" "ဖြစ်" "၎င်း" "ဆောင်" "ရွက်" "ခဲ့" "လေ" "သည်" "။"
The total number of syllables obtained from the sampled 10000 texts is 1.2 million.
length(unlist(syll))
[1] 1218112
No comments:
Post a Comment