/// <summary>
        /// Gets lemmas that are common between this and specified <c>tableB</c>
        /// </summary>
        /// <param name="tableB">The table b.</param>
        /// <param name="logger">The logger.</param>
        /// <returns></returns>
        public webLemmaTermPairCollection GetMatchingTerms(webLemmaTermTable tableB, ILogBuilder logger = null)
        {
            webLemmaTermPairCollection output = new webLemmaTermPairCollection();
            List <webLemmaTerm>        lemmas = GetList();

            foreach (webLemmaTerm lemma in lemmas)
            {
                webLemmaTerm lemmaB = tableB.ResolveLemmaForTerm(lemma.nominalForm);
                if (lemmaB != null)
                {
                    output.Add(lemma, lemmaB);
                }
            }
            return(output);
        }
Exemple #2
0
        /// <summary>
        /// Gets the lemmas, matching <c>queryTerms</c>, sorted by weight (in the <c>table</c>)
        /// </summary>
        /// <param name="table">webLemmaTermTable to be queried</param>
        /// <param name="queryTerms">The query terms, strings to query <c>table</c></param>
        /// <param name="takeTopN">Number of top ranked lemmas, by <see cref="termLemmaBase.weight"/>, descending.</param>
        /// <returns>List of matched webLemmaTerms</returns>
        public static List <webLemmaTerm> GetLemmasSorted(this webLemmaTermTable table, IEnumerable <String> queryTerms, Int32 takeTopN = -1)
        {
            // ------------ selection of key terms
            List <webLemmaTerm> terms = new List <webLemmaTerm>();

            foreach (String tkn in queryTerms)
            {
                var lm = table.ResolveLemmaForTerm(tkn);
                if (lm != null)
                {
                    terms.Add(lm);
                }
            }
            terms.Sort((x, y) => y.weight.CompareTo(x.weight));
            if (takeTopN == -1)
            {
                takeTopN = terms.Count;
            }
            var list = terms.Take(Math.Min(takeTopN, terms.Count)).ToList();

            return(list);
        }