Пример #1
0
 def initialize() -> None:
     if (OrgGlobal.GLOBAL_ORGS is not None): 
         return
     OrgGlobal.GLOBAL_ORGS = IntOntologyCollection()
     org0_ = None
     oi = None
     with ProcessorService.create_empty_processor() as geo_proc: 
         geo_proc.add_analyzer(GeoAnalyzer())
         geos = dict()
         for k in range(3):
             lang = (MorphLang.RU if k == 0 else (MorphLang.EN if k == 1 else MorphLang.UA))
             name = ("Orgs_ru.dat" if k == 0 else ("Orgs_en.dat" if k == 1 else "Orgs_ua.dat"))
             dat = PullentiNerOrgInternalResourceHelper.get_bytes(name)
             if (dat is None): 
                 raise Utils.newException("Can't file resource file {0} in Organization analyzer".format(name), None)
             with MemoryStream(OrgItemTypeToken._deflate(dat)) as tmp: 
                 tmp.position = 0
                 xml0_ = None # new XmlDocument
                 xml0_ = Utils.parseXmlFromStream(tmp)
                 for x in xml0_.getroot(): 
                     org0_ = OrganizationReferent()
                     abbr = None
                     for xx in x: 
                         if (Utils.getXmlLocalName(xx) == "typ"): 
                             org0_.add_slot(OrganizationReferent.ATTR_TYPE, Utils.getXmlInnerText(xx), False, 0)
                         elif (Utils.getXmlLocalName(xx) == "nam"): 
                             org0_.add_slot(OrganizationReferent.ATTR_NAME, Utils.getXmlInnerText(xx), False, 0)
                         elif (Utils.getXmlLocalName(xx) == "epo"): 
                             org0_.add_slot(OrganizationReferent.ATTR_EPONYM, Utils.getXmlInnerText(xx), False, 0)
                         elif (Utils.getXmlLocalName(xx) == "prof"): 
                             org0_.add_slot(OrganizationReferent.ATTR_PROFILE, Utils.getXmlInnerText(xx), False, 0)
                         elif (Utils.getXmlLocalName(xx) == "abbr"): 
                             abbr = Utils.getXmlInnerText(xx)
                         elif (Utils.getXmlLocalName(xx) == "geo"): 
                             geo_ = None
                             wrapgeo1767 = RefOutArgWrapper(None)
                             inoutres1768 = Utils.tryGetValue(geos, Utils.getXmlInnerText(xx), wrapgeo1767)
                             geo_ = wrapgeo1767.value
                             if (not inoutres1768): 
                                 ar = geo_proc.process(SourceOfAnalysis(Utils.getXmlInnerText(xx)), None, lang)
                                 if (ar is not None and len(ar.entities) == 1 and (isinstance(ar.entities[0], GeoReferent))): 
                                     geo_ = (Utils.asObjectOrNull(ar.entities[0], GeoReferent))
                                     geos[Utils.getXmlInnerText(xx)] = geo_
                                 else: 
                                     pass
                             if (geo_ is not None): 
                                 org0_.add_slot(OrganizationReferent.ATTR_GEO, geo_, False, 0)
                     oi = org0_.create_ontology_item_ex(2, True, True)
                     if (oi is None): 
                         continue
                     if (abbr is not None): 
                         oi.termins.append(Termin(abbr, None, True))
                     if (k == 2): 
                         OrgGlobal.GLOBAL_ORGS_UA.add_item(oi)
                     else: 
                         OrgGlobal.GLOBAL_ORGS.add_item(oi)
     return
class AnalyzerDataWithOntology(AnalyzerData):
    # Данные, полученные в ходе обработки, причём с поддержкой механизма онтологий

    def __init__(self) -> None:
        super().__init__()
        self.local_ontology = IntOntologyCollection()

    def register_referent(self, referent: 'Referent') -> 'Referent':
        res = None
        li = self.local_ontology.try_attach_by_referent(referent, None, True)
        if (li is not None):
            for i in range(len(li) - 1, -1, -1):
                if (li[i].can_be_general_for(referent)
                        or referent.can_be_general_for(li[i])):
                    del li[i]
        if (li is not None and len(li) > 0):
            res = li[0]
            if (res != referent):
                res.merge_slots(referent, True)
            if (len(li) > 1 and self.kit is not None):
                i = 1
                while i < len(li):
                    li[0].merge_slots(li[i], True)
                    for ta in li[i].occurrence:
                        li[0].add_occurence(ta)
                    self.kit.replace_referent(li[i], li[0])
                    self.local_ontology.remove(li[i])
                    i += 1
            if (res._m_ext_referents is not None):
                res = super().register_referent(res)
            self.local_ontology.add_referent(res)
            return res
        res = super().register_referent(referent)
        if (res is None):
            return None
        self.local_ontology.add_referent(res)
        return res

    def remove_referent(self, r: 'Referent') -> None:
        self.local_ontology.remove(r)
        super().remove_referent(r)
Пример #3
0
 def __initHash(self) -> None:
     self.__m_hash = dict()
     for it in self.items: 
         if (it.referent is not None): 
             it.referent.ontology_items = (None)
     for it in self.items: 
         if (it.referent is not None): 
             wrapont2650 = RefOutArgWrapper(None)
             inoutres2651 = Utils.tryGetValue(self.__m_hash, it.referent.type_name, wrapont2650)
             ont = wrapont2650.value
             if (not inoutres2651): 
                 ont = IntOntologyCollection._new2649(True)
                 self.__m_hash[it.referent.type_name] = ont
             if (it.referent.ontology_items is None): 
                 it.referent.ontology_items = list()
             it.referent.ontology_items.append(it)
             it.referent._int_ontology_item = (None)
             ont.addReferent(it.referent)
Пример #4
0
 def __init__(self) -> None:
     super().__init__()
     self.local_ontology = IntOntologyCollection()
Пример #5
0
 def _static_ctor():
     OrgGlobal.GLOBAL_ORGS_UA = IntOntologyCollection()