Esempio n. 1
0
        /// <summary>
        /// Adds the term model to the lexicon
        /// </summary>
        /// <param name="termModel">The term model.</param>
        public void addTermModelToLexicon(termExploreModel termModel)
        {
            //var tlt = manager.lexiconContext.TermLemmas.Where<ITermLemma>(x => x.name.Equals(termModel.lemma.inputForm)&& x.type.Equals(termModel.lemma.gramSet.getPosType().toString()));
            ITermLemma tl = manager.lexiconContext.TermLemmas.Where(x => x.name.Equals(termModel.lemmaForm)).FirstOrDefault();

            //IQueryable<ITermLemma> tlt = manager.lexiconContext.TermLemmas.Where(x => x.name.Equals(termModel.lemma.inputForm));
            //List<ITermLemma> tlt_l = tlt.ToList();

            //ITermLemma tl = null;

            if (tl != null)
            {
                // nista nije uradjeno
            }
            else
            {
                tl      = manager.lexiconContext.TermLemmas.Create();
                tl.name = termModel.lemmaForm.or(termModel.inputForm);

                tl.gramSet = termModel.getGramSet();

                tl.type = termModel.getPosType().toStringSafe("TEMP");

                //if (termModel tl.type = termModel.gramSet.getPosType().toString();


                foreach (termExploreItem item in termModel.instances)
                {
                    ITermInstance ti = manager.lexiconContext.TermInstances.Where(x => x.name.Equals(item.inputForm)).FirstOrDefault();

                    if (ti == null)
                    {
                        ti = manager.lexiconContext.TermInstances.Create();

                        ti.name = item.inputForm;
                        //
                        ti.gramSet = item.getGramSet();                //.gramSet.GetAll();
                        ti.type    = item.getPosType().toStringSafe(); //.// .gramSet.getPosType().toString();
                        ti.lemma   = tl;
                    }
                    else
                    {
                        if (manager.settings.doResolveWordsInDebugMode)
                        {
                            output.AppendLine("Item [" + item.inputForm + "] of lemma [" + tl.name + "] was already defined.");
                            //foreach (var lm in ti.)
                            //    output.AppendLine("[" + item.inputForm + "]->lemma [" + tl.name + "] was already defined.");
                        }
                    }

                    manager.lexiconContext.TermInstances.Add(ti);
                }
            }

            manager.lexiconContext.SaveChanges();
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="termExploreModel"/> class.
        /// </summary>
        /// <param name="lemmaSource">The lemma source.</param>
        public termExploreModel(ITermLemma lemmaSource)
        {
            inputForm   = lemmaSource.name;
            modelSource = termExploreModelSource.fromLemma;
            lemma       = new termExploreItem(lemmaSource.name, lemmaSource.gramSet);

            foreach (TermInstance ins in lemmaSource.instances)
            {
                instances.Add(new termExploreItem(ins.name, ins.gramSet));
            }
        }
        /// <summary>
        /// Sets the item into cache
        /// </summary>
        /// <param name="item">The item.</param>
        public void Add(ILexiconItem item)
        {
            int retryIndex = 0;

            while (retryIndex < retryLimit)
            {
                try
                {
                    translationTextTableEntryEnum entry = translationTextTableEntryEnum.none;
                    if (item is ITermLemma)
                    {
                        ITermLemma lemma = (ITermLemma)item;
                        lemmas.AddUnique(item.name, lemma);
                        if (item.name.isNonDosChars())
                        {
                            lemmas.AddUnique(twins.GetWord(item.name, out entry), lemma);
                        }

                        foreach (TermInstance instance in lemma.instances)
                        {
                            instances.AddUnique(item.name, instance);
                            if (item.name.isNonDosChars())
                            {
                                instances.AddUnique(twins.GetWord(item.name, out entry), instance);
                            }
                        }
                    }
                    else if (item is ITermInstance)
                    {
                        instances.AddUnique(item.name, item as ITermInstance);
                        if (item.name.isNonDosChars())
                        {
                            instances.AddUnique(twins.GetWord(item.name, out entry), item as ITermInstance);
                        }
                    }
                    retryIndex = retryLimit + 1;
                }
                catch (Exception ex)
                {
                    aceLog.log("SemanticLexiconCache->Add(" + item.name + ") failed: " + ex.Message + "  Retries left[" + (retryLimit - retryIndex) + "]", null, true);
                    aceTerminalInput.askPressAnyKeyInTime("-- cooldown delay -- press any key to skip --", true, 3, false, 1);
                    retryIndex++;
                }
            }
        }
        /// <summary>
        /// Gets model from the Lexicon lemma entry -- loads from file, or if file do not exist - reconstructs it from the TermLema
        /// </summary>
        /// <param name="lemma">The lemma.</param>
        /// <returns></returns>
        public termExploreModel getTermModel(ITermLemma lemma, bool dontLoadFromFile = false)
        {
            termExploreModel output = new termExploreModel();

            if (!dontLoadFromFile)
            {
                string filepath = projectFolderStructure[lexiconConstructorProjectFolder.metadata].pathFor(lemma.name + "_" + lemma.type.ToString() + ".xml");
                if (File.Exists(filepath))
                {
                    output             = objectSerialization.loadObjectFromXML <termExploreModel>(filepath);
                    output.modelSource = termExploreModelSource.fromFile;
                    return(output);
                }
            }

            output = new termExploreModel(lemma);
            return(output);
        }
Esempio n. 5
0
        public static List <TermLemma> getAllRelated(this ITermLemma lemma)
        {
            List <TermLemma> re_synonyms = new List <TermLemma>();

            foreach (TermLemma rel in lemma.relatedTo)
            {
                if (!re_synonyms.Any(x => x.name == rel.name))
                {
                    re_synonyms.Add(rel);
                }
            }
            foreach (TermLemma rel in lemma.relatedFrom)
            {
                if (!re_synonyms.Any(x => x.name == rel.name))
                {
                    re_synonyms.Add(rel);
                }
            }
            return(re_synonyms);
        }
Esempio n. 6
0
        /// <summary>
        /// Expands the once.
        /// </summary>
        /// <param name="lexItem">The lex item to expand from</param>
        /// <param name="type">The type of expansion</param>
        /// <param name="exclude">Items not to expand to</param>
        /// <returns></returns>
        public static List <ILexiconItem> expandOnce(this ILexiconItem lexItem, lexiconItemExpandEnum type = lexiconItemExpandEnum.upBelowLateral, List <ILexiconItem> exclude = null)
        {
            string itemType            = lexItem.getItemTypeName();
            List <ILexiconItem> output = new List <ILexiconItem>();

            if (exclude == null)
            {
                exclude = new List <ILexiconItem>();
            }

            if (type.HasFlag(lexiconItemExpandEnum.includeStart))
            {
                output.Add(lexItem);
            }

            switch (itemType)
            {
            case nameof(semanticLexicon.Concept):

                IConcept concept = lexItem as IConcept;

                if (type.HasFlag(lexiconItemExpandEnum.below))
                {
                    output.AddRange(concept.lemmas);
                    output.AddRange(concept.hypoConcepts);
                }

                if (type.HasFlag(lexiconItemExpandEnum.lateral))
                {
                    output.AddRange(concept.relatedTo);
                    output.AddRange(concept.relatedFrom, true);
                }

                if (type.HasFlag(lexiconItemExpandEnum.conceptUp))
                {
                    output.AddUnique(concept.hyperConcept);
                }
                break;

            case nameof(TermLemma):

                ITermLemma lemma = lexItem as ITermLemma;

                if (lemma == null)
                {
                    return(output);
                }

                if (type.HasFlag(lexiconItemExpandEnum.below))
                {
                    if (lemma.instances != null)
                    {
                        output.AddRange(lemma.instances);
                    }
                }
                if (type.HasFlag(lexiconItemExpandEnum.lateral))
                {
                    if (lemma.relatedFrom != null)
                    {
                        output.AddRange(lemma.relatedFrom);
                    }
                    if (lemma.relatedTo != null)
                    {
                        output.AddRange(lemma.relatedTo);
                    }
                }

                if (type.HasFlag(lexiconItemExpandEnum.up))
                {
                    if (lemma.concepts != null)
                    {
                        output.AddRange(lemma.concepts);
                    }
                }

                if (type.HasFlag(lexiconItemExpandEnum.compounds))
                {
                    if (lemma.compounds != null)
                    {
                        output.AddRange(lemma.compounds);
                    }
                }

                break;

            case nameof(TermInstance):

                ITermInstance instance = lexItem as ITermInstance;

                if (type.HasFlag(lexiconItemExpandEnum.up))
                {
                    output.AddUnique(instance.lemma);
                }
                break;
            }

            output.RemoveAll(x => exclude.Contains(x));

            return(output);
        }
Esempio n. 7
0
 public TempInstance(string __name, ITermLemma __lemma)
 {
     Id    = md5.GetMd5Hash(__name);
     lemma = __lemma;
     name  = __name;
 }