larunbata, uztaila 03, 2021

Berridátziz atzoko "TEnt" funtzioa an R erábiliz "Entropy" funtzioa ("DescTools")

Atzo emán genuén R funtzio(txo) bat non lotzen dirén Shannon-en entropia eta Zipf-en legea afin kalkúlatu corpus linguistiko baten entropia teorikoa:

Horrela, defini geinke (an R softwarea) ondorengo funtzioa ki kalkulatu ha entropia teorikoa on corpus linguistiko bat non den perfektuki betetzen (teorikoki ere) Zipf-en legea ("TEnt" dá hainbeste nola "Theoretical Entropy"):

TEnt <- function(n){sum((1/(sum(1/(1:n))*(1:n))*log2(1/(1/(sum(1/(1:n))*(1:n))))))} 

non "n" parametro bakarra dagoen, zeintan aplikatuko dugún edozein kopurú on hitz ezberdinak, hala nola n = 29899:

TEnt(29899)

zeinen emaitza izanen dén goragoko entropia teorikoa (an "Ulisses"): 

10.47395
Horretarako, soilik jakin behar dugu zénbat hitz ezberdin agertzen diren an corpusa: Zipf-en legeak determinatzen dú beste guztia.

Genioenez, funtzio hori eman dá an R softwarea, zein doan deskarka litekén an gune hau. Behin R instalatuta, funtzio horrekin kalkulatu ahalko dá ha entropia teorikoa on edozein "n", adibidez "n = 10000":

TEnt(10000)

zeinen erantzuna dén:

9.532297

eta zein, dakigunez, izanen dén ha entropia teorikoa on corpus linguistiko bat kin 10000 hitz diferente.

Bestalde, R-n programatuta aurkitzen dirá hainbat funtzio, eta bádira paketeak non kalkulatu ahal den Shannon-en entropia ("DescTools" edo "Entropy"), eta non aurkitzen dugún ondorengo aukera ("DescTools"):


 kin azalpen hau ("DescTools"):

The Shannon entropy equation provides a way to estimate the average minimum number of bits needed to encode a string of symbols, based on the frequency of the symbols. It is given by the formula \(H = - \sum(\pi log(\pi))\) where \(\pi\) is the probability of character number i showing up in a stream of characters of the given "script". The entropy is ranging from 0 to Inf.

"Entropy" funtzio hori erabiltzeko, aurrena kargatu behar da "DescTools" paketea (gure atzoko funtzioa erabiltzeko ez da ezer deskargatu behar, salbu R programa), eta, adibidez, hari emanez probabilitate-sorta oso bat (demagun 0.5 eta 0.5, bidez kodeá: c(0.5,0.5)), programak emanen digú haren entropia teorikoa (baita eman geneioke maiztasun absolutuak edota balio ez-numerikoak nola hitzen zerrenda bat, eta programak automatikoki kalkulatuko ditú euren probabilitateak):

Entropy(c(0.5,0.5)) = 1

Gure kasuan, berdefini geinke gure funtzioa erábiliz "Entropy" funtzioa, honela:

TEnt<- function(n){Entropy((1/((sum(1/(1:n)))*(1:n))))}

non (1/((sum(1/(1:n)))*(1:n)))) zati horrek adierazten du ha probabilitate-sorta zeinen entropia teorikoa kalkulatu nahi dugun:

TEnt(10000) = 9.532297
zein dén atzoko ber funtzioa baina orain erábiliz "Entropy" funtzioa ("DescTools"). [1310] [>>>]

Etiketak: ,