GithubHelp home page GithubHelp logo

gregopet / zapis-slovenskih-stevil Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 55 KB

Primeri zapisa slovenskih števil z besedami, uporabni za testiranje programskih implementacij

License: The Unlicense

i18n slovenija slovenscina slovenski-jezik test testing test-driven-development test-cases slovenia natural-language-generation

zapis-slovenskih-stevil's Introduction

Zapis številk v slovenščini - testni primeri

Ta zbirka zapisov slovenskih števil je namenjena vsem programerjem in programerkam, ki so ali še bodo kadarkoli pojasnjevali našim silicijevim prijateljem, kako se števila pravilno zapiše s slovenskimi besedami. Mišljena je kot testni primer, s katerim se lahko preveri algoritem, spisan v kateremkoli programskem jeziku, saj bi moral format JSON razumeti praktično katerikoli jezik pod soncem. Naš cilj je, da bi za program, ki pravilno zapiše vse naštete primere, lahko z veliko gotovostjo rekli, da zna v slovenščini pravilno zapisati katerokoli število.

Vsem implementacijam seveda ni potrebno znati vseh možnih spolov in sklanjatev, zato lahko vam odvečne podatke mirno ignorirate. Razen tega, da so JSON ključi napisani brez šumnikov, so podatki v datoteki zapisani preprosto in očitno. Edina posebnost, na katero mora paziti programer je, da je zaradi enostavnejšega pregledovanja in urejanja pri nekaterih številih namesto naštevanja vsakega spola posebej uporabljen nadpomenski ključ "vsi".

Slovene numbers written with words - test cases

This is a collection of test cases for writing numbers as Slovene words. It is intended as test case for any programmer that has or will be explaining the topic to our silicon friends and is thus written in the JSON format since it is widely supported in various programming languages. A program that can correctly pass all these test cases should probably be able to write practically any number in Slovene.

Every implementation doesn't need to handle all grammatical cases and genders of course so feel free to skip what you don't need. Besides not using letters with carons in JSON keys, the data should be structured obviously to anyone who has a basic knowledge of Slovene grammar with one exception that was used to make writing and editing this document easier: where the examples for all genders would be equal, the key "vsi" (all) is used instead of listing the "z", "m" and "s" individually.

Zahvala

Za popravke in predloge se zahvaljujem:

Štefan Baebler, Marina Valenčič, Gregor Anželj, Peter Holozan, Teja Cetinski, Žiga Hajduković, Žiga Šebenik

zapis-slovenskih-stevil's People

Contributors

gregopet avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

zapis-slovenskih-stevil's Issues

1803603801 orodnik

"orodnik" : { "ž" : "s milijarda osemsto trije milijoni šeststo tri tisoč osemsto eno", "m" : "s milijarda osemsto trije milijoni šeststo tri tisoč osemsto enim", "s" : "s milijarda osemsto trije milijoni šeststo tri tisoč osemsto enim" }

ž: z milijardo osemsto tremi milijoni šeststo tri tisoč osemsto eno
m: z milijardo osemsto tremi milijoni šeststo tri tisoč osemsto enim
s: z milijardo osemsto tremi milijoni šeststo tri tisoč osemsto enim

Naredimo angleškim uporabnikom bolj prijazno

Mednarodnim uporabnikom bi mogoče koristili:

  • Prevodi ključev (dictionary) in/ali angleški ključi v JSON-ih.
  • Nekaj primerov in prevodov rabe sklonov in spolov (z vzporednicami na podobne primere v drugih jezikih, npr. Nemščina, Srbščina/Hrvaščina, itd.)

To bi pomoje bilo odlično vodilo glede slovenske lokalizacije, za nekoga ki ni lingvist. :)

Mogoče bi lahko tudi dodali l10n, localization, in grammatical case oznake (tags).

Sicer pa odlično delo, čestitke!!!

šesto -> šeststo

{ "število": 1803603801,
"imenovalnik": { "ž" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto ena", "m" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto en", "s" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto eno" },
"rodilnik" : { "ž" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto ene", "m" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enega", "s" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enega" },
"dajalnik" : { "ž" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto eni", "m" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enemu", "s" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enemu" },
"tožilnik" : { "ž" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto eno", "m" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enega", "s" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto eno" },
"mestnik" : { "ž" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto eni", "m" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enem", "s" : "milijarda osemsto trije milijoni šesto tri tisoč osemsto enem" },
"orodnik" : { "ž" : "s milijarda osemsto trije milijoni šesto tri tisoč osemsto eno", "m" : "s milijarda osemsto trije milijoni šesto tri tisoč osemsto enim", "s" : "s milijarda osemsto trije milijoni šesto tri tisoč osemsto enim" }
}

šesto -> šeststo

Naj imajo vsi skloni vseh števil enako strukturo

... da lahko enostavno do vseh dostopaš na enak način - brez pisanja dodatnih pogojev
(spodnja koda je JS)

for (let i in stevila){
  console.log(stevila[i].rodilnik.z)
}

namesto

for (let i in stevila){
  if(Object.keys(stevila[i].rodilnik).length>1){
    console.log(stevila[i].rodilnik.z)
  }
  else{
    console.log(stevila[i].rodilnik.vsi)
  }
}

Testni primer

let stevila =  [
    { "stevilo": 1,
      "imenovalnik": { "z": "ena", "m" : "en", "s" : "eno" },
      "rodilnik" : { "z": "ene", "m" : "enega", "s" : "enega" },
      "dajalnik" : { "z": "eni", "m" : "enemu", "s" : "enemu" },
      "tozilnik" : { "z": "eno", "m" : "enega", "s" : "eno" },
      "mestnik" : { "z": "eni", "m" : "enem", "s" : "enem" },
      "orodnik" : { "z": "z eno", "m" : "z enim", "s" : "z enim" }
    },
    { "stevilo": 2,
      "imenovalnik": { "z": "dve", "m" : "dva", "s" : "dve" },
      "rodilnik" : { "z": "dveh", "m" : "dveh", "s" : "dveh" },
      "dajalnik" : { "z": "dvema", "m" : "dvema", "s" : "dvema" },
      "tozilnik" : { "z": "dve", "m" : "dva", "s" : "dve" },
      "mestnik" : { "z": "dveh", "m" : "dveh", "s" : "dveh" },
      "orodnik" : { "z": "z dvema", "m" : "z dvema", "s" : "z dvema" }
    },
    { "stevilo": 3,
      "imenovalnik": { "z": "tri", "m" : "trije", "s" : "tri" },
      "rodilnik" : { "vsi" : "treh" },
      "dajalnik" : { "vsi": "trem" },
      "tozilnik" : { "vsi": "tri" },
      "mestnik" : { "vsi" : "treh" },
      "orodnik" : { "vsi": "s tremi" }
    },
]

Napačni milijoni v imenovalniku

{ "število": 303000000,
"imenovalnik": { "vsi" : "tristo tri milijone" },

Tole je tožilnik. Imenovalnik bi bil "tristo trije milijoni"

Izgubil sem (koga ali kaj?) tristo tri milijone in sedaj nekje na cesti ležijo (kdo ali kaj?) tristo trije milijoni.

https://svetovalnica.zrc-sazu.si/topic/2089/raba-števnikov

Ta isti problem se pojavlja tudi pri drugih imenovalnikih, npr:

{ "število": 3000000,
"imenovalnik": { "vsi" : "tri milijone" },

Pravilno: "trije milijoni"

{ "število": 304000000,
"imenovalnik": { "vsi" : "tristo štiri milijone" },

Pravilno: "tristo štirje milijoni"

itd...

Decimalna števila

Dodati bi bilo potrebno nekaj testnih primerov za decimalna števila, npr:

  • 0,0
  • 0,1
  • 0,000005
  • 1,0
  • 1,5
  • 2,05
  • 3,005
  • 11111,1111
    ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.