Exemple #1
0
        /// <summary>
        /// 加载主词典及扩展词典
        /// </summary>
        private void LoadMainDict()
        {
            var files = Directory.GetFiles(cfg.MainDictionary, "*.dict");

            //读取量词词典文件
            if (!files.Contains(cfg.MainDictFile))
            {
                throw new InvalidOperationException("未发现主词库词典!!!");
            }
            //建立一个主词典实例
            mainDict = new DictSegment((char)0);
            foreach (var file in files)
            {
                var theWord = File.ReadAllLines(file, Encoding.UTF8);
                foreach (var word in theWord)
                {
                    if (IsValidWord(word))
                    {
                        var      vals = word.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                        WordNode node = new WordNode()
                        {
                            Frequency = vals.Length > 1 ? double.Parse(vals[1]) : 1  //默认词频1
                        };
                        //词
                        mainDict.FillSegment(vals[0].ToLower().ToCharArray(), node);
                    }
                }
            }

            //发射概率实例化
            FinalSeg.Init(Path.Combine(cfg.MainDictionary, "prob_emit.txt"));
        }
Exemple #2
0
 public void Viterbi()
 {
     var rs = FinalSeg.Output("我爱北京天安门").ToList();
 }