/// <summary> /// 加载正常识别短信内容 /// </summary> /// <returns></returns> public static bool LoadSMS() { bool result = false; DicItems.Clear(); StreamReader reader = null; try { reader = new StreamReader(ConfigProxy.SMSFile, Encoding.Default); string str; while ((str = reader.ReadLine()) != null) { string[] temp = str.Split('\t'); SMSItem item = new SMSItem(); switch (temp.Length) { case 1: item.UserContent = temp[0]; break; case 2: item.UserContent = temp[0]; item.BizName = temp[1]; break; case 3: item.UserContent = temp[0]; item.BizName = temp[1]; item.OperaName = temp[2]; break; } //短信预处理 item.UserContent = SMSPreProc.PreProc(item.UserContent); if (item.IsValid && !DicItems.ContainsKey(item.UserContent)) { DicItems.Add(item.UserContent, item); } } result = true; } catch (Exception ex) { Console.WriteLine(ex); } finally { if (reader != null) { reader.Close(); } } return(result); }
/// <summary> /// 加载拒绝短信数据 /// </summary> public static bool LoadSMSRefuse() { bool result = false; DicItems.Clear(); StreamReader reader = null; try { reader = new StreamReader(ConfigProxy.SmsRefuse, Encoding.Default); string str; while ((str = reader.ReadLine()) != null) { SMSRefuseItem item = new SMSRefuseItem(); //短信预处理 item.UserContent = SMSPreProc.PreProc(str); if (item.IsValid && !DicItems.ContainsKey(item.UserContent)) { DicItems.Add(item.UserContent, item); } } result = true; } catch (Exception ex) { Console.WriteLine(ex); } finally { if (reader != null) { reader.Close(); } } return(result); }
/// <summary> /// 从数据库中读取数据 /// </summary> /// <returns></returns> public static bool ReadFromDb() { DataTable dt = null; try { dt = SqlHelper.GetInstance(ConfigProxy.ConnectionString).ExecuteDataTable(ConfigProxy.SelectSQL); } catch (Exception ex) { Console.WriteLine("读取数据库失败" + ex.ToString()); return(false); } try { for (int i = 0; i < dt.Rows.Count; i++) { if (i % 100 == 0) { Console.WriteLine("正在处理第" + i + "数据"); } InputItem item = new InputItem(); item.UserContent = dt.Rows[i][0] == null ? string.Empty : dt.Rows[i][0].ToString().Trim(); item.BizName = dt.Rows[i][1] == null ? string.Empty : dt.Rows[i][1].ToString().Trim(); item.OperaName = dt.Rows[i][2] == null ? string.Empty : dt.Rows[i][2].ToString().Trim(); //短信总数加1 SumCount++; if (item.IsRec) { //短信内容已经识别 RecCount++; continue; } else { //未识别 RefuseCount++; } //保留预处理之前的短信 string temp = item.UserContent; //短信内容预处理 item.UserContent = SMSPreProc.PreProc(item.UserContent); #region 空短信 //空短信 if (string.IsNullOrEmpty(item.UserContent)) { EmptyCount++; EmptyList.Add(temp); continue; } #endregion #region 应该识别而没有识别的短信 //应该识别而没有识别 if (SMSProxy.DicItems.ContainsKey(item.UserContent)) { SMSCount++; //如果已经统计过,数目加1 if (SMSDic.ContainsKey(item.UserContent)) { SMSDic[item.UserContent]++; } else { SMSDic.Add(item.UserContent, 1); } SMSList.Add(temp); continue; } #endregion #region 长短信 int length = ConfigProxy.SMSMaxLen; if (temp.Length > length) { LongSMSCount++; LongSMSList.Add(temp); continue; } #endregion #region 单字短信 if (item.UserContent.Length <= 1) { DanziCount++; //加入预处理之前的短信内容 DanziList.Add(temp); if (DanziDic.ContainsKey(item.UserContent)) { DanziDic[item.UserContent]++; } else { DanziDic.Add(item.UserContent, 1); } continue; } #endregion #region 纯数字短信 if (TextCommonFunctions.IsNumber(item.UserContent)) { PureNumSMSCount++; PureNumList.Add(temp); if (PureNumDic.ContainsKey(item.UserContent)) { PureNumDic[item.UserContent]++; } else { PureNumDic.Add(item.UserContent, 1); } continue; } #endregion #region 完全乱码 if (TextCommonFunctions.IsFullGarbled(item.UserContent)) { FullGarbledCount++; //保留预处理之前的短信 FullGarbledList.Add(temp); if (FullGarbledDic.ContainsKey(item.UserContent)) { FullGarbledDic[item.UserContent]++; } else { FullGarbledDic.Add(item.UserContent, 1); } continue; } #endregion #region 出现在SMSRefuse.txt拒识表中的短信 if (SMSRefuseProxy.DicItems.ContainsKey(item.UserContent)) { SMSRefuseCount++; SMSRefuseList.Add(temp); if (SMSRefuseDic.ContainsKey(item.UserContent)) { SMSRefuseDic[item.UserContent]++; } else { SMSRefuseDic.Add(item.UserContent, 1); } continue; } #endregion #region 出现在Talking.txt中的短信 if (TalkingProxy.DicItems.ContainsKey(item.UserContent)) { SMSTalkingCount++; SMSTalkingList.Add(temp); if (SMSTalkingDic.ContainsKey(item.UserContent)) { SMSTalkingDic[item.UserContent]++; } else { SMSTalkingDic.Add(item.UserContent, 1); } continue; } #endregion #region 其它类型的短信,作为单条处理 OtherCount++; OtherList.Add(temp); if (OtherDic.ContainsKey(item.UserContent)) { OtherDic[item.UserContent]++; } else { OtherDic.Add(item.UserContent, 1); } #endregion } } catch (Exception ex) { Console.WriteLine(ex.ToString()); return(false); } return(true); }
/// <summary> /// 读取Excel数据 /// </summary> /// <returns></returns> public static bool ReadExcel() { Workbook workbook = null; Cells cells = null; try { workbook = new Workbook(); workbook.Open(ConfigProxy.InputFile); cells = workbook.Worksheets[0].Cells; } catch (Exception ex) { Console.WriteLine(ex); return(false); } try { //3列 第1列 用户短信 第二列 业务名 第三 操作名 for (int i = 1; i < cells.Rows.Count; i++) { if (i % 1000 == 0) { Console.WriteLine("正在处理第" + i + "数据"); } InputItem item = new InputItem(); item.UserContent = cells.Rows[i][0].Value == null ? string.Empty : cells.Rows[i][0].Value.ToString().Trim(); item.BizName = cells.Rows[i][1].Value == null ? string.Empty : cells.Rows[i][1].Value.ToString().Trim(); item.OperaName = cells.Rows[i][2].Value == null ? string.Empty : cells.Rows[i][2].Value.ToString().Trim(); //短信总数加1 SumCount++; if (item.IsRec) { //短信内容已经识别 RecCount++; continue; } else { //未识别 RefuseCount++; } //保留预处理之前的短信 string temp = item.UserContent; //短信内容预处理 item.UserContent = SMSPreProc.PreProc(item.UserContent); #region 空短信 //空短信 if (string.IsNullOrEmpty(item.UserContent)) { EmptyCount++; EmptyList.Add(temp); continue; } #endregion #region 应该识别而没有识别的短信 //应该识别而没有识别 if (SMSProxy.DicItems.ContainsKey(item.UserContent)) { SMSCount++; //如果已经统计过,数目加1 if (SMSDic.ContainsKey(item.UserContent)) { SMSDic[item.UserContent]++; } else { SMSDic.Add(item.UserContent, 1); } SMSList.Add(temp); continue; } #endregion #region 长短信 int length = ConfigProxy.SMSMaxLen; if (temp.Length > length) { LongSMSCount++; LongSMSList.Add(temp); continue; } #endregion #region 单字短信 if (item.UserContent.Length <= 1) { DanziCount++; //加入预处理之前的短信内容 DanziList.Add(temp); if (DanziDic.ContainsKey(item.UserContent)) { DanziDic[item.UserContent]++; } else { DanziDic.Add(item.UserContent, 1); } continue; } #endregion #region 纯数字短信 if (TextCommonFunctions.IsNumber(item.UserContent)) { PureNumSMSCount++; PureNumList.Add(temp); if (PureNumDic.ContainsKey(item.UserContent)) { PureNumDic[item.UserContent]++; } else { PureNumDic.Add(item.UserContent, 1); } continue; } #endregion #region 完全乱码 if (TextCommonFunctions.IsFullGarbled(item.UserContent)) { FullGarbledCount++; //保留预处理之前的短信 FullGarbledList.Add(temp); if (FullGarbledDic.ContainsKey(item.UserContent)) { FullGarbledDic[item.UserContent]++; } else { FullGarbledDic.Add(item.UserContent, 1); } continue; } #endregion #region 出现在SMSRefuse.txt拒识表中的短信 if (SMSRefuseProxy.DicItems.ContainsKey(item.UserContent)) { SMSRefuseCount++; SMSRefuseList.Add(temp); if (SMSRefuseDic.ContainsKey(item.UserContent)) { SMSRefuseDic[item.UserContent]++; } else { SMSRefuseDic.Add(item.UserContent, 1); } continue; } #endregion #region 出现在Talking.txt中的短信 if (TalkingProxy.DicItems.ContainsKey(item.UserContent)) { SMSTalkingCount++; SMSTalkingList.Add(temp); if (SMSTalkingDic.ContainsKey(item.UserContent)) { SMSTalkingDic[item.UserContent]++; } else { SMSTalkingDic.Add(item.UserContent, 1); } continue; } #endregion #region 其它类型的短信,作为单条处理 OtherCount++; OtherList.Add(temp); if (OtherDic.ContainsKey(item.UserContent)) { OtherDic[item.UserContent]++; } else { OtherDic.Add(item.UserContent, 1); } #endregion } } catch (Exception ex) { Console.WriteLine(ex); return(false); } return(true); }
static void Main(string[] args) { #region 获取配置文件 if (ConfigProxy.IsValid) { Console.WriteLine("获取配置文件成功"); } else { Console.WriteLine("获取配置文件失败,请检查配置文件"); return; } #endregion #region 加载资源文件 //初始化预处理工具 try { SMSPreProc.Init(ConfigProxy.Trad2Simp); Console.WriteLine("加载简繁体表文件成功"); } catch (Exception ex) { Console.WriteLine("加载繁简体表失败:" + ex.ToString()); return; } if (HanziProxy.LoadHanzi() && SMSProxy.LoadSMS() && TalkingProxy.LoadTalking() && SMSRefuseProxy.LoadSMSRefuse() ) { Console.WriteLine("加载资源文件成功"); } else { Console.WriteLine("加载资源文件失败,请检查资源文件"); return; } #endregion #region 进行数据处理 Console.WriteLine("开始读取数据源"); if (ConfigProxy.DataSource == "0") { if (ExcelFilter.ReadExcel()) { Console.WriteLine("读取文件成功"); //ExcelFilter.SaveAsExcel(); } else { Console.WriteLine("读取数据源Excel失败"); return; } } else if (ConfigProxy.DataSource == "1") { if (ExcelFilter.ReadFromDb()) { Console.WriteLine("读取文件成功"); //ExcelFilter.SaveAsExcel(); } else { Console.WriteLine("读取数据源db失败"); return; } } Console.WriteLine("开始保存处理结果"); if (ConfigProxy.IsOutPutToExcel()) { ExcelFilter.SaveAsExcel(); } else { ExcelFilter.SaveAsTxt(); } Console.WriteLine("处理结束"); Console.ReadKey(); #endregion }