/// <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); }
/// <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); }