コード例 #1
0
ファイル: WordDictionary.cs プロジェクト: yonglehou/nepy
        private WordDictionaryFile LoadFromTextFile(String fileName)
        {
            WordDictionaryFile dictFile = new WordDictionaryFile();

            dictFile.Dicts = new List <IDataNode>();

            using (StreamReader sr = new StreamReader(fileName, Encoding.UTF8))
            {
                while (!sr.EndOfStream)
                {
                    string line = sr.ReadLine();

                    string[] strs = line.Split(new char[] { '|' });

                    if (strs.Length == 3)
                    {
                        string word = strs[0].Trim();

                        POSType       pos       = (POSType)int.Parse(strs[1].Substring(2, strs[1].Length - 2), System.Globalization.NumberStyles.HexNumber);
                        double        frequency = double.Parse(strs[2]);
                        WordAttribute dict      = new WordAttribute(word, pos, frequency);

                        dictFile.Dicts.Add(dict);
                    }
                }
            }

            return(dictFile);
        }
コード例 #2
0
ファイル: WordDictionary.cs プロジェクト: yonglehou/nepy
 public PositionLength(int position, int length, WordAttribute wordAttr)
 {
     this.Position = position;
     this.Length   = length;
     this.WordAttr = wordAttr;
     this.Level    = 0;
 }
コード例 #3
0
        public List <IDataNode> Load()
        {
            List <IDataNode> nodes = new List <IDataNode>();

            using (StreamReader sr = new StreamReader(setting.Uri))
            {
                string line = sr.ReadLine();
                while (line != null)
                {
                    string[]      parts = line.Split(new char[] { ' ' });
                    WordAttribute wa    = new WordAttribute();
                    if (parts.Length == 3)
                    {
                        wa.Word      = parts[0];
                        wa.Frequency = Double.Parse(parts[1]);
                        wa.POS       = (POSType)Convert.ToInt32(parts[2]);
                    }
                    else
                    {
                        wa.Word = parts[0];
                    }
                    nodes.Add(wa);
                    line = sr.ReadLine();
                }
            }
            return(nodes);
        }
コード例 #4
0
ファイル: WordDictionary.cs プロジェクト: yonglehou/nepy
        private WordDictionaryFile LoadFromBinFile(String fileName, out string verNumStr)
        {
            WordDictionaryFile dictFile = new WordDictionaryFile();

            dictFile.Dicts = new List <IDataNode>();

            FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

            byte[] version = new byte[32];
            fs.Read(version, 0, version.Length);

            String ver = Encoding.UTF8.GetString(version, 0, version.Length);

            int zeroPosition = ver.IndexOf('\0');

            if (zeroPosition >= 0)
            {
                ver = ver.Substring(0, zeroPosition);
            }


            var matches = verRegex.Matches(ver);

            if (matches.Count > 0)
            {
                verNumStr = matches[0].Value;
            }
            else
            {
                verNumStr = null;
            }

            while (fs.Position < fs.Length)
            {
                byte[] buf = new byte[sizeof(int)];
                fs.Read(buf, 0, buf.Length);
                int length = BitConverter.ToInt32(buf, 0);

                buf = new byte[length];

                fs.Read(buf, 0, buf.Length);

                string  word      = Encoding.UTF8.GetString(buf, 0, length - sizeof(int) - sizeof(double));
                POSType pos       = (POSType)BitConverter.ToInt32(buf, length - sizeof(int) - sizeof(double));
                double  frequency = BitConverter.ToDouble(buf, length - sizeof(double));

                WordAttribute dict = new WordAttribute(word, pos, frequency);
                string.Intern(dict.Word);

                dictFile.Dicts.Add(dict);
            }

            fs.Close();

            return(dictFile);
        }