Ovaj dokument precizno objašnjava kako aplikacija izračunava sve metrike koje se koriste u analizi kognitivnog testa, uključujući definicije nominalnih vrednosti, referentnih vrednosti, i transformaciju na Likertovu skalu (1-7).
Sve semantičke metrike (Variability, Granularity, Concreteness) rade sa embedding vektorima
koje generiše OpenAI API koristeći model text-embedding-3-small.
Šta su embedding vektori?
Embedding je numerička reprezentacija reči u višedimenzionalnom prostoru (~1536 dimenzija). Reči sa sličnim značenjem imaju slične vektore i nalaze se blizu jedna drugoj u tom prostoru.
Pre bilo kakve analize, sve reči prolaze kroz standardni postupak normalizacije:
trim() - uklanja razmake sa početka i krajatoLowerCase() - konvertuje sva slova u mala slovanormalize("NFC") - Unicode normalizacija (npr. "č" se uvek kodira na isti način)Koliko se značenje reči menja tokom niza. Veća variabilnost znači da pacijent koristi semantički raznolike reči i "skače" između različitih tema/kategorija.
Korak 1: Svaka reč se pretvara u embedding vektor kroz OpenAI API.
Korak 2: Računaju se cosine distance između svake dve uzastopne reči:
Reči: ["pas", "mačka", "automobil"]
| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [0, 2] | Matematički mogući opseg (0 = identične reči, 2 = potpuno suprotne) |
| Realistični opseg | [0.2, 0.85] | Opseg koji se zaista javlja u praksi kod fluentnih testova |
| Referentna vrednost (min) | 0.2 | Mapira se na Likert skor 1 (vrlo niska varijabilnost) |
| Referentna vrednost (max) | 0.85 | Mapira se na Likert skor 7 (vrlo visoka varijabilnost) |
Koliko su reči specifične nasuprot generičkim.
Koristi se anchor-based pristup - svaka reč se poredi sa dva skupa referentnih reči (anchora):
Generički Anchori:
stvar, osoba, objekat, nešto, aktivnost, akcija, ideja, pojava, mesto, vreme
Specifični Anchori:
pas, automobil, avion, hleb, sat, kuća, stolica, računar, telefon, knjiga
Reč: "pas"
| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [-2, 2] | Matematički mogući opseg |
| Realistični opseg | [-0.12, 0.12] | Opseg u praksi |
| Interpretacija |
Pozitivne vrednosti: specifičnije reči Negativne vrednosti: generičnije reči ~0: neutralne reči |
|
Koliko su reči konkretne (fizički opipljive) nasuprot apstraktnim (ideje, koncepti).
Identično kao Granularity, ali sa različitim anchorima:
Konkretni Anchori:
kamen, voda, drvo, metalo, papir, tkanina, staklo, cveće, voće, povrće
Apstraktni Anchori:
ljubav, mir, pravda, istina, lepota, sloboda, znanje, vreme, snaga, mudrost
Reč: "stolica"
| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [-2, 2] | Matematički mogući opseg |
| Realistični opseg | [-0.15, 0.15] | Opseg u praksi |
| Interpretacija |
Pozitivne vrednosti: konkretnije reči Negativne vrednosti: apstraktnije reči |
|
Koliko su reči česte u jeziku. Meri se na osnovu korpusa od 50,000 najčešćih srpskih reči
(assets/sr_50k.txt).
Korak 1: Učitava se fajl koji sadrži parove: reč + broj pojavljivanja
Korak 2: Za svaku reč se uzima log₁₀(count) (tzv. Zipf scale)
Zašto logaritamska skala?
Distribucija frekvencije reči u jeziku prati Zipfov zakon - nekoliko reči je ekstremno često ("i", "je", "da"), dok većina reči ima malu frekvenciju. Logaritam kompresuje ovaj širok opseg u upravljiv broj.
| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [2.3, 7.1] | log₁₀(~200) do log₁₀(~10,000,000) |
| Realistični opseg | [2.5, 5.5] | Tipične vrednosti u testovima fluentnosti |
Koliko su uzastopne reči fonološki slične (po zvuku). Koristi se za analizu fonološke fluentnosti (npr. imenovanje reči koje počinju sa "P").
Koristi se Dice Coefficient na osnovu bigrama (parova slova) sa anchor karakterima:
Korak 1: Svaka reč se razbija na bigrame sa anchorima ^ (početak) i $ (kraj)
Reč: "pas"
Sa anchorima: "^pas$"
Bigrami: ["^p", "pa", "as", "s$"]
Korak 2: Računa se Dice Coefficient između svake dve uzastopne reči:
Reči: "pas" i "pat"
["^p", "pa", "as", "s$"] → 4 bigrama["^p", "pa", "at", "t$"] → 4 bigrama["^p", "pa"] → 2 bigrama| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [0, 1] | 0 = potpuno različite reči, 1 = identične reči |
| Realistični opseg | [0.0, 0.35] | U testovima sa random rečima, retko prelazi 0.35 |
Prosečan broj karaktera u rečima. Najjednostavnija metrika koja može pokazati tendenciju ka kraćim ili dužim rečima.
Reči: ["pas", "mačka", "automobil"]
Dužine: [3, 5, 9]
Word Length = (3 + 5 + 9) / 3 = 5.67
| Tip Vrednosti | Opseg | Opis |
|---|---|---|
| Teorijski opseg | [1, 20] | Realističan opseg za reči u srpskom jeziku |
| Realistični opseg | [4.0, 8.0] | Tipične vrednosti u testovima fluentnosti |
Sve metrike se normalizuju i mapiraju na skalu od 1 do 7 pomoću linearne transformacije. Ovo omogućava intuitivno poređenje rezultata različitih metrika.
Realistični opseg: [0.2, 1.2]
Sirova vrednost: 0.7
1. Clamp: 0.7 je unutar [0.2, 1.2], ostaje 0.7
2. Normalizacija: t = (0.7 - 0.2) / (1.2 - 0.2) = 0.5 / 1.0 = 0.5
3. Projekcija: score = 1 + 0.5 × 6 = 1 + 3 = 4
4. Zaokruživanje: 4
FINALNI LIKERT SKOR: 4/7
| Likert Skor | Percentil | Klinička Interpretacija |
|---|---|---|
| 1-2 | 0-17% | Značajno ispod proseka - može ukazivati na kognitivni deficit |
| 3 | 17-33% | Ispod proseka - potencijalno blago oštećenje |
| 4 | 33-67% | Prosek - normalan nivo funkcionisanja |
| 5 | 67-83% | Iznad proseka - dobro funkcionisanje |
| 6-7 | 83-100% | Značajno iznad proseka - izvrsno funkcionisanje |
Ova tabela sumira teorijske i realističine opsege svih šest metrika koje aplikacija računa:
| Metrika | Teorijski Opseg | Realistični Opseg | Interpretacija Visokih Vrednosti |
|---|---|---|---|
| Variability | [0, 2] | [0.2, 0.85] | Veća semantička raznolikost reči |
| Granularity | [-2, 2] | [-0.12, 0.12] | Specifičnije (manje generičke) reči |
| Concreteness | [-2, 2] | [-0.15, 0.15] | Konkretnije (manje apstraktne) reči |
| Frequency | [2.3, 7.1] | [2.5, 5.5] | Češće reči u jeziku |
| Phon. Neighborhood | [0, 1] | [0.0, 0.35] | Veća fonološka sličnost uzastopnih reči |
| Word Length | [1, 20] | [4.0, 8.0] | Duže reči |
Napomena o Opsezima:
Realistični opsezi su definisani na osnovu empirijskih podataka iz testova fluentnosti. Ako dobijete vrednosti izvan ovih opsega, to može ukazivati na:
Aplikacija koristi napredne tehnike za osiguranje numeričke stabilnosti i reproduktivnosti rezultata.
Sve proseke se računaju pomoću Kahan algoritma koji minimizuje kumulativnu grešku zaokruživanja pri sabiranju floating-point brojeva:
Zašto je ovo važno?
Obični JavaScript sabiranje može izgubiti tačnost kada se sabiru brojevi veoma različitih magnitud. Kahan algoritam održava dodatnu kompenzacionu promenljivu koja prati i kompenzuje te greške, što rezultuje u većoj preciznosti, posebno pri sabirati velikog broja malih brojeva.
Embedding vektori i kosinus vrednosti se kvantizuju (zaokružuju) na određeni broj decimala:
Tipične preciznosti:
Prednosti kvantizacije:
NFC (Canonical Decomposition, followed by Canonical Composition) normalizacija osigurava da se karakteri sa dijakritičkim znacima (č, ć, š, ž...) uvek kodiraju na isti način:
Karakter "č" može biti kodiran na dva načina u Unicode-u:
Bez normalizacije, ova dva bi bila tretirana kao različiti stringovi!
normalize("NFC") konvertuje uvek u Način 1.
Pre mapiranja na Likert skalu, sirove vrednosti se ograničavaju (clamp) na realističine opsege. Ovo sprečava da ekstremne vrednosti (outliers) iskoče iz skale 1-7:
© 2024 Kognitivni Test - Dokumentacija Metodologije