//更新当天网页的平均停留时间(隔一定时间分析一次) public static void AnalysisONB_StaySecond() { long lStaySecond = default(long); foreach (KeyValuePair <string, long> item in dic_Url_StaySecond) { lStaySecond = +item.Value; } lStaySecond = (long)lStaySecond / dic_Url_StaySecond.Count; if (lStaySecond <= 10) //≤10秒 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_A); } else if ((lStaySecond > 10) && (lStaySecond <= 30)) //10秒—30秒 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_B); } else if ((lStaySecond > 30) && (lStaySecond <= 60)) //30秒—1分钟 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_C); } else if ((lStaySecond > 60) && (lStaySecond <= 120)) //1—2分钟 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_D); } else if ((lStaySecond > 120) && (lStaySecond <= 300)) //2—5分钟 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_E); } else if (lStaySecond > 300) //>5分钟 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StaySecond(RadioSelectionCategory.RadioSelected_F); } }
//浏览器关闭的时候进行统计分析 //当天的网络浏览时间(第一条记录和最后一条记录的时间差) public static void AnalysisOnlineTime() { //计算今天的网络浏览时间 string strMinDateTime = dic_Url_FirstTime.First().Value; //网络浏览的开启时间 DateTime BeginningDate = DateTime.Parse(strMinDateTime); //转化为DateTime类型 TimeSpan ts = DateTime.Now.Subtract(BeginningDate); //计算时间间隔 int iHourSpan = ts.Hours + 1; Int16 iWeek = Convert.ToInt16(DateTime.Now.DayOfWeek); //计算礼拜 if ((iWeek == 0) || (iWeek == 6)) //周六 周日 { if (iHourSpan <= 3) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_A); } else if ((iHourSpan > 3) && (iHourSpan <= 4)) //3 < iHourSpan <= 4 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_B); } else if ((iHourSpan > 4) && (iHourSpan <= 6)) //4 < iHourSpan <= 6 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_C); } else if ((iHourSpan > 6) && (iHourSpan <= 9)) //6 < iHourSpan <= 9 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_D); } else if ((iHourSpan > 9) && (iHourSpan <= 12)) //9 < iHourSpan <= 12 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_E); } else if (iHourSpan > 12) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_Weekend(RadioSelectionCategory.RadioSelected_F); } } else //周一 到 周五 { if (iHourSpan <= 2) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_WorkDay(RadioSelectionCategory.RadioSelected_A); } else if ((iHourSpan > 2) && (iHourSpan <= 6)) // 2 < iHourSpan <= 6 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_WorkDay(RadioSelectionCategory.RadioSelected_B); } else if ((iHourSpan > 6) && (iHourSpan <= 10)) //6 < iHourSpan <= 10 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_WorkDay(RadioSelectionCategory.RadioSelected_C); } else if ((iHourSpan > 10) && (iHourSpan <= 12)) //10 < iHourSpan <= 12 { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_WorkDay(RadioSelectionCategory.RadioSelected_D); } else if (iHourSpan > 12) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_WorkDay(RadioSelectionCategory.RadioSelected_E); } } }
private static void EmotionCategoryFrequencyRating(double dFrequency, EmotionClassify emotion) { double dNeverVisited = 0.05; //从未访问过 double dFewerVisited = 0.10; //很少访问 double dSometimesVisited = 0.20; //有时候访问 double dAlwaysVisited = 0.30; //经常访问 if (dFrequency <= dNeverVisited) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PAN_EmotionClassify(emotion, RadioSelectionCategory.RadioSelected_A); } else if ((dFrequency > dNeverVisited) && (dFrequency <= dFewerVisited)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PAN_EmotionClassify(emotion, RadioSelectionCategory.RadioSelected_B); } else if ((dFrequency > dFewerVisited) && (dFrequency <= dSometimesVisited)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PAN_EmotionClassify(emotion, RadioSelectionCategory.RadioSelected_C); } else if ((dFrequency > dSometimesVisited) && (dFrequency <= dAlwaysVisited)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PAN_EmotionClassify(emotion, RadioSelectionCategory.RadioSelected_D); } else if (dFrequency > dAlwaysVisited) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PAN_EmotionClassify(emotion, RadioSelectionCategory.RadioSelected_E); } }
private static void InitalBehaviorFeatures() { string strFileName = "BehaviorFeatures.xml"; //用户的行为问卷结果? BehaviorFeatureAnalysis.LoadBehaviorFeatureFromXML(strFileName); string strEmotionHistory = "EmotionPredictionsHistory"; Recommendation.LoadEmotionPredictionsHistory(strEmotionHistory);//加载心理分析结果 string fileName2 = "BehaviorFeaturesHistory.xml"; BehaviorFeatureHistoryAnalysis.LoadBehaviorFeatureHistoryAnalysis(fileName2); }
/// <summary> /// 更新心理预测记录 /// </summary> public static void UpdateEmotionPredictionsHistory()//这个函数是用来更新EmotionTracking里pointlist,从来来更新图标的内容。现在我把phi值换成了bar图(原来是曲线图)。 { long lPredictionTime = DateTime.Now.ToBinary(); double xAxis = (double)new XDate(DateTime.FromBinary(lPredictionTime)); double dANX = BehaviorFeatureAnalysis.Calc_ANX_Prediction_Value(); dic_ANX_Predictions.Add(lPredictionTime, dANX); EmotionTracking.ANXValueList.Add(xAxis, dANX); double dDEP = BehaviorFeatureAnalysis.Calc_DEP_Prediction_Value(); dic_DEP_Predictions.Add(lPredictionTime, dDEP); EmotionTracking.DEPValueList.Add(xAxis, dDEP); double dHMA = BehaviorFeatureAnalysis.Calc_HMA_Prediction_Value(); dic_HMA_Predictions.Add(lPredictionTime, dHMA); EmotionTracking.HMAValueList.Add(xAxis, dHMA); double dHYP = BehaviorFeatureAnalysis.Calc_HYP_Prediction_Value(); dic_HYP_Predictions.Add(lPredictionTime, dHYP); EmotionTracking.HYPValueList.Add(xAxis, dHYP); double dPSD = BehaviorFeatureAnalysis.Calc_PSD_Prediction_Value(); dic_PSD_Predictions.Add(lPredictionTime, dPSD); EmotionTracking.PSDValueList.Add(xAxis, dPSD); double dSOM = BehaviorFeatureAnalysis.Calc_SOM_Prediction_Value(); dic_SOM_Predictions.Add(lPredictionTime, dSOM); EmotionTracking.SOMValueList.Add(xAxis, dSOM); double dUNR = BehaviorFeatureAnalysis.Calc_UNR_Prediction_Value(); dic_UNR_Predictions.Add(lPredictionTime, dUNR); EmotionTracking.UNRValueList.Add(xAxis, dUNR); }
/// <summary> /// 更新心理预测记录 /// </summary> public static void UpdateBehaviorFeatureHistory()//更新EmotionTracking里面的行为特征值(也就是曲线数据),其实就是要从BehaviorFeaturesHistory.xml里取出最新的record,然后加载到EmotionTracking里的pointlist里 { long lPredictionTime = DateTime.Now.ToBinary(); double xAxis = (double)new XDate(DateTime.FromBinary(lPredictionTime)); double dANX = BehaviorFeatureAnalysis.Calc_ANX_Prediction_Value(); dic_ANX_Predictions.Add(lPredictionTime, dANX); EmotionTracking.ANXValueList.Add(xAxis, dANX); double dDEP = BehaviorFeatureAnalysis.Calc_DEP_Prediction_Value(); dic_DEP_Predictions.Add(lPredictionTime, dDEP); EmotionTracking.DEPValueList.Add(xAxis, dDEP); double dHMA = BehaviorFeatureAnalysis.Calc_HMA_Prediction_Value(); dic_HMA_Predictions.Add(lPredictionTime, dHMA); EmotionTracking.HMAValueList.Add(xAxis, dHMA); double dHYP = BehaviorFeatureAnalysis.Calc_HYP_Prediction_Value(); dic_HYP_Predictions.Add(lPredictionTime, dHYP); EmotionTracking.HYPValueList.Add(xAxis, dHYP); double dPSD = BehaviorFeatureAnalysis.Calc_PSD_Prediction_Value(); dic_PSD_Predictions.Add(lPredictionTime, dPSD); EmotionTracking.PSDValueList.Add(xAxis, dPSD); double dSOM = BehaviorFeatureAnalysis.Calc_SOM_Prediction_Value(); dic_SOM_Predictions.Add(lPredictionTime, dSOM); EmotionTracking.SOMValueList.Add(xAxis, dSOM); double dUNR = BehaviorFeatureAnalysis.Calc_UNR_Prediction_Value(); dic_UNR_Predictions.Add(lPredictionTime, dUNR); EmotionTracking.UNRValueList.Add(xAxis, dUNR); }
private static void ContentCategoryFrequencyRating(double dFrequency, ContentClassify content) { double dFewerVisited = 0.10; //很少访问 double dSometimesVisited = 0.20; //有时候访问 double dAlwaysVisited = 0.30; //经常访问 if (dFrequency <= dFewerVisited) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PTN_ContentClassify(content, RadioSelectionCategory.RadioSelected_A); } else if ((dFrequency > dFewerVisited) && (dFrequency <= dSometimesVisited)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PTN_ContentClassify(content, RadioSelectionCategory.RadioSelected_B); } else if ((dFrequency > dSometimesVisited) && (dFrequency <= dAlwaysVisited)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PTN_ContentClassify(content, RadioSelectionCategory.RadioSelected_C); } else if (dFrequency > dAlwaysVisited) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_PTN_ContentClassify(content, RadioSelectionCategory.RadioSelected_D); } }
//分析每天的上网时段:每天的起始上网时间在哪个时段 (一天分析一次即可) public static void AnalysisONB_StartTime() { //计算当天的开始浏览网络的时段 string strMinDateTime = dic_Url_FirstTime.First().Value; //网络浏览的开启时间 DateTime BeginningDate = DateTime.Parse(strMinDateTime); //转化为DateTime类型 int iHour = BeginningDate.Hour; if (iHour < 9) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_A); } else if ((iHour >= 9) && (iHour < 12)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_B); } else if ((iHour >= 12) && (iHour < 14)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_C); } else if ((iHour >= 14) && (iHour < 18)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_D); } else if ((iHour >= 18) && (iHour < 19)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_E); } else if ((iHour >= 19) && (iHour < 23)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_F); } else if ((iHour >= 23) && (iHour < 24)) { BehaviorFeatureAnalysis.UpdateBehaviorFeature_ONB_StartTime(RadioSelectionCategory.RadioSelected_G); } }