@AndrovT I've refined the corpus a little to remove things like # main program comments and programs that are mostly compressed strings, and it seems to do a little better
Basically higher alpha gives more weight to uniform distribution, higher beta gives higher weight to a distribution based on frequency and the rest is a distribution based on the last symbol
for each i in range (1, 9) I collect how many times does a symbol A appear i symbols after symbol B and then the weight of the next symbol being A given a list of symbols lst is roughly sum(0.5**distance(B, A)*(number of times B appeared that far away from A) for B in lst) + beta*(frequency(A) + alpha)
modified corpus to remove some programs/program components that are: a) false positives from the SEDE query, b) comments, c) quine related and d) a single built-in
@lyxal I don't think this is the way to go. Test data should represent the programs you want to encode as closely as possible while being independent of the training data. Having only those of average length messes up the results because what you're measuring isn't how well it compresses vycal programs in general but only those of average length
For deploying it it's probably best to use all the data but if you want to estimate how well it works you should follow these rules
It's potentially useful to filter the programs somehow. You just need to be careful whether better test result means an actual improvement or only the test got easier.
well I've filtered out some programs that are either a) not representative of actual code golf challenges (e.g. quines or restricted source) or b) contain series of characters that aren't actually commands chained together (like strings)