Exemplo n.º 1
0
        public void Run(IEnumerable <string> treeStrings)
        {
            var           trees         = treeStrings.Select(ts => TextTree.ReadFromString(ts));
            TreeCollector treeCollector = new TreeCollector();

            Run(trees, treeCollector);
        }
Exemplo n.º 2
0
        public static void Main(String[] args)
        {
            string filename = @"C:\Users\cbird\source\repos\TestDLL\Output\CMOrderedTreeMinerTextTrees2.cmtrees";

            var trees = new List <TextTree>();

            foreach (var line in File.ReadAllLines(filename))
            {
                var tree = TextTree.ReadFromString(line);
                trees.Add(tree);
            }


            var watch = Stopwatch.StartNew();

            var main = new Main();

            main.Support = 10;
            var treeCollector = new TreeCollector();

            main.Run(trees, treeCollector);

            Console.WriteLine($"elapsed time is {watch.Elapsed.TotalSeconds} seconds");
            Debug.WriteLine($"elapsed time is {watch.Elapsed.TotalSeconds} seconds");
            Console.ReadKey();
        }
        public GenericTree ConvertToGenericTree(TextTree tree)
        {
            var gTree = new GenericTree(tree.tid);

            gTree.root = ConvertToGenericNode(tree, 0);
            return(gTree);
        }
Exemplo n.º 4
0
        public static TextTree ReadFromString(string treeString)
        {
            int           total;
            Int32         temp;
            Stack <Int32> tempK = new Stack <Int32>();
            int           index = 0;

            TextTree tree  = new TextTree();
            var      array = treeString.Split(delimiters, StringSplitOptions.RemoveEmptyEntries).ToArray();

            tree.tid = array[index++];
            index++; // the transaction id is included twice.  who knows why...
            total = int.Parse(array[index++]);
            temp  = (Int32)LabelMapping[array[index++]];

            tree.vLabel.Add(temp);
            tree.firstChild.Add(-1);
            tree.nextSibling.Add(-1);
            tree.parent.Add(-1);
            tree.vNumber = 1;

            tempK.Push(0);

            for (int i = 0; i < total - 1; i++)
            {
                string label = array[index++];
                temp = (Int32)LabelMapping[label];
                if (label == "-1")
                {
                    tempK.Pop();
                    continue;
                }

                tree.vLabel.Add(temp);

                if (tree.firstChild[tempK.Peek()] == -1)
                {
                    tree.firstChild[tempK.Peek()] = tree.vNumber;
                }
                else
                {
                    Int32 j = tempK.Peek();
                    j = tree.firstChild[j];
                    while (tree.nextSibling[j] != -1)
                    {
                        j = tree.nextSibling[j];
                    }
                    tree.nextSibling[j] = tree.vNumber;
                }

                tree.firstChild.Add(-1);
                tree.nextSibling.Add(-1);
                tree.parent.Add(tempK.Peek());
                tempK.Push(tree.vNumber);
                tree.vNumber++;
            }
            return(tree);
        }
Exemplo n.º 5
0
 public void AddMaximalTree(TextTree tree, int support, IEnumerable <string> treeIDs)
 {
     if (TreeFilter(tree))
     {
         var clone = tree.Clone();
         clone.support = support;
         MaximalTrees.Add(new TreePatternMatches(clone, treeIDs));
     }
 }
        public TextTree ConvertToCMOrderedTreeMinerTree(ICommonTree tree)
        {
            ICommonTreeNode root = tree.Root;
            Int32           size = (Int32)TreeUtil.SizeOfTree(root);

            textTree = new TextTree(tree.SourceTag, size);

            lastIndex = -1;
            VisitChild(root);

            return(textTree);
        }
        public GenericNode ConvertToGenericNode(TextTree tree, int nodeIndex)
        {
            var node = new GenericNode(TextTree.LabelMapping[tree.vLabel[nodeIndex]]);

            int childIndex = tree.firstChild[nodeIndex];

            while (childIndex != -1)
            {
                node.AddChild(ConvertToGenericNode(tree, childIndex));
                childIndex = tree.nextSibling[childIndex];
            }
            return(node);
        }
Exemplo n.º 8
0
        public TextTree Clone()
        {
            var tree = new TextTree()
            {
                tid         = tid,
                vNumber     = vNumber,
                vLabel      = vLabel.Take(vNumber).ToList(),
                firstChild  = firstChild.Take(vNumber).ToList(),
                nextSibling = nextSibling.Take(vNumber).ToList(),
                parent      = parent.Take(vNumber).ToList(),
                support     = support
            };

            return(tree);
        }
Exemplo n.º 9
0
 public bool IsTreeInteresting(TextTree tree) => TreeFilter(tree);
Exemplo n.º 10
0
 internal TextTreeNode(TextTree tree, int index)
 {
     Tree  = tree;
     Index = index;
 }