示例#1
0
        public void AddNode(string Word)
        {
            NodePointer = RootNode;
            int EditDistance = SpellChecker.FindMinEditDistance(NodePointer.Word, Word);

            while (NodePointer.ContainsDistance(EditDistance))
            {
                NodePointer  = NodePointer.Children[EditDistance];
                EditDistance = SpellChecker.FindMinEditDistance(NodePointer.Word, Word);
            }
            NodePointer.AddChildNode(EditDistance, Word);
        }
示例#2
0
        private void Perform(BKTreeNode NodePointer)
        {
            if (NodePointer.Children == null)
            {
                return;
            }

            foreach (var child in NodePointer.Children)
            {
                //Console.WriteLine($"{NodePointer.Word} {NodePointer.ChildrenAmount}");
                Console.WriteLine($"{NodePointer.Word}->{child.Value.Word} LD: {child.Key}");
            }
            foreach (var child in NodePointer.Children)
            {
                Perform(child.Value);
            }
        }
示例#3
0
        private void Search(BKTreeNode NodePointer, Dictionary <string, int> Matches,
                            string Word, int accuracy)
        {
            int EditDistance = SpellChecker.FindMinEditDistance(NodePointer.Word, Word);
            int leftBorder   = EditDistance - accuracy;
            int rightBorder  = EditDistance + accuracy;

            if (EditDistance <= accuracy)
            {
                Matches.Add(NodePointer.Word, EditDistance);
            }

            if (NodePointer.Children != null)
            {
                foreach (var Child in  NodePointer.Children)
                {
                    if (Child.Key >= leftBorder && Child.Key <= rightBorder)
                    {
                        Search(Child.Value, Matches, Word, accuracy);
                    }
                }
            }
        }
示例#4
0
 public BK_Tree(string RootWord)
 {
     RootNode    = new BKTreeNode(RootWord);
     NodePointer = RootNode;
 }