#C26.txt, April 22, 2024 Help:=proc(): print(` FT(SetL), TM(SetL) [Completed by Joseph Koutsoutis] `):end: read `ENGLISH.txt`: #FT(SetL): The frequency table of all words whose length belobgs to SetL #For example FT({3,4}) returns the randked frequency table for words of #length 3 and 4 FT:=proc(SetL) local ALPH,T1,W,DB,C,B,FL,L,A,FL1,S1: ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: DB:=ENG(): C:=0: for L in ALPH do T1[L]:=0: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W) do T1[W[B]]:=T1[W[B]]+1: C:=C+1: od: od: od: FL:=evalf([seq(T1[ALPH[A]]/C,A=1..nops(ALPH))]): FL1:=sort(FL,`>`): for A from 1 to nops(ALPH) do S1[FL[A]]:=ALPH[A]: od: FL1,[seq(S1[FL1[A] ],A=1..nops(ALPH))], [seq([FL1[A],S1[FL1[A]] ],A=1..nops(ALPH))] : end: #TMIncomplete(SetL): The frequency table of all words whose length belobgs to SetL #For example FT({3,4}) returns the randked frequency table for words of #length 3 and 4 #AND the Transiton matrix 28x28 the first "letter" is ST and the last is EN #NOT YET FINISHED TMIncomplete:=proc(SetL) local ALPH,T1,W,DB,C,B,FL,L,A,FL1,S1,T2,L1,L2,ST,EN,T3,ALPH1: print(`Not yet finished`): ALPH:=[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]: DB:=ENG(): C:=0: for L in ALPH do T1[L]:=0: od: for L1 from 1 to nops(ALPH) do T2[ST,ALPH[L1]]:=0: T2[ALPH[L1],EN]:=0: for L2 from 1 to nops(ALPH) do T2[ALPH[L1],ALPH[L2]]:=0: od: od: for A in SetL do for W in DB[A] do for B from 1 to nops(W) do T1[W[B]]:=T1[W[B]]+1: C:=C+1: if B`): for A from 1 to nops(ALPH) do S1[FL[A]]:=ALPH[A]: od: for L1 from 1 to nops(ALPH) do T3[ST,ALPH[L1]]:=evalf(T2[ST,ALPH[L1]]/C): T3[ALPH[L1],EN]:=evalf(T2[ALPH[L1],EN]/C): od: for L1 from 1 to nops(ALPH) do for L2 from 1 to nops(ALPH) do T3[ALPH[L1],ALPH[L2]]:=evalf(T2[ALPH[L1],ALPH[L2]]/C): od: od: FL1,[seq(S1[FL1[A] ],A=1..nops(ALPH))], [seq([FL1[A],S1[FL1[A]] ],A=1..nops(ALPH))] , op(T3): end: #TM(SetL): Outputs the 28 by 28 transition matrix of all words whose length #belongs to SetL. #Code by Joseph Koutsoutis TM:=proc(SetL) local ALPH1,LEN,WORD,J,C,T,DB,L1,L2: ALPH1 := [ST,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,EN]: DB:=ENG(): for L1 in ALPH1 do: for L2 in ALPH1 do: T[L1,L2]:=0: od: od: for LEN in SetL do: for WORD in DB[LEN] do: for J from 1 to LEN do: if J = 1 then: T[ST,WORD[J]]++: fi: if J < LEN then: T[WORD[J], WORD[J+1]]++: else: T[WORD[J], EN]++: fi: od: od: od: for L1 in ALPH1 do: C := add(T[L1, L2], L2 in ALPH1): if C <> 0 then: for L2 in ALPH1 do: T[L1,L2] := evalf(T[L1,L2] / C): od: fi: od: [seq([seq(T[L1,L2], L2 in ALPH1)], L1 in ALPH1)]: end: