anbani
Version:
Multifunctional javascript toolkit for Georgian Alphabet - Anbani
423 lines (394 loc) • 11.5 kB
JavaScript
import { setCharAt } from "./utils.mjs";
const data = {}
/* Frequencies for (for Vefxistyaosani)
- words - 40989
- dot - 1878
- comma - 8479
- exclamation - 588
- question - 286
*/
data.frequency = {
general : {
'.' : 0.0458171705,
',' : 0.206860377,
'!' : 0.0143453122,
'?': 0.00697748176,
},
summed : [
['?', 0.00697748176],
['!', 0.02132279396],
['.', 0.06713996445],
[',', 0.27400034145]
]
}
// 100 random words generated using char-rnn
data.vefxwords = [
'გამიშვშეს',
'მართალიპი',
'შემომოცივე',
'ვუხვა',
'გავლსობა',
'განდევანგაა',
'მოასეხეს',
'აქამდსაგებენ',
'შვენინე',
'უგანდეგო',
'ქანულკულნი',
'გემრუფენ',
'ვეღათ',
'მივისცა',
'მუკამდის',
'მივიმოწუქალსა',
'მზლოს',
'მოვლეხვე',
'ვიმაქებდა',
'ტატრესტინი',
'მოითქოკა',
'მდაგებენ',
'ვიმცე',
'სევა',
'სათინესნი',
'სადგმო',
'გასჩვადეთ',
'მესმანცა',
'მივსცავე',
'წეითო',
'ძვილნი',
'გამიზრიან',
'დავათქვენო',
'ზიცი',
'მისცედი',
'მონებანი',
'დანამრისა',
'სრცოტი',
'ჰქონთავისთან',
'მბრძენია',
'წახსილთა',
'მიხსენით',
'სევნა',
'გარდუკვრიდდა',
'მიდამოდეს',
'სიპყრო',
'შემწოვლისა',
'მამდიჰხლეან',
'ბრჭნია',
'დანენატანნი',
'უკრთებოდემნი',
'იციცოდა',
'სამატა',
'უფრნა',
'გაეგარნების',
'დავეჯარენა',
'მტემურსა',
'მშვენოდენო',
'გიმძიმნო',
'სამვზინო',
'მოვლოცთა',
'გიშვილა',
'დაამჭებინ',
'მითხროს',
'მჟავალია',
'მღურა',
'ღინდეს',
'მოაგხება',
'გავიცეცხლი',
'ტირსლით',
'გავწყრეტა',
'მყივნენ',
'ქაფინს',
'ბანგსა',
'შემოხანა',
'შემოვსჭვრეტით',
'ამოვჰღერთო',
'მოცადია',
'მოეხვიდეს',
'თქმია',
'აღვია',
'ვლამს',
'მოხდიანები',
'გორსვლითა',
'გვთქვას',
'გაუზადა',
'დაბითქის',
'ანვინა',
'შრიდონი',
'გავწიდნია',
'ალვითანი',
'მონიო',
'სიტირენ',
'გიშიხარნი',
'დამიფემი',
'მეგრეცა',
'ფითჯი',
'მსდევარსა',
'განაზანდა',
'საქმინ',
]
data.fnames = [
'თავან',
'ელიკონ',
'კანტლიონ',
'გველე',
'ლადიან',
'ლოტინე',
'გიოლგვი',
'გარსა',
'თედა',
'მეზნან',
'მარტა',
'აურაზგრ',
'მადრა',
'გიოგილი',
'სონიკელიზანი',
'ასსანო',
'ნიგოლიტი',
'ავაკვან',
'მონს',
'ნადრინ',
'ნიფოლ',
'ელიკორ',
'დამას',
'გიმრი',
'ობარხი',
'გამონ',
'ონეს',
'ზიხტინე',
'იოკელ',
'სატდა',
'პარა',
'იანეზ',
'ზინა',
'რანგი',
'იანგორ',
'აბსინე',
'ლენტან',
'ზისტიკობ',
'ნიგოლო',
'დატითნი',
'მანთა',
'არგიქ',
'ზიკო',
'ერლე',
'იანე',
'მევრენ',
'ალტისა',
'მარდია',
'სისელ',
'ხეისა',
'ელუან',
'დელო',
'იეკლებ',
'გუჩილი',
'ტამა',
'ნოკგოლ',
'იაკისე',
'დადო',
'ართემრას',
'ანაიკობე',
'გტიტ',
'თახსან',
'ზანა',
'ნუდო',
'გიოდა',
'ისსლიკონ',
'ალსან',
'რამოლე',
'გუმან',
'ნურმგინ',
'თომითანი',
'დევანე',
'ელედეინ',
'გიმოტ',
'არარ',
'ორმონ',
'ნედრი',
'დიმო',
'ხოთიანეი',
'გივა',
'ნანტრე',
'გიმოლ',
'დოსონ',
'იკანენ',
'იკქორიზე',
'გილტორგ',
'დეტონ',
'ერდეა',
'ირეგლიზ',
'რიდელუდან',
'თოკან',
'იანებენტიანა',
'სიბო',
'გიორტინ',
'ნიკილან',
'ელაკონ',
'გიდრაბ',
'ლეცთეტანტენდერიბ',
'დამერ',
'იეგო',
]
data.lnames = [
'მახადენია',
'ბსელრია',
'ქავია',
'კორეკია',
'მარდია',
'ბარდიონია',
'გვიპიანდია',
'ერთელია',
'ნთხაია',
'თედია',
'ბოხაია',
'ბარია',
'ჭარტინია',
'არპანია',
'ჩურია',
'მორცაწაზია',
'არმელია',
'მირბარია',
'ჭველაქია',
'ქარითია',
'გართელია',
'იანია',
'დვანტონეიანია',
'პუჩია',
'დატილია',
'კანია',
'ვარდსვალია',
'ყორთელია',
'არდოლია',
'რიკსქაშვილი',
'გამექონთეშვილი',
'ლუჩაშვილი',
'მარდაშვილი',
'პაბიშვილი',
'არბერეშვილი',
'ფოსურიშვილი',
'ვაწოშვილი',
'ჩრილიაშვილი',
'ტიმაშვილი',
'მავანიშვილი',
'მადსიშვილი',
'რედელიშვილი',
'თეთაშვილი',
'გარავაშვილი',
'დარახაშვილი',
'ბარჭამიშვილი',
'ბარახაშვილი',
'ანღელიშვილი',
'მებაშვილი',
'სურეჯიშვილი',
'აკბთაკიშვილი',
'ტუსონიშვილი',
'ტოდერაშვილი',
'ზაბხასიშვილი',
'ქურაბერინიშვილი',
'ებვეკაშვილი',
'ერდითაშვილი',
'ურბელიშვილი',
'მენრმაშვილი',
'ჯვილოძე',
'ბადიაძე',
'შვირიძე',
'სასანაძე',
'გიმაანიძე',
'გვამავიძე',
'არმემიძსძე',
'ბარაძე',
'აბეანიძე',
'ოვონიძე',
'ლამაშვიძე',
'ობთახურაძე',
'კერეძე',
'ფვერიძე',
'მაგიძე',
'კადიაშიძე',
'გამსანიძე',
'მერტინიძე',
'ბემეელიძე',
'ტოხიძე',
'ჭარატიძე',
'ბადოსელი',
'ვარისელი',
'სირხელი',
'სორხელი',
'მარდელი',
'გაშვითელი',
'კოთაველი',
'ოსთმინელი',
'ერისელი',
'ზთერტელი',
'ხამიკელი',
'მიბაძეშიელი',
'იკთელი',
'გთციტაბელი',
'ასიცელი',
'ობაიჭელი',
'ლენთელი',
'მემჩათერინონგბანინიძე',
'ამედვაქსიკოგეიშვირი',
'მორჟვონანდიშვილი',
]
let dataset = data.vefxwords
const freqs = data.frequency.summed
const loadWordlist = (wordlist) =>
{
dataset = wordlist
}
const sentences = (nwords) => {
return createSentences(createWords(nwords))
}
const paragraphs = (nwords, npar, newline="\n\n") => {
let paragraphs = ""
for (let i=0; i < npar; i++){
paragraphs += createSentences(createWords(nwords)) + newline
}
return paragraphs
}
const createSentences = (words) => {
let sentences = ""
for (let i=0; i < words.length; i++){
sentences += words[i] + randomMark()
}
sentences = sentences.trim()
sentences = setCharAt(sentences, sentences.length-1, '.', 1)
return sentences
}
const names = (nnames) => {
let results = []
for (let i = 0; i < nnames; i++) {
results.push(randomFirstName() + ' ' + randomLastName())
}
return results
}
const randomFirstName = () => {
return data.fnames[randomNumber(0, data.fnames.length)]
}
const randomLastName = () => {
return data.lnames[randomNumber(0, data.lnames.length)]
}
const randomMark = () => {
let r = Math.random()
for (let i=0; i<freqs.length; i++) {
if (r < freqs[i][1])
return freqs[i][0] + ' '
}
return ' '
}
const randomWord = () => {
return dataset[randomNumber(0,dataset.length)]
}
const createWords = (nwords) => {
let words = []
for (let i=0; i < nwords; i++){
words.push(randomWord())
}
return words
}
// Random number [min, max)
const randomNumber = (min, max) => {
return Math.floor(Math.random() * (max-min) + min)
}
const $ = { randomFirstName, randomLastName, randomWord };
export default {
sentences, paragraphs, loadWordlist, names, $
};