Esempio n. 1
0
        // Получить данные, полученные в настоящий момент конкретным анализатором
        public AnalyzerData GetAnalyzerData(Pullenti.Ner.Analyzer analyzer)
        {
            if (analyzer == null || analyzer.Name == null)
            {
                return(null);
            }
            AnalyzerData d;

            if (m_Datas.TryGetValue(analyzer.Name, out d))
            {
                d.Kit = this;
                return(d);
            }
            AnalyzerData defaultData = analyzer.CreateAnalyzerData();

            if (defaultData == null)
            {
                return(null);
            }
            if (analyzer.PersistReferentsRegim)
            {
                if (analyzer.PersistAnalizerData == null)
                {
                    analyzer.PersistAnalizerData = defaultData;
                }
                else
                {
                    defaultData = analyzer.PersistAnalizerData;
                }
            }
            m_Datas.Add(analyzer.Name, defaultData);
            defaultData.Kit = this;
            return(defaultData);
        }
Esempio n. 2
0
 /// <summary>
 /// Попытаться выделить с заданного токена сущность указанным анализатором.
 /// Используется, если нужно "забежать вперёд" и проверить гипотезу, есть ли тут сущность конкретного типа или нет.
 /// </summary>
 /// <param name="analyzerName">имя анализатора</param>
 /// <param name="t">токен, с которого попробовать выделение</param>
 /// <return>метатокен с сущностью ReferentToken или null. Отметим, что сущность не сохранена и полученный метатокен никуда не встроен.</return>
 public Pullenti.Ner.ReferentToken ProcessReferent(string analyzerName, Pullenti.Ner.Token t)
 {
     if (Processor == null)
     {
         return(null);
     }
     if (m_AnalyzerStack.Contains(analyzerName))
     {
         return(null);
     }
     if (IsRecurceOverflow)
     {
         return(null);
     }
     Pullenti.Ner.Analyzer a = Processor.FindAnalyzer(analyzerName);
     if (a == null)
     {
         return(null);
     }
     RecurseLevel++;
     m_AnalyzerStack.Add(analyzerName);
     Pullenti.Ner.ReferentToken res = a.ProcessReferent(t, null);
     m_AnalyzerStack.Remove(analyzerName);
     RecurseLevel--;
     return(res);
 }
Esempio n. 3
0
 /// <summary>
 /// Получить данные, полученные в настоящий момент конкретным анализатором
 /// </summary>
 /// <param name="analyzerName">имя анализатора</param>
 /// <return>связанные с ним данные</return>
 public AnalyzerData GetAnalyzerDataByAnalyzerName(string analyzerName)
 {
     Pullenti.Ner.Analyzer a = Processor.FindAnalyzer(analyzerName);
     if (a == null)
     {
         return(null);
     }
     return(this.GetAnalyzerData(a));
 }