private EntityInfo entityInfo(FreebaseEntry entity)
        {
            var db = _linker.GetDb();

            var entityInfo = db.GetEntityInfoFromMid(FreebaseDbProvider.GetMid(entity.Id));

            return(entityInfo);
        }
Пример #2
0
        internal void Train(IEnumerable <string> ngrams, string correctAnswer)
        {
            string strongestNgram = null;
            string preBadNgram    = null;
            var    bestNgramScore = 0.0;

            foreach (var ngram in ngrams)
            {
                var docs = Db.GetScoredDocs(ngram);
                if (!docs.Any())
                {
                    //nothing found for the ngram
                    continue;
                }

                var bestDoc = docs.First();
                var id      = Db.GetMid(bestDoc);
                if (id == correctAnswer)
                {
                    //the ngram is helpful
                    if (bestDoc.Score > bestNgramScore)
                    {
                        strongestNgram = ngram;
                        bestNgramScore = bestDoc.Score;
                    }
                }
                else
                {
                    int count;
                    _badNgramCounts.TryGetValue(ngram, out count);
                    _badNgramCounts[ngram] = count + 1;

                    if (preBadNgram != null)
                    {
                        _preBadNgramCounts.TryGetValue(preBadNgram, out count);
                        _preBadNgramCounts[preBadNgram] = count + 1;
                    }
                }
                preBadNgram = ngram;
            }

            var orderedNgrams = ngrams.ToArray();

            for (var i = 1; i < orderedNgrams.Length; ++i)
            {
                if (orderedNgrams[i] == strongestNgram)
                {
                    var preNgram = orderedNgrams[i - 1];
                    int value;
                    _leadingNgramCounts.TryGetValue(preNgram, out value);
                    _leadingNgramCounts[preNgram] = value + 1;
                    break;
                }
            }
        }
Пример #3
0
        internal static void DebugInfo(PathSubstitution substitution)
        {
            var db = Configuration.Db;

            Console.WriteLine("Substitution trace: " + substitution.OriginalTrace.ToString());
            Console.WriteLine("Rank: " + substitution.Rank);
            Console.WriteLine("Substitution node: {0} ({1})", db.GetLabel(FreebaseDbProvider.GetMid(substitution.Substitution.Data)), substitution.Substitution);
            foreach (var node in substitution.OriginalTrace.CurrentNodes.Take(20))
            {
                Console.WriteLine("\t{0} ({1})", db.GetLabel(FreebaseDbProvider.GetMid(node.Data)), node);
            }
        }
Пример #4
0
        private static void printInfo(ComposedGraph graph, FreebaseDbProvider db, params string[] ids)
        {
            foreach (var id in ids)
            {
                var mid = FreebaseDbProvider.GetMid(id);

                var label       = db.GetLabel(mid);
                var description = db.GetDescription(mid);

                Console.WriteLine(id + " " + label);
                Console.WriteLine("\t" + description);
                Console.WriteLine();
            }
        }
Пример #5
0
        private static ComposedGraph cachedEntityGraph(SimpleQuestionDumpProcessor simpleQuestions, QuestionDialog[] trainDialogs, LinkedUtterance[] linkedUtterances)
        {
            return(ComputationCache.Load("knowledge_all_train", 1, () =>
            {
                var trainEntities = getQAEntities(trainDialogs, linkedUtterances);
                //var layer = simpleQuestions.GetLayerFromIds(trainEntities);

                foreach (var entityId in trainEntities)
                {
                    simpleQuestions.AddTargetMid(FreebaseDbProvider.GetMid(entityId));
                }
                simpleQuestions.RunIteration();
                var layer = simpleQuestions.GetLayerFromIds(simpleQuestions.AllIds);
                var graph = new ComposedGraph(layer);
                return graph;
            }));
        }