/// <summary> /// 导入外部词库,词频按照重合词频比例平均值 /// </summary> /// <param name="ImportDicFile">外部词库文件名</param> /// <param name="ImportEncoding">外部词库文件编码</param> /// <param name="SourceDicFile">源dct文件名</param> /// <param name="DestDicFile">目标dct文件名</param> /// <param name="DicFormat">外部词库类型</param> /// <param name="OddLines">导入的库中无效且不在源库中的数据</param> /// <param name="ImportFrqRate">设置固定的导入文件频度比例(除以此数字后入库,小于等于0则按照AvgFrqRate入库)</param> /// <param name="AvgFrqRate">导入文件的平均频度比例</param> /// <returns>导入的条数</returns> public static int ImportDictionary(string ImportDicFile, Encoding ImportEncoding, string SourceDicFile, string DestDicFile, DictionaryFormat DicFormat, out string[] OddLines, out double AvgFrqRate, double ImportFrqRate = 0) { //初始化 double MaxFrqRate, MinFrqRate; WordDictionary.DicWordInfo[] NewWords; WordDictionary.DicWordInfo[] ExistWords; FindDifferent(ImportDicFile, ImportEncoding, DicFormat, SourceDicFile, out OddLines, out NewWords, out ExistWords, out MaxFrqRate, out MinFrqRate, out AvgFrqRate); //加载词库 WordDictionary dict = new WordDictionary(); if (!dict.Load(SourceDicFile)) throw new Exception("load source dic file fail"); //加入新词 foreach (WordDictionary.DicWordInfo Word in NewWords) { int Frq = Convert.ToInt32(ImportFrqRate <= 0 ? Word.Frequence / AvgFrqRate : Word.Frequence / ImportFrqRate); dict.AddWord(Word.Word, Word.Pos, Frq); } //保存 dict.Save(DestDicFile); dict.ReleaseDict(); return NewWords.Length; }