Пример #1
0
        static void Main(string[] args)
        {
            var model = new BocModel();

            if (args[0] == "-b")
            {
                var root = new VectorNode();

                while (true)
                {
                    Console.WriteLine("enter word:");

                    var command = Console.ReadLine();

                    if (string.IsNullOrWhiteSpace(command))
                    {
                        break;
                    }

                    GraphBuilder.Add(root, new VectorNode(model.Tokenize(command).Embeddings[0]), model);
                }

                Console.WriteLine(root.Visualize());

                while (true)
                {
                    Console.WriteLine("enter query:");

                    var command = Console.ReadLine();

                    if (string.IsNullOrWhiteSpace(command))
                    {
                        break;
                    }

                    var hit = PathFinder.ClosestMatch(root, model.Tokenize(command).Embeddings[0], model);

                    Console.WriteLine($"{hit.Score} {hit.Node}");
                }
            }
            else
            {
                var doc1 = new VectorNode(model.Tokenize(args[0]).Embeddings[0]);

                var doc2  = new VectorNode(model.Tokenize(args[1]).Embeddings[0]);
                var angle = model.CosAngle(doc1.Vector, doc2.Vector);
                Console.WriteLine($"similarity: {angle}");
            }
        }
Пример #2
0
        private static void RunInteractiveGraphBuilder(IStringModel model)
        {
            var root = new VectorNode();

            while (true)
            {
                Console.WriteLine("enter text:");

                var command = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(command))
                {
                    break;
                }

                var node = new VectorNode(model.Tokenize(command.ToCharArray()).First());

                GraphBuilder.MergeOrAdd(root, node, model, model.FoldAngle, model.IdenticalAngle);
            }

            Console.WriteLine(root.Visualize());

            while (true)
            {
                Console.WriteLine("enter query:");

                var command = Console.ReadLine();

                if (string.IsNullOrWhiteSpace(command))
                {
                    break;
                }

                var hit = PathFinder.ClosestMatch(root, model.Tokenize(command.ToCharArray()).First(), model);

                Console.WriteLine($"{hit.Score} {hit.Node}");
            }
        }