Beispiel #1
0
        public void SaveToBinFile(String fileName, WordPosCollection dictFile)
        {
            Stream s = CSerialization.SerializeBinary(dictFile);

            s.Position = 0;
            CFile.WriteStream(fileName, (MemoryStream)s);
        }
Beispiel #2
0
        /// <summary>
        /// 从关键词主词典加载数据。
        /// </summary>
        /// <param name="filename">关键词主词典的Xml文件</param>
        private static WordPosCollection LoadSegWords(string filename)
        {
            WordPosCollection wpList = new WordPosCollection();

            try///用XmlTextReader的方法快速读取字典文件
            {
                XmlTextReader reader = new XmlTextReader(filename);
                while (reader.Read())
                {
                    if (reader.IsStartElement())
                    {
                        if (!reader.IsEmptyElement && reader.Name == "kw")
                        {
                            reader.MoveToAttribute("w");///将节点移动“权重”属性上,“权重”属性名为:"w"
                            int     i     = int.Parse(reader.Value);
                            string  kwStr = reader.ReadElementString();
                            WordPos wp    = new WordPos(kwStr, i);
                            wpList.WordPosList.Add(wp);
                        }
                    }
                }
                reader.Close();
            }
            catch (Exception)
            {
                throw;
            }
            return(wpList);
        }
Beispiel #3
0
        public void SaveDictToTextFile(string dictpath, WordPosCollection dictFile)
        {
            StreamWriter sw = new StreamWriter(dictpath, false, Encoding.UTF8);

            foreach (WordPos dict in dictFile.WordPosList)
            {
                sw.WriteLine("{0}\t\t{1}", dict.Word, dict.Pos);
            }
            sw.Close();
        }
Beispiel #4
0
        /// <summary>
        /// 从文本文件读取字典
        /// </summary>
        /// <param name="fileName"></param>
        public WordPosCollection LoadFromTextDict(String fileName)
        {
            WordPosCollection dictFile = new WordPosCollection();

            String dictStr = CFile.ReadFileToString(fileName, "utf-8");

            String[] words = CRegex.Split(dictStr, "\r\n");

            foreach (String word in words)
            {
                String[] wp = CRegex.Split(word, @"\|");

                if (wp == null)
                {
                    continue;
                }

                if (wp.Length != 2)
                {
                    continue;
                }

                int pos = 0;

                try
                {
                    pos = int.Parse(wp[1]);
                }
                catch
                {
                    continue;
                }

                WordPos dict = new WordPos(wp[0], pos);

                if (dict.Word.Contains("一") || dict.Word.Contains("二") ||
                    dict.Word.Contains("三") || dict.Word.Contains("四") ||
                    dict.Word.Contains("五") || dict.Word.Contains("六") ||
                    dict.Word.Contains("七") || dict.Word.Contains("八") ||
                    dict.Word.Contains("九") || dict.Word.Contains("十"))
                {
                    dict.Pos |= (int)PosEnum.POS_A_M;
                }

                if (dict.Word == "字典")
                {
                    dict.Pos = (int)PosEnum.POS_D_N;
                }

                dictFile.WordPosList.Add(dict);
            }

            return(dictFile);
        }
Beispiel #5
0
        public void LoadDictFromText(string dictpath)
        {
            Dict dict = new Dict();

            dictFile = dict.LoadFromTextFile(dictpath + "Dict.dct");

            foreach (WordPos word in dictFile.WordPosList)
            {
                _POS.AddWordPos(word.Word, word.Pos);
            }
        }
Beispiel #6
0
        public WordPosCollection LoadFromString()
        {
            WordPosCollection wpList = new WordPosCollection();

            string[] words = new string[3]; //= Initialize.SegWords;
            foreach (string word in words)
            {
                try
                {
                    string[] wordSplit  = word.Split(new string[] { "\t\t" }, StringSplitOptions.RemoveEmptyEntries);
                    WordPos  dictStruct = new WordPos(wordSplit[0], int.Parse(wordSplit[1]));
                    wpList.WordPosList.Add(dictStruct);
                }
                catch { }
            }
            return(wpList);
        }
Beispiel #7
0
        public WordPosCollection LoadFromTextFile(string dictpath)
        {
            WordPosCollection file = new WordPosCollection();
            StreamReader      sr   = new StreamReader(dictpath, Encoding.UTF8);

            while (!sr.EndOfStream)
            {
                try
                {
                    string[] word = sr.ReadLine().Split(new string[] { "\t\t" }, StringSplitOptions.RemoveEmptyEntries);
                    WordPos  dict = new WordPos(word[0], int.Parse(word[1]));
                    file.WordPosList.Add(dict);
                }
                catch { }
            }
            sr.Close();
            return(file);
        }