Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
        }
Exemple #5
0
        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
        }