private static void Main(string[] args)
        {
            _configuration = Args.Configuration.Configure <CommandsConfiguration>().CreateAndBind(args);

            Initialize(_configuration);

            var reader = new Reader();
            var table  = reader.ReadTable(_fileinfo.FullName);

            for (_headerNumber = 0; _headerNumber < table.Header.Count; _headerNumber++)
            {
                var writer          = new Writer();
                var outputDirectory = _fileinfo.Directory.CreateSubdirectory(
                    $"Results_{DateTime.Now.ToString("HH_mm DD_MM")}//{_fileinfo.Name.Split('.')[0]}_{_configuration.Algorythm}_'{table.Header[_headerNumber]}'");
                var number = 0;

                var clastersList     = _method.Clasterize(table, _headerNumber).ToList();
                var notEmptyClasters = clastersList.Where(claseters => claseters.Count() > 1).ToList();

                foreach (var claster in notEmptyClasters)
                {
                    var dist = claster.GetColumn(_headerNumber).Distinct().Count() > 1
                        ? string.Empty
                        : "//UniqueDir";
                    writer.Write(claster, $"{outputDirectory.FullName}" +
                                 $"{dist}" +
                                 $"//{++number}.csv");
                }
            }
        }
        private static void Initialize(CommandsConfiguration configuration)
        {
            _fileinfo     = new FileInfo(configuration.Filename);
            _headerNumber = configuration.TargetColumn;
            switch (configuration.Algorythm)
            {
            case "fingerprint":
            default:
                _method = new Clasterizer(new FingerprintStringComparer());
                break;

            case "ngram":
                _method = new Clasterizer(new NGramStringComparer());
                break;

            case "phonetic":
                _method = new Clasterizer(new PhoneticStringComparer());
                break;

            case "leivenstein":
                _method = new Clasterizer(new LeivensteinStringComparer(555D));
                break;

            case "ppm":
                _method = new Clasterizer(new PpmStringComparer(1D));
                break;
            }
        }