Word VBA Script for Shannon entropy of the alphabetic characters

219 views Asked by At

I have a document and want to take the Shannon entropy of each character in Word VBA. I have already calculated the Shannon entropy for each character but don't know how I would put this information in a word VBA and sum it up.


Shannon entropy for each character

Shannon entropy
(source: bearcave.com)

 Space,0.1859
     A 0.0856
     B,0.0139
     C,0.0279
     D,0.0378
     E,0.1304
     F,0.0289
     G,0.0199
     H,0.0528
     I,0.0627
     J,0.0013
     K,0.0042
     L,0.0339
     M,0.0249
     N,0.0707
     O,0.0797
     P,0.0199
     Q,0.0012
     R,0.0677
     S,0.0607
     T,0.1045
     U,0.0249
     V,0.0092
     W,0.0149
     X,0.0017
     Y,0.0199
     Z,0.0008

What I am trying to get

Today was a good day

The Shannon entropy of the characters in this document is 1.2798542258337
1

There are 1 answers

1
gNerb On BEST ANSWER

Well, from what I can tell you have 27 characters total each with a pre-defined value and you want to simply sum them up?

Let's start with variables:

dim characters(1 to 27) as double
dim x as integer 'for looping
dim total as double 'The final value

Define the values:

characters(1) = 0.1859 'space
characters(2) = 0.0856 'A
characters(3) = 0.0139 'B
characters(4) = 0.0279 'C
characters(5) = 0.0378 'D
'ETC.

Once you have your array filled

for x = 1 to 27
    total = total + characters(x)
next

Now, If you want to get crazier let me know. For instance, it's possible to write it in a way to where it will read a table full of data and then calculate the value.

For output, it really depends on where you want the output to be displayed. To display it directly in the document:

ActiveDocument.Paragraphs.add
ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).range.text = "The Shannon entropy of the characters in this document is" & total

I'm more curious to know why you need VBA for this if you already have all your answers. It seems like a calculator would suffice?