public Loader(string path) { _reader = new StreamReader(path, Encoding.UTF8); DataLayer = new ExplicitLayer(); Console.WriteLine("Counting lines: " + path); var lineCount = 0; var edges = new HashSet <string>(); var myInterning = new Dictionary <string, string>(); while (!_reader.EndOfStream) { var line = _reader.ReadLine(); ++lineCount; } _reader.BaseStream.Seek(0, SeekOrigin.Begin); Console.WriteLine("Loading graph(" + lineCount + "): " + path); var lastPercent = 0; var lineIndex = 0; while (!_reader.EndOfStream) { var line = _reader.ReadLine(); var parts = split(line); var source = intern(parts[0]); var edge = intern(parts[1]); var target = intern(parts[2]); var sourceNode = GraphLayerBase.CreateReference(source); var targetNode = GraphLayerBase.CreateReference(target); _nodes.Add(sourceNode); _nodes.Add(targetNode); DataLayer.AddEdge(sourceNode, edge, targetNode); UtteranceParser.RegisterEntity(target); ++lineIndex; var currentPercent = 100 * lineIndex / lineCount; if (currentPercent != lastPercent) { GC.Collect(); Console.WriteLine(currentPercent); lastPercent = currentPercent; } } }
private NodeReference N(string name) { UtteranceParser.RegisterEntity(name); return(GraphLayerBase.CreateReference(name)); }