Ignore:
Timestamp:
Dec 1, 2009, 2:34:29 PM (12 years ago)
Author:
malischewski
Message:

Loads files dynamically now, uses DataManager. Generates Bigramm count dynamically (Before: txt input)

Location:
trunk/CrypPlugins/CostFunction
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/CostFunction/CostFunction.cs

    r929 r931  
    4444        private IDictionary<string, double[]> corpusGrams;
    4545
    46 
     46        private DataManager dataMgr = new DataManager();
     47        private const string DATATYPE = "transposition";
     48
     49        private IDictionary<String, DataFileMetaInfo> txtList;
    4750        private IDictionary<int, IDictionary<string, double[]>> statistics;
    4851
     
    447450                }
    448451            }
     452
    449453            return score;
    450454        }
     
    465469        private IDictionary<string, double[]> LoadDefaultStatistics(int length)
    466470        {
     471            txtList = dataMgr.LoadDirectory(DATATYPE);
     472
     473            return calculateAbsolutes(txtList["2gram.txt"].DataFile.FullName);
     474        }
     475
     476        private IDictionary<string, double[]> calculateAbsolutes(String path)
     477        {
     478
     479
    467480            Dictionary<string, double[]> grams = new Dictionary<string, double[]>();
    468481
    469             StreamReader reader = new StreamReader(Path.Combine(PluginResource.directoryPath, GetStatisticsFilename(length)));
    470 
    471             string line;
    472             while ((line = reader.ReadLine()) != null)
    473             {
    474                 if (line.StartsWith("#"))
    475                     continue;
    476 
    477                 string[] tokens = WordTokenizer.tokenize(line).ToArray();
    478                 if (tokens.Length == 0)
    479                     continue;
    480                 //Debug.Assert(tokens.Length == 2, "Expected 2 tokens, found " + tokens.Length + " on one line");
    481 
    482                 grams.Add(tokens[0], new double[] { Double.Parse(tokens[1]), 0, 0, 0 });
     482            StreamReader reader = new StreamReader(path);
     483            String text = reader.ReadToEnd();
     484
     485            text.ToUpper();
     486            text = Regex.Replace(text, "[^A-Z]*", "");
     487
     488
     489            for (int i = 0; i < text.Length - 1; i++)
     490            {
     491                char a = text[i];
     492                char b = text[i + 1];
     493                String key = a.ToString();
     494                key = key + b.ToString();
     495
     496                if (!grams.ContainsKey(key))
     497                {
     498                    grams.Add(key, new double[] { 1, 0, 0, 0 });
     499                }
     500                else
     501                {
     502                    grams[key][0] = grams[key][0] + 1.0;
     503                }
    483504            }
    484505
    485506            double sum = grams.Values.Sum(item => item[ABSOLUTE]);
    486             //GuiLogMessage("Sum of all n-gram counts is: " + sum, NotificationLevel.Debug);
     507            GuiLogMessage("Sum of all n-gram counts is: " + sum, NotificationLevel.Debug);
    487508
    488509            // calculate scaled values
     
    494515            }
    495516
     517
     518
    496519            return grams;
    497520        }
    498521
    499         /// <summary>
    500         /// Get file name for default n-gram frequencies.
    501         /// </summary>
    502         /// <param name="length"></param>
    503         /// <exception cref="NotSupportedException">No default n-gram frequencies available</exception>
    504         /// <returns></returns>
    505         private string GetStatisticsFilename(int length)
    506         {
    507             if (length < 1)
    508             {
    509                 throw new ArgumentOutOfRangeException("There is no known default statistic for an n-gram length of " + length);
    510             }
    511 
    512             return "Enigma_" + length + "gram_Frequency.txt";
    513         }
    514522        public string ByteArrayToString(byte[] arr)
    515523        {
  • trunk/CrypPlugins/CostFunction/CostFunction.csproj

    r859 r931  
    9191    </None>
    9292  </ItemGroup>
     93  <ItemGroup>
     94    <None Include="Data\CostFunctionDeutsch.txt">
     95      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     96    </None>
     97  </ItemGroup>
     98  <ItemGroup>
     99    <None Include="Data\Enigma_1gram_Frequency.txt">
     100      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     101    </None>
     102  </ItemGroup>
     103  <ItemGroup>
     104    <None Include="Data\2gram.txt">
     105      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     106    </None>
     107  </ItemGroup>
     108  <ItemGroup>
     109    <None Include="Data\Enigma_3gram_Frequency.txt">
     110      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     111    </None>
     112  </ItemGroup>
     113  <ItemGroup>
     114    <None Include="Data\2gram.txt.metainfo" />
     115  </ItemGroup>
    93116  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    94117  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
     
    103126cd ..\..\CrypWin\$(OutDir)
    104127if not exist "./CrypPlugins" mkdir "./CrypPlugins"
    105 
     128if not exist "./Data/transposition" mkdir "./Data/transposition"
    106129del /F /S /Q /s /q "CostFunction*.*"
    107 copy "$(TargetDir)CostFunction*.*" "./CrypPlugins"</PostBuildEvent>
     130copy "$(TargetDir)CostFunction*.*" "./CrypPlugins"
     131copy "$(ProjectDir)Data\*.*" "./Data/transposition"</PostBuildEvent>
    108132  </PropertyGroup>
    109133</Project>
  • trunk/CrypPlugins/CostFunction/Enigma_2gram_Frequency.txt

    r848 r931  
    1 # By Geoff Sullivan and Frode Weierud, (c) November 2005
    2 # http://cryptocellar.web.cern.ch/cryptocellar/bgac/1941freq.zip
    3 ER  453
    4 EN  375
    5 IN  334
    6 EI  326
    7 ST  264
    8 IE  239
    9 BE  210
    10 UN  204
    11 NS  199
    12 GE  188
    13 AN  179
    14 TE  171
    15 UE  165
    16 OR  156
    17 RE  147
    18 ES  138
    19 XS  137
    20 ND  137
    21 NG  136
    22 RI  135
    23 NA  130
    24 LL  124
    25 NX  123
    26 SE  121
    27 TX  118
    28 DE  118
    29 FU  117
    30 NU  113
    31 QT  111
    32 NF  109
    33 XE  109
    34 AU  107
    35 WO  107
    36 RO  105
    37 EL  105
    38 TA  102
    39 RA  102
    40 RX  101
    41 AX  101
    42 AR   98
    43 EG   98
    44 LE   98
    45 ZW   96
    46 UL   96
    47 XA   96
    48 ET   95
    49 AQ   95
    50 SI   94
    51 TR   92
    52 XK   92
    53 EX   90
    54 NE   90
    55 IQ   89
    56 CH   88
    57 ON   87
    58 SX   84
    59 SS   84
    60 VI   83
    61 LA   83
    62 NI   82
    63 MA   81
    64 LX   79
    65 RS   77
    66 ME   77
    67 EH   76
    68 XD   76
    69 EB   76
    70 DR   75
    71 TO   75
    72 IT   74
    73 EQ   74
    74 EM   74
    75 KO   73
    76 RT   72
    77 OE   70
    78 LI   68
    79 DI   68
    80 AB   68
    81 OS   66
    82 NN   66
    83 ED   66
    84 XM   65
    85 ZU   63
    86 WE   63
    87 XV   62
    88 FX   61
    89 XB   61
    90 VO   60
    91 ZE   60
    92 VE   60
    93 SA   60
    94 MX   59
    95 HR   59
    96 RU   58
    97 AM   58
    98 QS   57
    99 NO   57
    100 RD   56
    101 HE   55
    102 YY   54
    103 OX   53
    104 NT   53
    105 XN   53
    106 AL   53
    107 XF   53
    108 US   52
    109 OP   52
    110 FE   52
    111 TS   51
    112 IS   51
    113 XZ   50
    114 XH   50
    115 SQ   49
    116 FL   49
    117 SC   48
    118 GA   48
    119 KX   47
    120 IX   47
    121 OM   47
    122 HA   47
    123 WA   46
    124 EU   45
    125 TT   45
    126 DO   45
    127 UM   45
    128 TZ   44
    129 XP   44
    130 TI   43
    131 SZ   42
    132 NZ   42
    133 XR   42
    134 MO   42
    135 KE   42
    136 KA   42
    137 AS   41
    138 AE   41
    139 IV   40
    140 GU   40
    141 MI   39
    142 UF   39
    143 GX   38
    144 XU   38
    145 OT   38
    146 FR   38
    147 UR   37
    148 RP   37
    149 FF   37
    150 HO   36
    151 XL   36
    152 XG   36
    153 IG   36
    154 EF   36
    155 LN   35
    156 SP   34
    157 AF   34
    158 JE   34
    159 RB   34
    160 PA   34
    161 WX   33
    162 XI   33
    163 QX   32
    164 RW   32
    165 MM   32
    166 KL   32
    167 RK   32
    168 AG   32
    169 PF   32
    170 ZX   31
    171 TU   31
    172 NM   31
    173 FA   31
    174 BA   31
    175 PR   30
    176 SK   30
    177 LF   30
    178 XW   29
    179 DU   29
    180 GS   29
    181 RM   29
    182 OL   29
    183 RZ   28
    184 RN   28
    185 IM   28
    186 HL   28
    187 LD   28
    188 DX   27
    189 LU   27
    190 FS   27
    191 SO   27
    192 NK   27
    193 OF   27
    194 DA   27
    195 YX   26
    196 OW   26
    197 LT   26
    198 GR   26
    199 XO   26
    200 AH   26
    201 SG   26
    202 FZ   25
    203 VX   25
    204 TW   25
    205 HX   24
    206 RV   24
    207 NR   24
    208 HN   24
    209 BI   24
    210 RF   24
    211 UT   23
    212 EE   23
    213 EZ   22
    214 AZ   22
    215 MU   22
    216 DS   22
    217 IL   22
    218 SF   22
    219 JA   22
    220 SU   21
    221 AT   21
    222 SN   21
    223 OK   21
    224 AK   21
    225 RG   21
    226 PE   21
    227 EA   21
    228 EW   20
    229 QU   20
    230 PO   20
    231 LO   20
    232 BO   20
    233 DN   20
    234 UG   20
    235 GF   20
    236 EC   20
    237 KU   19
    238 ZT   19
    239 BS   19
    240 RL   19
    241 ZA   19
    242 GT   18
    243 IR   18
    244 BR   18
    245 GL   18
    246 QE   18
    247 KD   18
    248 ID   18
    249 MB   18
    250 OZ   17
    251 PX   17
    252 SV   17
    253 PT   17
    254 UQ   17
    255 UP   17
    256 PP   17
    257 FO   17
    258 TL   17
    259 EK   17
    260 NB   17
    261 DW   16
    262 EV   16
    263 ZO   16
    264 TN   16
    265 AJ   16
    266 KI   16
    267 UH   16
    268 TD   16
    269 AD   16
    270 XC   16
    271 UB   16
    272 IA   16
    273 RY   15
    274 MT   15
    275 FT   15
    276 QL   15
    277 TK   15
    278 FK   15
    279 IF   15
    280 SD   15
    281 OD   15
    282 XT   14
    283 PS   14
    284 RQ   14
    285 TM   14
    286 DL   14
    287 TH   14
    288 OG   14
    289 LG   14
    290 TB   14
    291 SB   14
    292 ZY   13
    293 LS   13
    294 MP   13
    295 IK   13
    296 AI   13
    297 QF   13
    298 KF   13
    299 GD   13
    300 MZ   12
    301 HT   12
    302 WI   12
    303 HI   12
    304 QG   12
    305 TY   11
    306 NY   11
    307 AV   11
    308 OQ   11
    309 EP   11
    310 GO   11
    311 MK   11
    312 ZI   11
    313 TG   11
    314 MF   11
    315 IC   11
    316 KW   10
    317 DT   10
    318 RR   10
    319 IO   10
    320 QM   10
    321 KM   10
    322 NL   10
    323 OH   10
    324 IB   10
    325 CB   10
    326 YA   10
    327 DY    9
    328 YV    9
    329 OV    9
    330 MV    9
    331 YR    9
    332 QN    9
    333 UK    9
    334 PK    9
    335 TJ    9
    336 SH    9
    337 FH    9
    338 MG    9
    339 QD    9
    340 OB    9
    341 ZZ    8
    342 IZ    8
    343 DZ    8
    344 GY    8
    345 NW    8
    346 TV    8
    347 QV    8
    348 HU    8
    349 QR    8
    350 BM    8
    351 QK    8
    352 LK    8
    353 TF    8
    354 YE    8
    355 RC    8
    356 AC    8
    357 FB    8
    358 DB    8
    359 OA    8
    360 LZ    7
    361 GZ    7
    362 LY    7
    363 NV    7
    364 WU    7
    365 KT    7
    366 KR    7
    367 FN    7
    368 SM    7
    369 HM    7
    370 SL    7
    371 BL    7
    372 CK    7
    373 YI    7
    374 BH    7
    375 PG    7
    376 BG    7
    377 UA    7
    378 PY    6
    379 BX    6
    380 MW    6
    381 LV    6
    382 GV    6
    383 PU    6
    384 JU    6
    385 BU    6
    386 BT    6
    387 CS    6
    388 MR    6
    389 HP    6
    390 AP    6
    391 WK    6
    392 XJ    6
    393 YH    6
    394 NH    6
    395 ZG    6
    396 FD    6
    397 DD    6
    398 OC    6
    399 VA    6
    400 QZ    5
    401 BZ    5
    402 FV    5
    403 WS    5
    404 HS    5
    405 NP    5
    406 MN    5
    407 KN    5
    408 GM    5
    409 PI    5
    410 GI    5
    411 FI    5
    412 YF    5
    413 UD    5
    414 MD    5
    415 ZB    5
    416 LB    5
    417 QA    5
    418 XY    4
    419 EY    4
    420 XX    4
    421 JX    4
    422 UW    4
    423 QW    4
    424 BW    4
    425 MS    4
    426 KS    4
    427 TP    4
    428 AO    4
    429 ZN    4
    430 JN    4
    431 BN    4
    432 PM    4
    433 PL    4
    434 GK    4
    435 WJ    4
    436 UJ    4
    437 SJ    4
    438 OJ    4
    439 NJ    4
    440 LJ    4
    441 RH    4
    442 YG    4
    443 FG    4
    444 HF    4
    445 CE    4
    446 ZD    4
    447 QB    4
    448 PB    4
    449 UZ    3
    450 WY    3
    451 FY    3
    452 AY    3
    453 CX    3
    454 PW    3
    455 GW    3
    456 FW    3
    457 AW    3
    458 XQ    3
    459 LP    3
    460 IP    3
    461 DP    3
    462 QO    3
    463 EO    3
    464 GN    3
    465 LM    3
    466 ML    3
    467 YK    3
    468 RJ    3
    469 MJ    3
    470 DH    3
    471 VD    3
    472 UC    3
    473 TC    3
    474 KB    3
    475 CA    3
    476 YZ    2
    477 PZ    2
    478 UY    2
    479 UX    2
    480 UV    2
    481 DV    2
    482 YU    2
    483 VU    2
    484 OU    2
    485 YT    2
    486 YS    2
    487 ZR    2
    488 VR    2
    489 SR    2
    490 PQ    2
    491 QP    2
    492 OO    2
    493 JO    2
    494 YN    2
    495 PN    2
    496 WL    2
    497 ZK    2
    498 HK    2
    499 YJ    2
    500 PJ    2
    501 IJ    2
    502 FJ    2
    503 DJ    2
    504 QI    2
    505 CI    2
    506 QH    2
    507 IH    2
    508 GG    2
    509 BF    2
    510 WB    2
    511 KZ    1
    512 HZ    1
    513 CZ    1
    514 OY    1
    515 KY    1
    516 IY    1
    517 BY    1
    518 WW    1
    519 VW    1
    520 SW    1
    521 HW    1
    522 ZV    1
    523 KV    1
    524 HV    1
    525 BV    1
    526 UU    1
    527 CU    1
    528 WT    1
    529 WR    1
    530 LR    1
    531 JR    1
    532 YQ    1
    533 TQ    1
    534 GQ    1
    535 ZP    1
    536 YP    1
    537 GP    1
    538 UO    1
    539 CN    1
    540 YM    1
    541 WM    1
    542 VM    1
    543 FM    1
    544 CM    1
    545 ZL    1
    546 DK    1
    547 GJ    1
    548 BJ    1
    549 UI    1
    550 OI    1
    551 PH    1
    552 LH    1
    553 KH    1
    554 GH    1
    555 WG    1
    556 VG    1
    557 KG    1
    558 WF    1
    559 VF    1
    560 CF    1
    561 PD    1
    562 BD    1
    563 WC    1
    564 NC    1
    565 LC    1
    566 GC    1
    567 DC    1
    568 YB    1
    569 GB    1
    570 BB    1
     1AUFBEFEHLDESOBERSTENBEFEHLSHABERSSINDIMFALLEXZXZTX
     2UNWAHRSCHEINLICHENXFRANZOESISQENANGRIFFSDIEWESTBEF
     3ESTIGUNGENJEDERZAHLENMAESKIGENUEBERLEGENHEITZUMTRO
     4TZZUHALTENXFUEHRUNGUNDTRUPPEMUESSENVONDIESEREHRENP
     5FLIQTDURQDRUNGENSEINXABSXDEMGEMAESSBEHALTEIQMIRDIE
     6ERMAEQTIGUNGZURPUFGABEDERBEFESTIGUNGENODERAUQVONTE
     7ILENAUSDRUECKLIQPERSOENLIQVORXABSXAENDERUNGDERANWE
     8ISUNGXOKHXGENXSTXDXHXERSTEABTXNRXDREIDREIZWOEINSXD
     9REIAQTGXKDOSXVOMJULIEINSNEUNDREIAQTBLEIBTVORBEHALT
     10ENXDEROBERBEFEHLSHABERDESHEERESKRKRFLOTTENCHEFANOK
     11MMMXXTORPEDOTREFFERACHTERAUSXSCHIFFMANOEVRIERUNFAE
     12HIGXWIRKAEMPFENBISZURLETZTENGRANATEXESLEBEDERFUEHR
     13ERXDERFUEHRERISTTOTXDERKAMPFGEHTWEITERXDOENITZX
Note: See TracChangeset for help on using the changeset viewer.