// Заменить везде, где только возможно, старую сущность на новую (используется при объединении сущностей) public void ReplaceReferent(Pullenti.Ner.Referent oldReferent, Pullenti.Ner.Referent newReferent) { for (Pullenti.Ner.Token t = FirstToken; t != null; t = t.Next) { if (t is Pullenti.Ner.ReferentToken) { (t as Pullenti.Ner.ReferentToken).ReplaceReferent(oldReferent, newReferent); } } foreach (AnalyzerData d in m_Datas.Values) { foreach (Pullenti.Ner.Referent r in d.Referents) { foreach (Pullenti.Ner.Slot s in r.Slots) { if (s.Value == oldReferent) { r.UploadSlot(s, newReferent); } } } if (d.Referents.Contains(oldReferent)) { d.Referents.Remove(oldReferent); } } }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ) { DateRangeReferent dr = obj as DateRangeReferent; if (dr == null) { return(false); } if (DateFrom != null) { if (!DateFrom.CanBeEquals(dr.DateFrom, typ)) { return(false); } } else if (dr.DateFrom != null) { return(false); } if (DateTo != null) { if (!DateTo.CanBeEquals(dr.DateTo, typ)) { return(false); } } else if (dr.DateTo != null) { return(false); } return(true); }
static bool canBeRef(NamedEntityKind ki, Pullenti.Ner.Referent re) { if (re == null) { return(false); } if (ki == NamedEntityKind.Monument) { if (re.TypeName == "PERSON" || re.TypeName == "PERSONPROPERTY") { return(true); } } else if (ki == NamedEntityKind.Location) { if (re is Pullenti.Ner.Geo.GeoReferent) { Pullenti.Ner.Geo.GeoReferent geo = re as Pullenti.Ner.Geo.GeoReferent; if (geo.IsRegion || geo.IsState) { return(true); } } } else if (ki == NamedEntityKind.Building) { if (re.TypeName == "ORGANIZATION") { return(true); } } return(false); }
/// <summary> /// Проверка, что дата или диапазон определены с точностью до одного месяца /// </summary> public static bool IsMonthDefined(Pullenti.Ner.Referent obj) { DateReferent sd = obj as DateReferent; if (sd != null) { return(sd.Year > 0 && sd.Month > 0); } DateRangeReferent sdr = obj as DateRangeReferent; if (sdr != null) { if (sdr.DateFrom == null || sdr.DateTo == null) { return(false); } if (sdr.DateFrom.Year == 0 || sdr.DateTo.Year != sdr.DateFrom.Year) { return(false); } if (sdr.DateFrom.Month == 0 || sdr.DateTo.Month != sdr.DateFrom.Month) { return(false); } return(true); } return(false); }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ = Pullenti.Ner.Core.ReferentsEqualType.WithinOneText) { PersonIdentityReferent id = obj as PersonIdentityReferent; if (id == null) { return(false); } if (Typ != id.Typ) { return(false); } if (Number != id.Number) { return(false); } if (State != null && id.State != null) { if (State != id.State) { return(false); } } return(true); }
public override void MergeSlots(Pullenti.Ner.Referent obj, bool mergeStatistic = true) { base.MergeSlots(obj, mergeStatistic); List <TransportKind> kinds = new List <TransportKind>(); foreach (Pullenti.Ner.Slot s in Slots) { if (s.TypeName == ATTR_KIND) { TransportKind ki = this._getKind((string)s.Value); if (!kinds.Contains(ki)) { kinds.Add(ki); } } } if (kinds.Count > 0) { if (kinds.Contains(TransportKind.Space)) { for (int i = Slots.Count - 1; i >= 0; i--) { if (Slots[i].TypeName == ATTR_KIND && this._getKind((string)Slots[i].Value) != TransportKind.Space) { Slots.RemoveAt(i); } } } } }
/// <summary> /// Удалить сущность из списка /// </summary> /// <param name="r">удаляемая сущность</param> public virtual void RemoveReferent(Pullenti.Ner.Referent r) { if (m_Referents.Contains(r)) { m_Referents.Remove(r); } }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ = Pullenti.Ner.Core.ReferentsEqualType.WithinOneText) { BookLinkRefReferent r = obj as BookLinkRefReferent; if (r == null) { return(false); } if (Book != r.Book) { return(false); } if (Number != r.Number) { return(false); } if (Pages != r.Pages) { return(false); } if ((Typ == BookLinkRefType.Inline) != (r.Typ == BookLinkRefType.Inline)) { return(false); } return(true); }
public override string ToString(bool shortVariant, Pullenti.Morph.MorphLang lang, int lev = 0) { StringBuilder res = new StringBuilder(); string typ = this.GetStringValue(ATTR_TYPE); if (typ != null) { res.Append(typ); } string name = this.GetStringValue(ATTR_NAME); if (name != null) { if (res.Length > 0) { res.Append(' '); } res.Append(Pullenti.Ner.Core.MiscHelper.ConvertFirstCharUpperAndOtherLower(name)); } Pullenti.Ner.Referent re = this.GetSlotValue(ATTR_REF) as Pullenti.Ner.Referent; if (re != null) { if (res.Length > 0) { res.Append("; "); } res.Append(re.ToString(shortVariant, lang, lev + 1)); } return(res.ToString()); }
public override bool CanBeGeneralFor(Pullenti.Ner.Referent obj) { if (!this._canBeEqual(obj, Pullenti.Ner.Core.ReferentsEqualType.WithinOneText, true)) { return(false); } PhoneReferent ph = obj as PhoneReferent; if (CountryCode != null && ph.CountryCode == null) { return(false); } if (AddNumber == null) { if (ph.AddNumber != null) { return(true); } } else if (ph.AddNumber == null) { return(false); } if (Pullenti.Morph.LanguageHelper.EndsWith(ph.Number, Number)) { return(true); } return(false); }
public override void MergeSlots(Pullenti.Ner.Referent obj, bool mergeStatistic = true) { base.MergeSlots(obj, mergeStatistic); for (int i = 0; i < (Slots.Count - 1); i++) { for (int j = i + 1; j < Slots.Count; j++) { if (Slots[i].TypeName == Slots[j].TypeName && Slots[i].Value == Slots[j].Value) { Slots.RemoveAt(j); j--; } } } List <string> nums = this.GetStringValues(ATTR_NUMBER); if (nums.Count > 1) { nums.Sort(); for (int i = 0; i < (nums.Count - 1); i++) { if (nums[i + 1].StartsWith(nums[i]) && nums[i + 1].Length > nums[i].Length && !char.IsDigit(nums[i + 1][nums[i].Length])) { Pullenti.Ner.Slot s = this.FindSlot(ATTR_NUMBER, nums[i], true); if (s != null) { Slots.Remove(s); } nums.RemoveAt(i); i--; } } } }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ = Pullenti.Ner.Core.ReferentsEqualType.WithinOneText) { MoneyReferent s = obj as MoneyReferent; if (s == null) { return(false); } if (s.Currency != Currency) { return(false); } if (s.Value != Value) { return(false); } if (s.Rest != Rest) { return(false); } if (s.AltValue != AltValue) { return(false); } if (s.AltRest != AltRest) { return(false); } return(true); }
public override void MergeSlots(Pullenti.Ner.Referent obj, bool mergeStatistic = true) { string nam = Name; string nam1 = (obj as PersonPropertyReferent).Name; base.MergeSlots(obj, mergeStatistic); if (nam != nam1 && nam1 != null && nam != null) { Pullenti.Ner.Slot s = null; if (nam.StartsWith(nam1)) { s = this.FindSlot(ATTR_NAME, nam1, true); } else if (nam1.StartsWith(nam)) { s = this.FindSlot(ATTR_NAME, nam, true); } else if (m_Bosses0.Contains(nam) && m_Bosses1.Contains(nam1)) { s = this.FindSlot(ATTR_NAME, nam, true); } else if (m_Bosses0.Contains(nam1) && m_Bosses1.Contains(nam)) { s = this.FindSlot(ATTR_NAME, nam1, true); } if (s != null) { Slots.Remove(s); } } }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Person.PersonPropertyKind ki = Pullenti.Ner.Person.PersonPropertyKind.Undefined; if (obj is Pullenti.Ner.Person.PersonPropertyReferent) { ki = (obj as Pullenti.Ner.Person.PersonPropertyReferent).Kind; } if (ki == Pullenti.Ner.Person.PersonPropertyKind.Boss) { return(PersonPropBossImageId); } if (ki == Pullenti.Ner.Person.PersonPropertyKind.King) { return(PersonPropKingImageId); } if (ki == Pullenti.Ner.Person.PersonPropertyKind.Kin) { return(PersonPropKinImageId); } if (ki == Pullenti.Ner.Person.PersonPropertyKind.MilitaryRank) { return(PersonPropMilitaryId); } if (ki == Pullenti.Ner.Person.PersonPropertyKind.Nationality) { return(PersonPropNationId); } return(PersonPropImageId); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Geo.GeoReferent ter = obj as Pullenti.Ner.Geo.GeoReferent; if (ter != null) { if (ter.IsUnion) { return(UnionImageId); } if (ter.IsCity && ((ter.IsState || ter.IsRegion))) { return(CountryCityImageId); } if (ter.IsState) { return(CountryImageId); } if (ter.IsCity) { return(CityImageId); } if (ter.IsRegion && ter.Higher != null && ter.Higher.IsCity) { return(DistrictImageId); } if (ter.IsTerritory) { return(TerrImageId); } } return(RegionImageId); }
// Проверить, что все элементы находятся на более низком уровне, чем у аргумента internal bool IsAllItemsLessLevel(Pullenti.Ner.Referent upperParts, bool ignoreEquals) { if (upperParts is DecreeReferent) { return(true); } foreach (Pullenti.Ner.Slot s in Slots) { int l = this._getLevel(s.TypeName); if (l < 0) { continue; } if (upperParts.FindSlot(s.TypeName, null, true) != null) { if (upperParts.FindSlot(s.TypeName, s.Value, true) == null) { return(false); } continue; } foreach (Pullenti.Ner.Slot ss in upperParts.Slots) { int ll = this._getLevel(ss.TypeName); if (ll >= l) { return(false); } } } return(true); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { if (obj is Pullenti.Ner.Named.NamedEntityReferent) { return((obj as Pullenti.Ner.Named.NamedEntityReferent).Kind.ToString()); } return(ImageId); }
public override void MergeSlots(Pullenti.Ner.Referent obj, bool mergeStatistic = true) { base.MergeSlots(obj, mergeStatistic); if (Owner != null && LocalTyp != null) { LocalTyp = null; } }
public List <Pullenti.Ner.Referent> TryAttachByReferent(Pullenti.Ner.Referent referent, IntOntologyItem item = null, bool mustBeSingle = false) { if (referent == null) { return(null); } if (item == null) { item = referent.CreateOntologyItem(); } if (item == null) { return(null); } List <IntOntologyItem> li = this.TryAttachByItem(item); if (li == null) { return(null); } List <Pullenti.Ner.Referent> res = null; foreach (IntOntologyItem oi in li) { Pullenti.Ner.Referent r = oi.Referent ?? (oi.Tag as Pullenti.Ner.Referent); if (r != null) { if (referent.CanBeEquals(r, ReferentsEqualType.WithinOneText)) { if (res == null) { res = new List <Pullenti.Ner.Referent>(); } if (!res.Contains(r)) { res.Add(r); } } } } if (mustBeSingle) { if (res != null && res.Count > 1) { for (int i = 0; i < (res.Count - 1); i++) { for (int j = i + 1; j < res.Count; j++) { if (!res[i].CanBeEquals(res[j], ReferentsEqualType.ForMerging)) { return(null); } } } } } return(res); }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ) { UriReferent uri = obj as UriReferent; if (uri == null) { return(false); } return(string.Compare(Value, uri.Value, true) == 0); }
public override void MergeSlots(Pullenti.Ner.Referent obj, bool mergeStatistic = true) { double r1 = Rank + (obj as KeywordReferent).Rank; base.MergeSlots(obj, mergeStatistic); if (Slots.Count > 50) { } Rank = r1; }
public override string ToString(bool shortVariant, Pullenti.Morph.MorphLang lang = null, int lev = 0) { StringBuilder res = new StringBuilder(); GoodAttrType typ = Typ; string nam = this.GetStringValue(ATTR_NAME); if (!shortVariant) { if (typ != GoodAttrType.Undefined) { res.AppendFormat("{0}{1}: ", Pullenti.Ner.Goods.Internal.AttrMeta.GlobalMeta.TypAttr.ConvertInnerValueToOuterValue(typ.ToString(), lang), (nam == null ? "" : string.Format(" ({0})", nam.ToLower()))); } } string s = this.GetStringValue(ATTR_VALUE); if (s != null) { if (typ == GoodAttrType.Keyword || typ == GoodAttrType.Character) { res.Append(s.ToLower()); } else if (typ == GoodAttrType.Numeric) { List <string> vals = Values; List <string> units = Units; for (int i = 0; i < vals.Count; i++) { if (i > 0) { res.Append(" x "); } res.Append(vals[i]); if (vals.Count == units.Count) { res.Append(units[i].ToLower()); } else if (units.Count > 0) { res.Append(units[0].ToLower()); } } } else { res.Append(s); } } Pullenti.Ner.Referent re = Ref; if (re != null) { res.Append(re.ToString(shortVariant, lang, 0)); } return(res.ToString()); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { if (obj is Pullenti.Ner.Date.DateRangeReferent) { if ((obj as Pullenti.Ner.Date.DateRangeReferent).IsRelative) { return(DateRangeRelImageId); } } return(DateRangeImageId); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { if (obj is Pullenti.Ner.Definition.DefinitionReferent) { Pullenti.Ner.Definition.DefinitionKind ki = (obj as Pullenti.Ner.Definition.DefinitionReferent).Kind; if (ki == Pullenti.Ner.Definition.DefinitionKind.Definition) { return(ImageDefId); } } return(ImageAssId); }
public override bool CanBeEquals(Pullenti.Ner.Referent obj, Pullenti.Ner.Core.ReferentsEqualType typ) { DateReferent sd = obj as DateReferent; if (sd == null) { return(false); } if (sd.IsRelative != IsRelative) { return(false); } if (sd.Century != Century) { return(false); } if (sd.Year != Year) { return(false); } if (sd.Month != Month) { return(false); } if (sd.Day != Day) { return(false); } if (sd.Hour != Hour) { return(false); } if (sd.Minute != Minute) { return(false); } if (sd.Second != Second) { return(false); } if (sd.Pointer != Pointer) { return(false); } if (sd.DayOfWeek > 0 && DayOfWeek > 0) { if (sd.DayOfWeek != DayOfWeek) { return(false); } } return(true); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { if (obj is Pullenti.Ner.Transport.TransportReferent) { Pullenti.Ner.Transport.TransportKind ok = (obj as Pullenti.Ner.Transport.TransportReferent).Kind; if (ok != Pullenti.Ner.Transport.TransportKind.Undefined) { return(ok.ToString()); } } return(ImageId); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Decree.DecreePartReferent dpr = obj as Pullenti.Ner.Decree.DecreePartReferent; if (dpr != null) { if (dpr.Owner == null) { return(PartLocImageId); } } return(PartImageId); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Booklink.BookLinkRefReferent rr = obj as Pullenti.Ner.Booklink.BookLinkRefReferent; if (rr != null) { if (rr.Typ == Pullenti.Ner.Booklink.BookLinkRefType.Inline) { return(ImageIdInline); } } return(ImageId); }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Uri.UriReferent web = obj as Pullenti.Ner.Uri.UriReferent; if (web != null && web.Scheme == "mailto") { return(MailImageId); } else { return(UriImageId); } }
public override string GetImageId(Pullenti.Ner.Referent obj = null) { Pullenti.Ner.Money.MoneyReferent m = obj as Pullenti.Ner.Money.MoneyReferent; if (m != null) { if (m.AltValue != null || m.AltRest != null) { return(Image2Id); } } return(ImageId); }