Beispiel #1
0
 public void Close()
 {
     _CoreferenceResolver = null;
     if (_LinguisticsKernelConroller != null)
     {
         _LinguisticsKernelConroller.Dispose();
         _LinguisticsKernelConroller = null;
     }
 }
        private static void WorkThreadRoutine()
        {
//System.Diagnostics.Debugger.Break();
            _LinguisticsKernelConroller = new LinguisticsKernelConroller();

            while (!_StopEvent.WaitOne(1000))
            {
                long sizeInMB = Process.GetCurrentProcess().VirtualMemorySize64 / (1024 * 1024);
                if (sizeInMB > Config.Default.MaxProcessorVirtualMemoryInMB)
                {
                    LOG.GetLogger().FatalFormat("ProcID={0} закрыт из-за перерасхода памяти", Process.GetCurrentProcess().Id);
                    break;
                }
            }
            _LinguisticsKernelConroller.Close();
        }
Beispiel #3
0
 public LingvisticsWorkInProcessor(bool useCoreferenceResolution, bool useGeoNamesDictionary, int maxEntityLength)
 {
     _CoreferenceResolver        = (useCoreferenceResolution) ? new CoreferenceResolver() : null;
     _LinguisticsKernelConroller = new LinguisticsKernelConroller(useGeoNamesDictionary, maxEntityLength);
 }
Beispiel #4
0
        private static ThemeItem[] GetThemeList(XElement rdf, bool generateAllSubthemes, LinguisticsKernelConroller lkc)
        {
            var entList = rdf.Descendants(NodeName.ENTITY.ToString());

            if (!generateAllSubthemes)
            {
                entList = entList.Where(t => t.Parent.Name == NodeName.SUB_SENT.ToString());
            }

            return(entList.Select(xe =>
            {
                if (!lkc.IsTheme(xe))
                {
                    return (null);
                }
                EntityType entType;
                if (!Enum.TryParse(GetAttr(xe, BlockAttribute.TYPE), out entType))
                {
                    throw (new ApplicationException($"Неправильный семантический тип [{GetAttr( xe, BlockAttribute.TYPE )}]"));
                }
                var name = GetAttr(xe, BlockAttribute.FULLNAME);
                if (string.IsNullOrEmpty(name))
                {
                    name = GetAttr(xe, BlockAttribute.VALUE);
                }
                return (new { Name = name, Type = entType, Role = GetAttr(xe, BlockAttribute.ROLE) });
            }
                                  )
                   .Where(t => t != null)
                   .GroupBy(t => new { Name = t.Name.ToUpper(), Type = t.Type })
                   .Select((gr, idx) =>
            {
                var adj = EntityRole.Adj.ToString();
                var subj = EntityRole.Subj.ToString();
                var obj = EntityRole.Obj.ToString();
                var other = EntityRole.Other.ToString();
                return (new ThemeItem()
                {
                    ID = idx,
                    Name = gr.First().Name,
                    Type = gr.Key.Type,
                    FreqAdj = gr.Count(t => t.Role == adj),
                    FreqSubj = gr.Count(t => t.Role == subj),
                    FreqObj = gr.Count(t => t.Role == obj),
                    FreqOther = gr.Count(t => t.Role == other),
                });
            }
                           ).ToArray());
        }