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}"); } }
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}"); } }