コード例 #1
0
        public void SetUp()
        {
            if (Directory.Exists(TestUtils.CompiledPath))
            {
                Directory.Delete(TestUtils.CompiledPath, true);
            }

            Directory.CreateDirectory(TestUtils.CompiledPath);

            using (var outputStream = File.Create(charDef))
            {
                CharacterDefinitionsCompiler compiler = new CharacterDefinitionsCompiler(CodePagesEncodingProvider.Instance);
                string assetFileName = @"./Core/Resource/char.def";
                using (var defStream = File.OpenRead(assetFileName))
                {
                    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
                    compiler.ReadCharacterDefinition(defStream, "euc-jp");
                    categoryIdMap = Invert(compiler.MakeCharacterCategoryMap());
                    compiler.Compile(outputStream);
                }
            }

            using (var input = File.OpenRead(charDef))
                using (BinaryReader reader = new BinaryReader(input))
                {
                    int[][] definitions = IntegerArrayIO.ReadSparseArray2D(reader);
                    int[][] mappings    = IntegerArrayIO.ReadSparseArray2D(reader);

                    string[] symbols = StringArrayIO.ReadArray(reader);
                    characterDefinition = new CharacterDefinitions(definitions, mappings, symbols);
                }
        }
        public void SetUp()
        {
            SortedDictionary <string, int> categoryMap;

            using (var outputStream = File.Create(charDef))
            {
                CharacterDefinitionsCompiler charDefCompiler = new CharacterDefinitionsCompiler(CodePagesEncodingProvider.Instance);
                string assetFileName = @"./Core/Resource/char.def";
                using (var defStream = File.OpenRead(assetFileName))
                {
                    charDefCompiler.ReadCharacterDefinition(defStream, "euc-jp");
                    charDefCompiler.Compile(outputStream);
                }

                categoryMap = charDefCompiler.MakeCharacterCategoryMap();
            }

            var unkDefFile = TestUtils.CompiledPath + Path.DirectorySeparatorChar + "kuromoji-unkdef-.bin";

            using (var outputStream = File.Create(unkDefFile))
            {
                UnknownDictionaryCompiler unkDefCompiler = new UnknownDictionaryCompiler(categoryMap);
                string assetFileName = @"./Core/Resource/unk.def";
                using (var defStream = File.OpenRead(assetFileName))
                {
                    unkDefCompiler.ReadUnknownDefinition(defStream, "euc-jp");
                    unkDefCompiler.Compile(outputStream);
                }
            }

            using (var charDefInput = File.OpenRead(charDef))
                using (var reader = new BinaryReader(charDefInput))
                {
                    int[][]  definitions = IntegerArrayIO.ReadSparseArray2D(reader);
                    int[][]  mappings    = IntegerArrayIO.ReadSparseArray2D(reader);
                    string[] symbols     = StringArrayIO.ReadArray(reader);

                    characterDefinitions = new CharacterDefinitions(definitions, mappings, symbols);
                }

            using (var unkDefInput = File.OpenRead(unkDefFile))
                using (var reader = new BinaryReader(unkDefInput))
                {
                    costs      = IntegerArrayIO.ReadArray2D(reader);
                    references = IntegerArrayIO.ReadArray2D(reader);
                    features   = StringArrayIO.ReadArray2D(reader);

                    unknownDictionary = new UnknownDictionary(characterDefinitions, references, costs, features);
                }
        }
コード例 #3
0
        public static CharacterDefinitions NewInstance(string resourceAbsolutePath)
        {
            try
            {
                using (Stream charDefInput = File.OpenRead(resourceAbsolutePath + Path.DirectorySeparatorChar + CHARACTER_DEFINITIONS_FILENAME))
                    using (BinaryReader reader = new BinaryReader(charDefInput))
                    {
                        int[][]  definitions = IntegerArrayIO.ReadSparseArray2D(reader);
                        int[][]  mappings    = IntegerArrayIO.ReadSparseArray2D(reader);
                        string[] symbols     = StringArrayIO.ReadArray(reader);

                        CharacterDefinitions characterDefinition = new CharacterDefinitions(definitions, mappings, symbols);
                        return(characterDefinition);
                    }
            }
            catch (IOException ex)
            {
                throw new IOException("CharacterDefinitions.NewInstance: " + ex.Message);
            }
        }