public AnalyzeContext()
        {
            _ID = 0;
            _TargetRelationTypeID                    = 0;
            _TargetRelationDependentTypeIDs          = new List <int>();
            _AnalyzeRelationTimeFactor               = 0;
            _AnalyzeRelationTypeFactor               = 1;
            _AnalyzeRelationCountFactor              = 0.1;
            _FinalScoreNormalizationMergeCountFactor = 0.3;
            _FinalScoreNormalizationMergeValueFactor = 0.8;
            _FinalScoreDevideByPathLength            = true;

            _Relations                 = new List <AnalyzeConfigRelation>();
            _SelectionCounts           = new List <AnalyzeConfigSelectionCount>();
            _Recommends                = new List <AnalyzeConfigLimitFilterItem>();
            ConsiderRecommendsAsFilter = false;
            TimeDependence             = AnalyzeConfigTimeDependence.Independent;
            MergeMode = AnalyzeConfigPathMergeMode.Maximum;
        }
Пример #2
0
        protected static AnalyzeContext _create_analyze_context(AnalyzeContextType contextType)
        {
            List <AnalyzeConfigLimitFilterItem> recommends      = new List <AnalyzeConfigLimitFilterItem>();
            List <AnalyzeConfigSelectionCount>  selectionCounts = new List <AnalyzeConfigSelectionCount>();
            List <AnalyzeConfigRelation>        relations       = new List <AnalyzeConfigRelation>();
            AnalyzeConfigTimeDependence         timeDependence  = AnalyzeConfigTimeDependence.Independent;
            double     timeFactor                     = 0;
            int        targetRelationTypeId           = 0;
            List <int> targetRelationDependentTypeIDs = new List <int>();

            switch (contextType)
            {
            case AnalyzeContextType.Node2Node:
                recommends.Add(new AnalyzeConfigLimitFilterItem()
                {
                    EntityTypeID            = (int)AnalyzeEntityType.Node,
                    RecommendedEntityTypeID = (int)AnalyzeEntityType.Node
                });

                selectionCounts.Add(new AnalyzeConfigSelectionCount()
                {
                    EntityTypeID   = (int)AnalyzeEntityType.Node,
                    SelectionCount = 100
                });

                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.15
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.15
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.3
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.3
                });

                timeDependence = AnalyzeConfigTimeDependence.Independent;
                timeFactor     = 0;
                break;

            case AnalyzeContextType.Node2User:
                recommends.Add(new AnalyzeConfigLimitFilterItem()
                {
                    EntityTypeID            = (int)AnalyzeEntityType.Node,
                    RecommendedEntityTypeID = (int)AnalyzeEntityType.User
                });

                selectionCounts.Add(new AnalyzeConfigSelectionCount()
                {
                    EntityTypeID   = (int)AnalyzeEntityType.User,
                    SelectionCount = 100
                });

                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.5
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.5
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.6
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.7
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.7
                });

                timeDependence = AnalyzeConfigTimeDependence.HighlyDependent;
                timeFactor     = 2;
                break;

            case AnalyzeContextType.User2User:
                recommends.Add(new AnalyzeConfigLimitFilterItem()
                {
                    EntityTypeID            = (int)AnalyzeEntityType.User,
                    RecommendedEntityTypeID = (int)AnalyzeEntityType.User
                });

                selectionCounts.Add(new AnalyzeConfigSelectionCount()
                {
                    EntityTypeID   = (int)AnalyzeEntityType.User,
                    SelectionCount = 100
                });

                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert, Value = 0.5
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Expert + 1, Value = 0.5
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Friend + 1, Value = 0.8
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.IsA + 1, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.ItemVisit + 1, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeCreator + 1, Value = 0.2
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeLike + 1, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeMember + 1, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.NodeRelation + 1, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.Related + 1, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.TaggedItem + 1, Value = 0
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.UsedAsTag + 1, Value = 0.4
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange, Value = 0.5
                });
                relations.Add(new AnalyzeConfigRelation()
                {
                    TypeID = (int)AnalyzeRelationType.WikiChange + 1, Value = 0.5
                });

                timeDependence = AnalyzeConfigTimeDependence.LowlyDependent;
                timeFactor     = 1;

                targetRelationTypeId = (int)AnalyzeRelationType.Friend;
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.ItemVisit);
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.ItemVisit + 1);
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.TaggedItem);
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.TaggedItem + 1);
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.UsedAsTag);
                targetRelationDependentTypeIDs.Add((int)AnalyzeRelationType.UsedAsTag + 1);
                break;
            }

            return(new AnalyzeContext()
            {
                ID = (int)contextType,
                Relations = relations,
                SelectionCounts = selectionCounts,
                ConsiderRecommendsAsFilter = false,
                Recommends = recommends,
                TargetRelationTypeID = targetRelationTypeId,
                TargetRelationDependentTypeIDs = targetRelationDependentTypeIDs,
                TimeDependence = timeDependence,
                AnalyzeRelationTimeFactor = timeFactor
            });
        }