// Получить данные, полученные в настоящий момент конкретным анализатором 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); }
/// <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); }
/// <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)); }